Страница 1 из 1

PHP OrginateResponse

СообщениеДобавлено: 02 ноя 2015, 16:30
Scorpion15
Добрый день!
Написан скрипт для звонка, все хорошо работает:
Код: выделить все
$actionid=md5($sip.$cl.$ext.time());
fwrite("Action: Originate\r\n");
        fwrite("Channel: SIP/".$sip."\r\n");
        fwrite("Callerid: ".$cl.">\r\n");
        fwrite("Timeout: 15000\r\n");
        fwrite("Context: ".$context."\r\n");
        fwrite("Exten: ".$ext"\r\n");
        fwrite("Async: yes\r\n\r\n" );
        fwrite('ActionID: '.$actionid);
        fwrite("Action: Logoff\r\n\r\n");

Но не могу понять, как мне получить originateresponse по звонку, мне нужно вытащить от туда uniqueid?

Re: PHP OrginateResponse

СообщениеДобавлено: 03 ноя 2015, 02:18
zzuz
c Async: yes Вы ответа никакого не получите.

Re: PHP OrginateResponse

СообщениеДобавлено: 03 ноя 2015, 08:54
Scorpion15
Мне нужно сопоставить звонок и cdr_mysql, как тогда сделать что бы и async остался и отловить uniqueid?

Re: PHP OrginateResponse

СообщениеДобавлено: 03 ноя 2015, 09:08
virus_net
Вы оригинейтите вызов через AMI, в нем же можно отловить и UNIQID в Event Newchannel.

Re: PHP OrginateResponse

СообщениеДобавлено: 03 ноя 2015, 09:57
Scorpion15
Т.е. после originate, мне надо freed-ом читать event's пока не увижу event Newchannel с моим actionid?

Re: PHP OrginateResponse

СообщениеДобавлено: 04 ноя 2015, 09:45
virus_net
Зачем спрашивать то, что можно проверить самому ?
manager.conf писал(а):[general]
enabled = yes
webenabled = no

port = 5038
bindaddr = 127.0.0.1

.....

[AMIuser]
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255
secret = passw0rd
read = all
write = all

Код: выделить все
# asterisk -rx 'manager reload'

Код: выделить все
#telnet 127.0.0.1 5038
Action: login
Username: AMIuser
Secret: passw0rd
Events: on

Выполняем originate и смотрим в консоль.

Re: PHP OrginateResponse

СообщениеДобавлено: 05 ноя 2015, 10:13
Scorpion15
Через консоль та все понятно. Меня интересует как это через php отловить?

Re: PHP OrginateResponse

СообщениеДобавлено: 06 ноя 2015, 08:17
virus_net
Точно так же как и через консоль.
Подключиться к AMI и слушать + обрабатывать необходимые события скриптом PHP: socket_connect

Re: PHP OrginateResponse

СообщениеДобавлено: 06 ноя 2015, 08:37
Scorpion15
Ясно, спасибо! Я думал есть более простое решения получить id звонка, без прослушивания всех событий...

Re: PHP OrginateResponse

СообщениеДобавлено: 06 ноя 2015, 11:32
virus_net
Можно цеплять из вывода:
Код: выделить все
*CLI> core show channels concise

ID вызова в самом конце строки.
Соответственно AMI:
Код: выделить все
Action: command
Command: core show channels concise