我正在尝试通过以下方式学习 Asterisk权威指南。我正在尝试实现以下目标:
扩展
- 7001
- 7002
- 7003
..每个都有提示,所以我的 IP 电话手机可以显示忙音灯。
我似乎能够正常呼叫,但一旦我尝试让提示工作,我就无法再呼叫(因此,要么呼叫,要么提示工作,而不是两者!)。当我尝试呼叫时,我收到此消息:
[10 月 14 日 15:25:51] 通知 [3262][C-0000000a]:chan_sip.c:25545 handle_request_invite:从“7001”(192.168.8.129:5160) 到分机“7002”的呼叫被拒绝,因为在上下文“LocalSets”中未找到分机。
进一步的调试信息
ubuntupbx*CLI> dialplan show 7003@LocalSets
[上下文“LocalSets”由“pbx_config”创建]
“7003”=> 提示:SIP/7003 [pbx_config]-= 1 个上下文中有 1 个扩展(1 个优先级)。=-
ubuntupbx*CLI> dialplan show 7002@LocalSets
[上下文“LocalSets”由“pbx_config”创建]
“7002”=> 提示:SIP/7002 [pbx_config]-= 1 个上下文中有 1 个扩展(1 个优先级)。=-
我的配置如下:
配置文件
[general]
localnet=192.168.8.0/255.255.255.0
context=unauthenticated
allowguest=no
srvlookup=yes
callcounter=yes
limitonpeers=yes
[office-phone](!)
type=friend
context=LocalSets
busylevel=1
host=dynamic
dtmfmode=auto
subscribecontext=LocalSets
allowsubscribe=yes
disallow=all
allow=g722
allow=ulaw
allow=alaw
[7001](office-phone)
secret=123
[7002](office-phone)
secret=456
[7003](office-phone)
secret=789
扩展配置文件
[LocalSets]
exten => 7001,hint,SIP/7001
exten => 7002,hint,SIP/7002
exten => 7003,hint,SIP/7003
exten => 200,1,Answer()
same => n,Playback(hello-world)
same => n,Hangup()
exten => 600,1,Answer()
same => n,ConfBridge(1234)
如果我删除“提示”措辞并将其替换为“1”,则调用有效,但提示无效。
我尝试在调试模式下运行,但只看到相同的消息,并带有附加信息(IP 地址等)。我确信这是一个小错误,但我无法破解它。有人能帮忙吗?
我在 Ubuntu 16.04 Server LTS 上运行Asterisk 13.1.0~dfsg-1.1ubuntu4通过 apt-get 安装。
答案1
提示上下文必须是单独的上下文,这是您获得提示或两者的主要原因Dial
。因此,除了为语音呼叫提供常规扩展上下文外,您还应该创建一个单独的提示上下文,并且您应该在 中提及后者subscribecontext
。
喜欢
[local-ext]
exten => _7XXX,1,Dial(SIP/${EXTEN})
[hints]
exten => _X.,hint,Custom:DND${EXTEN}&SIP/${EXTEN}
管他呢。