T
T
Trianid Trianid2020-05-16 17:36:36
Asterisk
Trianid Trianid, 2020-05-16 17:36:36

How to make originate call correctly?

Hello. I'm trying to implement Web-callback according to the instructions publicly available on the Internet through a script and AMI:

<?php
  $strhost = "192.168.0.100"; # укажите IP – адрес вашего Asterisk. Либо localhost/127.0.0.1, если скрипт загружен на сервер Asterisk;
  $strport = "5038"; # AMI  - порт, как настроено в секции [general] файла manager.conf;
  $timeout = "10";
  $num = $_POST['phone']; # получаем номер абонента, который хочет получить callback; 
  $name = 'Callback - '.$_POST['name'].""; # формируем строку, которую будем выводить на дисплей оператору, который будет осуществлять коллбэк. Она будет состоять из двух параметров: 1 – callback, чтобы оператор понял, что это не входящая, а потенциально исходящая активность и 2 – имя абонента;
  $cid = "333"; # экстеншен оператора;
  $c="from-internal";
  $p="1";
  $errno=0 ;
  $errstr=0 ;
  $sconn = fsockopen($strhost, $strport, $errno, $errstr, $timeout) or die("Connection to $strhost:$strport failed");
  if (!$sconn) { 
    echo "$errstr ($errno)\n"; 
  } 
  else {
    echo 'OK';
    fputs($sconn, "Action: login\r\n");
    fputs($sconn, "Username: USER\r\n"); # укажите имя созданного пользователя в файле manager.conf вместо callback;
    fputs($sconn, "Secret: SECRET\r\n"); # укажите пароль созданного пользователя в файле manager.conf вместо [email protected];
    fputs($sconn, "Events: off\r\n\r\n");
    usleep(500);
    fputs($sconn, "Action: Originate\r\n");
    fputs($sconn, "Channel: SIP/$cid\r\n");
    fputs($sconn, "Callerid: $name\r\n");
    fputs($sconn, "Timeout: 15000\r\n");
    fputs($sconn, "Context: $c\r\n");
    fputs($sconn, "Exten: $num\r\n");
    fputs($sconn, "Priority: $p\r\n");
    fputs($sconn, "Async: yes\r\n\r\n" );
    fputs($sconn, "Action: Logoff\r\n\r\n");
    usleep (500);
    $wrets=fgets($sconn,128);
    fclose($sconn);
    exit; 
  }
?>


With this arrangement, everything works. BUT, on the operator's phone, Unknown is displayed as the client's web muzzle number, and Callback - Petya - information about the call and the client's name. But I wanted (more precisely, the operator wants) to call the client back from a smoke break, so I changed the code a little:

<?php
  $strhost = "192.168.0.100"; # укажите IP – адрес вашего Asterisk. Либо localhost/127.0.0.1, если скрипт загружен на сервер Asterisk;
  $strport = "5038"; # AMI  - порт, как настроено в секции [general] файла manager.conf;
  $timeout = "10";
  $num = $_POST['phone']; # получаем номер абонента, который хочет получить callback; 
  $name = 'Звонок с сайта - '.$_POST['name'].""; # формируем строку, которую будем выводить на дисплей оператору, который будет осуществлять коллбэк. Она будет состоять из двух параметров: 1 – callback, чтобы оператор понял, что это не входящая, а потенциально исходящая активность и 2 – имя абонента;
  $cid = "333"; # экстеншен оператора;
  $c="from-internal";
  $p="1";
  $namenum = "С САЙТА: {$_POST['name']}<{$_POST['phone']}>";
  $errno=0 ;
  $errstr=0 ;
  $sconn = fsockopen($strhost, $strport, $errno, $errstr, $timeout) or die("Connection to $strhost:$strport failed");
  if (!$sconn) { 
    echo "$errstr ($errno)\n"; 
  } 
  else {
    echo 'OK';
    fputs($sconn, "Action: login\r\n");
    fputs($sconn, "Username: USER\r\n"); # укажите имя созданного пользователя в файле manager.conf вместо callback;
    fputs($sconn, "Secret: SECRET\r\n"); # укажите пароль созданного пользователя в файле manager.conf вместо [email protected];
    fputs($sconn, "Events: off\r\n\r\n");
    usleep(500);
    fputs($sconn, "Action: Originate\r\n");
    fputs($sconn, "Channel: SIP/$cid\r\n");
    fputs($sconn, "Callerid: $namenum\r\n");
    fputs($sconn, "Timeout: 15000\r\n");
    fputs($sconn, "Context: $c\r\n");
    fputs($sconn, "Exten: $num\r\n");
    fputs($sconn, "Priority: $p\r\n");
    fputs($sconn, "Async: no\r\n\r\n" );
    fputs($sconn, "Action: Logoff\r\n\r\n");
    usleep (500);
    $wrets=fgets($sconn,128);
    fclose($sconn);
    exit; 
  }
?>


On the device, at the same time, the info is as it should be: 093939399 - FROM THE SITE - VASYA, the number in the call history is written correctly on the device, but when the handset is picked up, freepbx says that it is impossible to make a call. In the first case, it rings and connects perfectly, from the desired trunk according to the numbering, etc.

I entered the extension number 334 into the callback form, the 333rd rang, I picked up the phone and a call from 334 appears on the 334th screen !!!
That is, in the case of intercity, the trunk tries to leave the callerid number of the client along with the same destination number.
Tell me how to be. Thank you.

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question