我试图让我的Asterisk在某个电话(Sip Phone)接听或拨打电话以及结束该电话时运行脚本。这样做的目的是在同一房间内与电话通话时自动静音我的电视。
我尝试过使用系统命令,但是没有获得有关应答的手机的信息。由于我正在拨打多部电话,我无法区分电视机旁边的电话或完全不同的电话。我要拨打电话也有同样的问题。
对此有不同的处理方法吗?我也尝试过使用AMI,但我还没有找到一种方法来获取特定对等体的状态(离线,在线,在呼叫,滞后)。
答案 0 :(得分:0)
假设你有ext sip / 111
支持扩展
[from-internal-very-special]
exten => 111,1,UserEvent(TVRingStarted)
same => n,Set(CHANNEL(hangup_handler_push)=from-internal-very-special,ends,1)
same => n,Dial(SIP/111,,U(from-internal-very-special,answer,1))
exten =>answer,1,UserEvent(TVRingAnswer)
same => n,Set(GOSUB_RESULT=);we accept call
same => n,Return;continue
exten => ends,1,Noop(end of call)
same => n,UserEvent(TVRingEnds)
same => n,Return;
之后呼叫分机为Local / 111 @ from-internal-very-special / n而不是SIP / 111
您将拥有可以通过AMI解析的用户事件。或者您可以根据需要将其替换为系统调用。