2012-06-06 52 views
2

Salvete!我如何拨号并让Asterisk从分机sipX发起呼叫到sipY?如何拨号以从拨号方案内发起呼叫?

sipX和sipY都出现在我的dialplan的extensions.conf中。

诀窍是,我想在我的手机上拨打337,然后我的手机就会熄灭,然后sipX会打电话给sipY。

假设我希望能够在手机上推337,并通过另一部手机的扬声器播放声音,例如作为闹钟。


另一种方式来考虑它,我怎么可以这样做:

  1. 推337我的手机上
  2. 完成我的电话,就是挂断原调用
  3. 运行一个宏,即使没有队列中的呼叫
  4. 呼叫sipY
  5. 在sipY上播放声音

当运行#2动作(完成呼叫者的会话)并让后续过程的其余部分完成时,我们可以使用类似pre-dial handlers in Asterisk 11的东西吗?

回答

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/[email protected]/n extension [email protected]") 
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 
1

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

+0

这将是一个想法,它确实发生在我身上,但不是我所寻找的。 – bgmCoder

2

你可以用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() 

的差,当然,是,美源块的pbx_thread执行分机337直到SIP/Y答案或否则失败。也就是说,SIP/Y与扩展应用程序之间的实际调用发生在它自己的线程上,因此一旦知道了SIP/Y的状态,337就会挂起。因此它与您正在寻找的内容非常接近,并且不涉及调用文件等外部机制。

+0

嗯,我可以告诉sipY回答,因为它是一个扬声器。这是一个好主意。我从1.2升级到1.8,所以我无法尝试它,直到升级完成。 Originate不会在1.2中工作,是吗? 如果我想把它放在一个宏中,对吗? '[macro-callit]' 'exten => s,1,NoOp()' 'same => n,Originate(SIP/Y,exten,default,originated,1)' ... – bgmCoder

+0

Nope, Originate在1.6.2中加入。 您可能需要考虑使用GoSub而不是Macro,因为Macros已被弃用,而不赞成使用Gosubs(并不是说它不会工作,只是已知嵌套宏的限制导致难以调试错误) 。但是,您的宏语法看起来是正确的。 –

+0

我认为这是正确的答案。我仍在研究版本更改,所以我现在无法测试它,但这看起来不错。谢谢,乔丹先生。 – bgmCoder