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

AMI - Как узнать, что абонент снял трубку и разговор начался

Добавлено: 07 май 2017, 19:49
postgres
Сейчас пробую слушать event Hangup после Action originate
Звонок приходит на мой номер, я поднимаю и кладу трубку.
В формате JSON привожу здесь состав события. Оно появляется дважды - для моего номера и для вызываемого.

Код: Выделить всё

{"variables":{},"event":"Hangup","privilege":"call,all","channel":"PJSIP/119-00003de2","channelstate":"6","channelstatedesc":"Up","calleridnum":"119","calleridname":"device","connectedlinenum":"120","connectedlinename":"0000P8P=P0","language":"ru","accountcode":"","context":"from-internal","exten":"","priority":"1","uniqueid":"1494175166.22321","linkedid":"1494175165.22319","cause":"16","cause_txt":"Normal Clearing"}  

{"variables":{},"event":"Hangup","privilege":"call,all","channel":"Local/119@default-000000e9;1","channelstate":"6","channelstatedesc":"Up","calleridnum":"119","calleridname":"\u0002P>P=","connectedlinenum":"120","connectedlinename":"\u0000P8P=P0","language":"ru","accountcode":"","context":"ext-local","exten":"h","priority":"1","uniqueid":"1494175165.22319","linkedid":"1494175165.22319","cause":"16","cause_txt":"Normal Clearing"}
Если я беру трубку, жду когда ее поднимет абонент, абонент поднимает ее, то событие тоже всплывает 2 раза... Вот тут у меня непонимание, почему.
Привожу вывод

Код: Выделить всё

{variables":{},"event":"Hangup","privilege":"call,all","channel":"Local/119@default-000000ea;1","channelstate":"6","channelstatedesc":"Up","calleridnum":"119","calleridname":"0P=Q\u0002P>P=","connectedlinenum":"120","connectedlinename":"\u0000P8P=P0","language":"ru","accountcode":"","context":"ext-local","exten":"h","priority":"1","uniqueid":"1494175528.22323","linkedid":"1494175528.22323","cause":"16","cause_txt":"Normal Clearing"}  jssip.html:22:17

{"variables":{},"event":"Hangup","privilege":"call,all","channel":"Local/119@default-000000ea;2","channelstate":"6","channelstatedesc":"Up","calleridnum":"120","calleridname":"u0000P8P=P0","connectedlinenum":"119","connectedlinename":"010P=Q\u0002P>P=","language":"ru","accountcode":"","context":"default","exten":"h","priority":"1","uniqueid":"1494175528.22324","linkedid":"1494175528.22323","cause":"16","cause_txt":"Normal Clearing"}

ПОлучается, что я не могу определить, разговор начался или не начинался... А как узнать?

Re: AMI - Как узнать, что абонент снял трубку и разговор нач

Добавлено: 07 май 2017, 20:40
ded

Re: AMI - Как узнать, что абонент снял трубку и разговор нач

Добавлено: 08 май 2017, 09:16
postgres
Asterisk 13 - по ссылкам указывают на собятия, которых нет в документации. Link Unlink - что Это?
Документацию читаю здесь - https://wiki.asterisk.org/wiki/display/ ... AMI+Events

Re: AMI - Как узнать, что абонент снял трубку и разговор нач

Добавлено: 08 май 2017, 09:30
virus_net
Что значит "почему" ? Потому что у вызова два плеча (два канала) и они оба hangup`ятся.
"uniqueid":"1494175166.22321","linkedid":"1494175165.22319"
"uniqueid":"1494175165.22319","linkedid":"1494175165.22319"
"uniqueid":"1494175528.22323","linkedid":"1494175528.22323"
"uniqueid":"1494175528.22324","linkedid":"1494175528.22323"
Asterisk Standard Channel Variables

Нет, не получается. Узнать легко по:
Есть event newstate и в нем есть channelstate. channelstate = 6 это answer.

Ещё есть event bridge.