我想转接一个电话。我可以定义分机、接听电话和使用拨号命令。但 t 不是我想要的。我不想立即接听电话。我宁愿等待第二个电话被接听。
怎么做?当我只使用 Dial(Sip/...) 而不应答时,双方完全沉默。
我已阅读(请参阅http://fonality.com/trixbox/forums/trixbox-forums/open-discussion/call-forward-without-answer-dialplan)可以通过禁用传真来解决它。我已经卸载了传真模块,但它并没有解决问题。在同一页面上,我读到我可以尝试类似http://www.voip-info.org/wiki/view/Asterisk%20auto-dial%20out的东西,但这看起来太高级了。
我有另一个想法。使用拨号(Sip/..., 60, M(a-macro))。但我不知道如何在宏中加入这两个调用。
任何的想法?
编辑:说清楚。当我只使用 Dial(例如 Dial(SIP/uri) 或 Dial(SIP/uri, 60, r))时,它会执行以下操作:
- 来电者:响了
- SIP 电话(或软件)响铃
- 呼叫由 SIP 电话应答
- SIP 电话:没有声音。
- 来电者:它停止响铃,没有声音
当我在 Dial(...) 命令之前添加命令 Playback(invalid) 时,它完全不同:
- 来电者:响了
- 来电者:接听电话并读取“无效”消息。
- 来电者:响铃(但电话已接听,来电者支付此响铃时间)
- SIP 电话(或软件)响铃
- 呼叫由 SIP 电话应答
- 通话已成功连接
似乎当且仅当在 Dial(...) 命令之前没有明确应答呼叫(例如通过 Playback(...) 或 Answer())时才会出现问题。因此,以下内容可能会有所帮助(类似 JQuery 的伪代码):
call_1.Dial(...).onAnswer(function(call_2){
call_1.Answer();
});
Asterisk 尝试了类似的东西,但是 Asterisk 的方式是错误的。
当然,在 Dial(...) 之前添加 Answer() 有效,但我不想在重定向呼叫被应答之前接听电话
我几乎通过使用拨号(SIP/...,超时,A(无效))解决了这个问题。现在,我必须使用另一种(零长度或几乎为零长度)声音。