微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Asterisk GoSub() 函数对我不起作用

如何解决Asterisk GoSub() 函数对我不起作用

我正在尝试在分机 101 和 102 之间拨打电话,但没有接通。我有以下 extensions.conf 文件

[general]
autofallthrough=no
priorityjumping=yes
static=yes
writeprotect=no
clearglobalvars=yes

[default]
exten => .,1,Hangup()

[inbound-schedule]
; #_#_# Phone Number #_#_#
exten => 7867086699,Answer
exten => 7867086699,n,NoOp(Office-ANI-${EXTEN})
exten => 7867086699,Set(CDR(userfield)=ib_${STrftIME(${EPOCH},%Y%m%d-%H%M%s)}_${EXTEN}_${CALLERID(num)})
exten => 7867086699,MixMonitor(ib_${STrftIME(${EPOCH},%Y%m%d-%H%M%s)}_${EXTEN}_${CALLERID(num)}.wav)
exten => 7867086699,Goto(schedule,${EXTEN},1)

exten => .,Hangup()

[schedule]
exten => _NXXNXXXXXX,NoOp(Time-of-Day-Routing)
exten => _NXXNXXXXXX,GotoIfTime(8:58-17:02,mon-fri,*,*?inbound,1)
exten => _NXXNXXXXXX,Goto(inbound-closed,1)

[inbound]
exten => _NXXNXXXXXX,NoOp(Office-Open)
exten => _NXXNXXXXXX,Set(NUMINVALID=1)
exten => _NXXNXXXXXX,Set(TIMEOUT(digit)=3)  ; max wait in-between digits seconds 
exten => _NXXNXXXXXX,Set(TIMEOUT(response)=3)  ; max wait for digit entry seconds
exten => _NXXNXXXXXX,Ringing
exten => _NXXNXXXXXX,n(menu),Wait(1)
exten => _NXXNXXXXXX,Background(custom/open-recording)
exten => _NXXNXXXXXX,Wait(3)
exten => _NXXNXXXXXX,Dial(SIP/101,18)
exten => _NXXNXXXXXX,Voicemail(100@default,su)

exten => 0,NoOp(Office-Open-Press-Zero)
exten => 0,su)

exten => 2,NoOp(Operator-Directory)
exten => 2,Directory(default,vm-operator,f)

exten => 200,NoOp(External-Voicemail-Dial-From-${CALLERID(num)})
exten => 200,Playback(vm-dialout)
exten => 200,Wait(1)
exten => 200,VoiceMailMain()

exten => _1XX,Macro(local-followme,${EXTEN})

exten => t,Playback(option-is-invalid)
exten => t,Hangup()

exten => i,Set(NUMINVALID=$[${NUMINVALID}+1]})
exten => i,Playback(option-is-invalid)
exten => i,Gotoif($["${NUMINVALID}" < "4"]?:10)
exten => i,Goto(_NXXNXXXXXX,menu)
exten => i,10,Playback(vm-goodbye)
exten => i,Hangup()

[inbound-closed]
exten => _NXXNXXXXXX,NoOp(Office-Closed)
exten => _NXXNXXXXXX,Set(TIMEOUT(digit)=3)
exten => _NXXNXXXXXX,Set(TIMEOUT(response)=3)
exten => _NXXNXXXXXX,Background(custom/closed-recording)
exten => _NXXNXXXXXX,Hangup()

[outbound]
exten => _NXXNXXXXXX,Dial(SIP/${EXTEN}@voip-outbound,120,trwW)
exten => _NXXNXXXXXX,Hangup()

exten => .,Playback(invalid)
exten => .,Hangup()

[internal]
; #_#_#_#_#_#_#_#_# INTERNAL MAIN CONTEXT #_#_#_#_#_#_#_#_#_#

; Extension to Extension Dialing
exten => _1XX,${EXTEN})

; Call Pickup
exten => _*971XX,SET(GLOBAL(PICKUPMARK)=${EXTEN:2})
exten => _*971XX,Pickup(${EXTEN:2}@PICKUPMARK)

; Voicemail Access
exten => 1000,VoiceMailMain(${CALLERID(num)}@default)
exten => 2000,VoiceMailMain()

; Outbound Dialing
exten => _NXXXXXX,Answer
exten => _NXXXXXX,%Y%m%d-%H%M%s)}_${EXTEN}_${CALLERID(num)})
exten => _NXXXXXX,MixMonitor(ob_${STrftIME(${EPOCH},%Y%m%d-%H%M%s)}_${EXTEN}_${CALLERID(num)}.wav)
exten => _NXXXXXX,Set(CALLERID(num)=7867086699)
exten => _NXXXXXX,Goto(outbound,310${EXTEN},1)

exten => _NXXNXXXXXX,Answer
exten => _NXXNXXXXXX,%Y%m%d-%H%M%s)}_${EXTEN}_${CALLERID(num)})
exten => _NXXNXXXXXX,%Y%m%d-%H%M%s)}_${EXTEN}_${CALLERID(num)}.wav)
exten => _NXXNXXXXXX,Set(CALLERID(num)=7867086699)
exten => _NXXNXXXXXX,1)

exten => _1NXXNXXXXXX,Answer
exten => _1NXXNXXXXXX,%Y%m%d-%H%M%s)}_${EXTEN}_${CALLERID(num)})
exten => _1NXXNXXXXXX,%Y%m%d-%H%M%s)}_${EXTEN}_${CALLERID(num)}.wav)
exten => _1NXXNXXXXXX,Set(CALLERID(num)=7867086699)
exten => _1NXXNXXXXXX,${EXTEN:1},1)

exten => t,Playback(invalid)
exten => t,Hangup()
exten => i,Playback(invalid)
exten => i,Hangup()
exten => .,Hangup()

[macro-local-followme]
exten => s,GotoIf($[${DB_EXISTS(followme/${ARG1})}=0]?nofollow)
exten => s,GotoIf($[${DB_RESULT:0:1}=0]?nofollow:follow)
exten => s,n(follow),Dial(SIP/${ARG1},20)
exten => s,Followme(${ARG1},n)                      ; Removed sa so no name recording
exten => s,Goto(s-${DIALSTATUS},1)
exten => s,n(nofollow),1)
exten => s-NOANSWER,Voicemail(${ARG1},u)            ; If unavailable,send to voicemail
exten => s-BUSY,u)                ; I changed b to u. If busy,send to voicemail w/ busy ann
exten => _s-.,Goto(s-NOANSWER,1)

[outbound-follow-me]
exten => _NXXNXXXXXX,NoOp(follow-me-activated-${EXTEN})
exten => _NXXNXXXXXX,Set(CALLERID(num)=${IF($[ ${LEN(${CALLERID(num)})} = 3]?7867086699:${CALLERID(num)})})
exten => _NXXNXXXXXX,NoOp(follow-me-activated-${EXTEN})
exten => _1NXXNXXXXXX,Set(CALLERID(num)=${IF($[ ${LEN(${CALLERID(num)})} = 3]?7867086699:${CALLERID(num)})})
exten => _1NXXNXXXXXX,1)

exten => _1XX,Dial(SIP/${EXTEN},t)
exten => _1XX,Hangup()

[vm-operator]
exten => o,NoOp(operator-zero-out)
exten => o,Goto(vm-zero-menu,s,1)

; Direct Extension Dialing
exten => _1XX,${EXTEN})

[vm-zero-menu]
exten => s,NoOp(operator-asterisk-out)
exten => s,Set(TIMEOUT(digit)=3)
exten => s,Set(TIMEOUT(response)=3)
exten => s,Background(custom/vm-operator-recording)
exten => s,Wait(3)
exten => s,su)

exten => 1,NoOp(Operator-Directory)
exten => 1,f)

exten => 2,su)
exten => 3,su)
exten => 4,su)
exten => 5,su)
exten => 6,su)
exten => 7,su)
exten => 8,su)
exten => 9,su)

; Direct Extension Dialing
exten => _1XX,Hangup()

我收到以下错误

Executing [102@internal:1] Gosub("SIP/101-00000002","local-followme,1(102)") in new stack
[2021-05-18 20:26:16] ERROR[19823][C-0000000a]: app_stack.c:593 gosub_exec: Attempt to reach a non-existent destination for Gosub: (Context:local-followme,Extension:s,Priority:1)
  == Spawn extension (internal,102,1) exited non-zero on 'SIP/101-00000002'
  == Using SIP RTP CoS mark 5

app_stack 显然已加载,这就是我在 CLI 上使用“module show like app_stack”命令的内容

app_stack.so - 拨号计划子程序(Gosub、Return 等 0 - 运行 - 核心

我将非常感谢任何指导。谢谢。

解决方法

确认您是否正在通过 Asterisk CLI 中的“dialplan reload”命令重新加载拨号计划模块,看起来调用中执行的是 GoSub 而不是宏。你可以通过执行“dialplan show”或“dialplan show context-name”来验证加载在Asterisk中的dialplan语句

请避免使用宏应用程序,您应该使用 GoSub 应用程序,宏被视为已弃用。

这是一个 Gosub 示例:

[internal]
exten => _1XX,1,GoSub(local-followme,s,1(${EXTEN}))

[local-followme]
exten => s,Verbose(GoSub executing)
same = n,Verbose(Argument 1: ${ARG1})
same = n,Return()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。