2012-10-15 153 views
0

我一直在学习星号dialplan,我创建了一个非常简单的IVR菜单。我希望有人来验证我创建的是正确的。我想创建一个非常简单的IVR,具有2个菜单级别,退出选项。asterisk拨号计划上下文澄清

[incoming] 
exten => 123,1,Answer() 
exten => 123,n,Background(main-menu) 

exten => 1,1,Playback(digits/1) 
exten => 1,n,Goto(incoming,123,1) 

exten => 2,1,Playback(digits/2) 
exten => 2,n,Goto(incoming,123,1) 

exten => 9,1,Hangup() 

[main-menu] 
exten => 456,1,Answer() 
exten => 456,n,Background(main-menu) 

exten => 3,1,Playback(digits/3) 
exten => 3,n,Goto(incoming,456,1) 

exten => 4,1,Playback(digits/4) 
exten => 4,n,Goto(incoming,456,1) 

exten => 9,1,Hangup() 

我已经创建了上述

2点上下文的[进入] - 处理来电 [主菜单] - 一个菜单选项。

在传入的context.I扩展名为'123'时调用Answer()应用程序然后它执行背景(主菜单)。

if the user presses '1' it plays '1' and goes back to 123 priority '1' 

if the user presses '2' it plays '2' and goes back to 123 priority '1' 

if the user presses '9' it hangs up. 

同样在[主目录]

,我需要一个答案()在这方面也?

我刚刚开始了解拨号方案,目前我有点困惑。

所以根据你的建议,我更新的拨号方案看起来像这样。

[incoming] 
exten => 123,1,Answer() 
same => n(menuprompt),Background(main-menu) 

exten => 1,1,Playback(digits/1) 
same => n,Goto(menuprompt) 

exten => 2,1,Playback(digits/2) 
same => n,Goto(menuprompt) 

exten => 9,1,Hangup() 

[main-menu] 
exten => n(menuprompt),Background(main-menu) 

exten => 3,1,Playback(digits/3) 
same => n,Goto(menuprompt) 

exten => 4,1,Playback(digits/4) 
same => n,Goto(menuprompt) 

exten => 9,1,Hangup() 

感谢您的建议和解释。但我有一个问题。

1)“主菜单”传递给后台是声音文件apparently.In的情况下,[进入]我想,要这样说

"press 1 to play 1" 
"press 2 to play 2" 
"press 9 to hangup" 

,其中在[主的情况下, -menu]我想让它说些类似于

"press 3 to play 3" 
    "press 4 to play 4" 
    "press 9 to hangup" 

是否需要记录该文件?这是如何运作的?

在此先感谢。

回答

1

你接近,但并不完全。

思考语境物理盒。你不能穿过箱子里的墙壁。因此,“标签”和扩展名仅适用于该特定框/内容中的内容。

在你的拨号方案更新,你就需要专门转到上下文/扩展/优先得到一个上下文到另一个。拨号方案知道你是不是想成是指它是在已经运行。

至于消息的上下文中这样提示你在玩,是的,你需要记录那些。从用户的角度来看,MP3格式是最容易使用的,但是它给PBX带来了更多的负担。在这个多核千兆CPU的时代,我很少担心这一点。

如果这将是一个公开面向系统,考虑你的菜单录音是你的系统中最重要的组成部分,从客户POV。质量差,低容量,难以口音和这样的消息将“说服”你的客户,你的IVR是“工作量太大”来使用。

1

您的[传入]上下文完全符合您的想法。
在开始向客户发送声音之前,您只需要回答()该行一次。所以如果你以前没有做过,你只需要在[main-menu]中的Answer()。

这里是[incoming]的轻微重写,在可读性和防伪方面会稍微“更好”一些。

[incoming] 
exten => 123,1,Answer() 
same => n(menuprompt),Background(main-menu) 

exten => 1,1,Playback(digits/1) 
same => n,Goto(menuprompt) 

exten => 2,1,Playback(digits/2) 
same => n,Goto(menuprompt) 

exten => 9,1,Hangup() 

“相同”的确如它听起来的样子; “使用与上面一行相同的扩展名”。如果您正在做大型拨号方案,在IVR等不同部分之间进行一些剪贴调整,使用“相同”可以避免您在分机号码上发生错误。

“(menuprompt)”被称为标签,并且您可以在同一个上下文中转到标签,从而免除您必须计算“n”来计算要使用的优先级数字。

延伸阅读:https://wiki.asterisk.org/wiki/display/AST/Contexts,+Extensions,+and+Priorities