Socket üzerinden Vami’ye bağlantı için örnek PHP kodu

Socket üzerinden Vami’ye bağlantı için örnek PHP kodu aşağıdadır.

<?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);