Phone 接听和拨出电话上的 Asterisk 运行 脚本

Asterisk run script on Phone Answer and Outgoing Call

我正在尝试让我的 Asterisk 运行 成为一个脚本,每当某个 phone (Sip Phone) 接听或打出电话以及它结束电话时。这样做的目的是在用同一房间的 phone 完成通话时自动将我的电视静音。

我试过使用系统命令,但没有获得有关 phone 回答的信息。由于我有多个 phone 铃声,我无法区分它是否确实是电视旁边的 phone 或完全不同的 phone。我在拨出电话时遇到同样的问题。

对此有不同的方法吗?我也尝试过使用 AMI,但我还没有找到一种方法来获取特定对等点的状态(离线、在线、通话中、滞后)。

假设您有分机 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 解析的用户事件。或者您可以根据需要将其替换为系统调用。