я новичок в этом деле, поэтому не сочтите за глупость такой вопрос, как получить статус звонка. Суть в следующем, по нажатию на кнопке я совершаю вызов абоненту. В результате я должен получить статус этого вызова: к примеру вернуть: 1 если абонент не взял трубку 2 если абонент занят 3 если абонент недоступен 4 если абонент взял трубку 5 если звонок завершен
звонок у меня получается, делаю я это следующим образом:
$strhost = "111.111.111.111"; //ip адрес астериска
$strport = "111"; // порт
$errno = 0;
$errstr = 0;
$actionID = time();
$sconn = @fsockopen($strhost, $strport, $errno, $errstr) or die('0');
if (!$sconn) {
echo '0'; // нужен для того чтобы вывести сообщение на js что звонок не состоялся
exit;
} else {
$username = 'username'; // имя пользователя
$secret = 'secret'; // пароль
$timeout = 60000; // ожидание установки соединения
$channel = 'SIP/111'; // канал который будет принимать звонки
$callerid = '8911*******'; // уникальное имя звонка, то что будет видно на телефоне
$exten = '89111111111'; // номер клиента на который будем звонить
$context = 'from-internal'; // используемый контекст вызова
$priority = 1;
fputs($sconn, "Action: login\r\n");
fputs($sconn, "Username: $username\r\n");
fputs($sconn, "Secret: $secret\r\n");
fputs($sconn, "Events: off\r\n\r\n");
fputs($sconn, "Action: Originate\r\n");
fputs($sconn, "Channel: $channel\r\n");
fputs($sconn, "Timeout: $timeout\r\n");
fputs($sconn, "Callerid: $callerid\r\n");
fputs($sconn, "Exten: $exten\r\n");
fputs($sconn, "Context: $context\r\n");
fputs($sconn, "Priority: $priority\r\n");
fputs($sconn, "ActionID: $actionID\r\n");
fputs($sconn, "Async: yes\r\n\r\n" );
fputs($sconn, "Action: Logoff\r\n\r\n");
fclose($sconn);
echo '1'; // нужен для того чтобы вывести сообщение на js что звонок состоялся
exit;
}
Каким образом, мне получить статус звонка с этим $actionID и в какой момент это надо делать. У меня логика такая, что после того как я нажал на кнопку вызов, и мне вернуло echo '1'; я должен запускать каждые скажем 10 секунд функцию, которая будет проверять статус этого звонка, до тех пор пока мне не вернется что вызов завершен. Но как получить этот статус?
я думал что это можно сделать следующим образом, код который будет запускаться для получения статуса (часть кода):
fputs($sconn, "Action: Login\r\n");
fputs($sconn, "Username: $username\r\n");
fputs($sconn, "Secret: $secret\r\n");
fwrite($sconn, "Action: Status\r\n");
fputs($sconn, "Action: Logoff\r\n\r\n");
$wrets = '';
while (!feof($sconn)) {
$wrets .= fread($sconn, 8192).'\r\n';
}
и в переменной $wrets я уже выдерну статус и верну его, но к сожалению у меня ничего не выходит, либо я делаю обсалютно неправильно.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Часто бывает необходимо в разных конфигах писать название класса (с пространствами имен)Видел по разному пишут: например просто строкой...
Суть проблемы: как оформить запрос к БД для RedBean ! Две таблицы:
У меня возникла проблема, поставил я плагин данный, а он не отображает значение в письме, когда оформил заказ, как можно исправить?
ситуация следующая, есть запрос в БД который возвращает одну ячейкуВ самой БД он работает отлично, но вот в PHP ни как не могу его принять