3

救命!如何拨打一个号码并让 Asterisk 发起从分机 sipX 到 sipY 的呼叫?

sipX 和 sipY 都出现在我的拨号方案的 extensions.conf 中。

诀窍是我想在我的手机上拨打337,然后我的手机出画面,然后sipX呼叫sipY。

假设我希望能够在电话上按下 337,并通过另一部电话的免提电话播放声音,例如作为警报。


另一种考虑方法是,我该怎么做:

  1. 在我的手机上按 337
  2. 完成我的通话,即挂断原主叫方
  3. 即使队列中没有呼叫也运行宏
  4. 调用 sipY
  5. 在 sipY 上播放声音

当运行#2 动作(完成调用者的会话)并让其余的过程完成之后,我们可以使用类似于Asterisk 11 中的预拨号处理程序的东西吗?

4

3 回答 3

4

您可以使用Originate应用程序执行此操作。类似于以下内容:

[default]
exten => 337,1,NoOp()
same => n,Originate(SIP/Y,exten,default,originated,1)
same => n,Hangup()

exten => originated,1,NoOp()
same => n,Playback(tt-monkeys)
same => n,Hangup()

当然,不同之处在于 Originate 会阻止 pbx_thread 执行扩展 337,直到 SIP/Y 应答或以其他方式失败。话虽如此,SIP/Y 和扩展中的应用程序之间的实际调用发生在它自己的线程上,所以一旦知道 SIP/Y 的状态,337 就会被挂断。因此它与您正在寻找的内容非常接近,并且不涉及调用文件等外部机制。

于 2012-06-07T01:31:19.920 回答
1

一个想法是创建一个调用文件并使用 agi 脚本将其移动到 /var/spool/asterisk/outgoing/。

于 2012-06-06T12:48:01.677 回答
1

这是答案。您Answer作为第一部分放置,并以“挂断”结尾。这会处理“忙碌信号”。

没有 AGI。这行得通。

[from-internal]
exten => 3334,1,Goto(AngelusBell,startbell,1)


[AngelusBell]
exten => startbell,1,Answer
exten => startbell,n,System(asterisk -rx "channel originate Local/callviking@AngelusBell/n extension playbell@AngelusBell")
exten => startbell,n,Hangup

exten => callviking,1,Dial(SIP/Y,10,D(5))  ;calls my ATA to my paging box and plays 5 tone
exten => callviking,2,Hangup

exten => playbell,1,Answer
exten => playbell,2,Playback(custom/angelusbellWAV)
exten => playbell,3,Hangup
于 2014-12-16T17:59:25.440 回答