我已经尝试使用加密狗从 Asterisk 拨出电话几个小时。但它显示以下错误
WARNING[22180]: channel.c:166 channel_request: [dongle0] Request to call on device which can not make call at this moment
[Apr ] WARNING[22180]: app_dial.c:2277 dial_exec_full: Unable to create channel of type 'dongle' (cause 44 - Requested channel not available)
拨号方案命令是:
exten => _X.,n,Dial(dongle/dongle0/+73432823232)
您能给我解决方案吗?
更新:在
asterisk*CLI>
我可以使用这个dongle cmd dongle0 ATD+434343434232;
拨打外线电话
错误表示您配置不正确或设备关闭/拔掉电源
有关更多信息,请启用调试或执行
dongle show devices
根据您的 dialplan 命令出站规则是第一个规则还是后续规则,您可能需要将
n
替换为 1
:
扩展 => _X.,n,拨号(加密狗/加密狗0/+73432823232)
所以它是这样写的:
exten => _X.,1,Dial(dongle/dongle0/+73432823232)
另外,您是否检查过您的设备是否处于“免费”状态?它应该看起来类似于这样:
asterisk*CLI> dongle show devices
ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number
dongle0 0 Free 20 0 0 A1 E1550 11.608.13.02.00 123456789012345 123456789012345 +4368112345678
对于编号为 +4368112345678 的加密狗,我有以下入站规则:
(chan_dongle似乎需要在入站规则中定义电话号码)
; inbound rule to call an internal sip-client with extension 6000
exten => +4368012345678,n,Dial(SIP/6000,20,r)
; inbound rule to call some external phone number
exten => +4368012345678,n,Dial(Dongle/dongle0/+436601234567)
对于出站,其工作原理类似:
; outbound rule for call over dongle if match for extension/phonenumber length of 11 (e.g. 06601234567)
exten => _XXXXXXXXXXX,1,Dial(Dongle/dongle0/${EXTEN},40)
; outbound rule for call over dongle if match for extension/phonenumber length of 12 (e.g. 069912345678)
exten => _XXXXXXXXXXXX,1,Dial(Dongle/dongle0/${EXTEN},40)
; outbound rule for call over dongle if match for any extension/phonenumber length
exten => _X.,1,Dial(Dongle/dongle0/${EXTEN},40)