2017-08-25 98 views
0

我试图让我的星号运行一个脚本,每当某个电话(SIP电话)应答或拨打电话以及何时结束该呼叫。其目的是在与同一个房间内的电话打电话时自动将电视静音。星号运行脚本电话答案和拨打电话

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

有没有不同的方法呢?我也试过使用AMI,但我还没有找到一种方法来获得特定对等的状态(离线,在线,呼叫中,滞后)。

回答

0

比方说你有分机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; 

该呼叫分机作为本地/ 111后@ N从内部-极特殊的/不是SIP/111

您将拥有可以通过AMI解析的用户事件。或者,您可以根据您的意愿通过系统调用来替换它。

+0

我会在一分钟内给你一个尝试,谢谢!而对于传出的电话,我必须把它放在一个特殊的环境中,或者我该如何处理?由于我的默认上下文包含许多扩展,如果我可以包含它并在前后运行脚本,这将是最简单的,这有可能吗? – Flole

+0

您可以在回答(U)中输入拨号选项gosub,您可以在其中查看channle名称。但我担心这将会变得更复杂的员工。 – arheops

+0

是的,这将会更复杂,因为我必须将它添加到绝对每个拨号命令,这是几百。感谢您的帮助,我对您的解决方案做了一些小改动,现在它绝对有效! – Flole