Socket üzerinden Vami’ye bağlantı için örnek PHP kodu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <?php define("STANZA_BREAK", "\n\n"); // mesaj ayraci. TCP protokolunde bir mesajin bitip diger mesajin basladigini belirtmenin standardi yoktur fakat de-facto standart olarak \n\n kullanilmaktadir (HTTP'de \r\n\r\n kullanılır). VAMI bu karakterleri görünce komutunuzun bittigini anlar ve işlemeye başlar. VAMI cevapları da \n\n ile biter. $vami_port = 1234; // firmaniza ozel port. Verimor tarafindan tahsis edilecek $vami_username = "kullanici_adi"; $vami_password = "sifre"; // socket baglantisi kurabilmek için sunucunuzun internet ip adresini verimor'a bildirmis olmaniz gereklidir. $socket = stream_socket_client("tcp://vami.verimor.com.tr:$vami_port",$errno,$errstr, 5); if (!$socket){ echo "$errstr ($errno)\n"; exit(); } // Herhangi bir islemden once login olmalisiniz. // Ayni socket ile birden fazla islem yaparken bir kez login olmaniz yeterli $params = array( "command" => "login", "username" => $vami_username, "password" => $vami_password, "crm_id" => microtime(), // herhangi bir unique string ); fwrite($socket, json_encode($params).STANZA_BREAK); $result = fread($socket, 4096); echo $result; $result = json_decode($result); if($result->status != "success"){ echo "LOGIN BASARISIZ: $result->status: $result->message\n"; fclose($socket); exit(); } // Cagri baslatma islemi. $customer_num = "905321234567"; // aranacak telefon numarasi $pbx_num = "908501234567"; // santralinizin harici numarasi $internal_num = "3001"; // gorusmeyi yapacak dahili hattin numarasi $params = array( "command" => "originate", "customer_num" => $customer_num, "pbx_num" => $pbx_num, "internal_num" => $internal_num, "ring_timeout" => "30", "crm_id" => microtime(), "wait_response" => "1", "originate_order" => "if", // if: once dahili calsin, sonra karsi taraf aransin. of: tersi. "manual_answer" => "0", // 1(default): dahili telefon calmadan acilip cagri baslasin. 0: dahili telefon calip, acilmayi beklesin. "trunk" => "verimor" // surekli verimor olmali ); fwrite($socket, json_encode($params).STANZA_BREAK); $result = fread($socket, 4096); echo $result; $result = json_decode($result); if($result->status != "success"){ echo "ORIGINATE BASARISIZ: $result->status: $result->message\n"; fclose($socket); exit(); } // baslatilan cagrinin uzerinde islemler (sesi kis, cagriyi kapat, ses kaydini getir vb.) yapmak icin unique_id'yi saklamaniz gereklidir $unique_id = $result->unique_id; echo "BASLATILAN CAGRININ UNIQUE_ID'SI: $unique_id\n"; fclose($socket); |