Sip 星号vs自由开关配置

Sip 星号vs自由开关配置,sip,voip,asterisk,freeswitch,sip-server,Sip,Voip,Asterisk,Freeswitch,Sip Server,下面是用lua为freeswitch编写的IVR。我没有复制整个IVR,只是文件开头的一部分 session:set_tts_parms("flite", "kar"); session:speak("Welcome to the VoIP World!"); while(session:ready() == true) do session:speak("to go to the next level, press 1"); s

下面是用lua为freeswitch编写的IVR。我没有复制整个IVR,只是文件开头的一部分

 session:set_tts_parms("flite", "kar");
    session:speak("Welcome to the VoIP World!");
    while(session:ready() == true) do
            session:speak("to go to the next level, press 1");
            session:speak("to hear my voice some more, press 2");
            session:speak("to go to the default IVR demo, press 5");
            session:speak("to exit, press 9");
            digits = session:getDigits(1, "", 3000);
            freeswitch.consoleLog("info", "Got dtmf: ".. digits .."\n");



if (digits == "1") then
                --next level stuff
                session:speak("you selected 1");
                while(session:ready() == true) do
                        session:speak("to hear me speak, press 1");
                        session:speak("to go back to the previous menu, press 2");
                        session:speak("to exit, press 9");
                    digits = session:getDigits(1, "", 3000);
                    freeswitch.consoleLog("info", "Got dtmf, level2: ".. digits .."\n");
                    if (digits == "1") then
                            session:speak("Some people will tell you that life is good");
                    elseif (digits == "2") then
                            break;
                    elseif (digits == "9") then
                            session:hangup();
                    end
            end
    elseif (digits == "2") then
            session:speak("What a Ride!");
我还使用拨号计划为asterisk服务器编写了一个IVR(只是一个不一定相同的示例),如下所示

[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()

现在,我的问题是,要在功能上模拟上面的lua代码,我是否需要一些粘合代码,或者IVR是否足够高。如果我在一个SIP服务器中编程一个IVR,并从SIP电话拨到该SIP服务器,它将播放菜单。我正在努力理解架构,似乎遗漏了一些部分。非常感谢您的帮助。

我看不出您需要两台具有相同功能的IVR服务器的原因。在您的星号拨号计划中,您可以制定一个规则,将呼叫转接到FreeSWITCH,然后您的星号用户将连接到那里。

您很接近,但还不完全接近

把上下文想象成物理盒子。你不能穿过盒子里的墙。因此,“标签”(如youn(menuprompt))和扩展只适用于特定框/上下文中的内容

在[incoming]上下文中,对“Goto(menuprompt)”的调用将引用[incoming]上下文中的“(menuprompt)”标签

在[主菜单]上下文中,对“Goto(Menumpt)”的调用将引用[主菜单]上下文中的“(Menumpt)”标签

“n”优先级是一种构造,表示“在此上下文中,此扩展的优先级比先前的优先级高一个”

因此,拨号计划最大的问题是,您有一个新的上下文[主菜单],但没有初始分机号码。那么你的

exten => n(menuprompt),Background(main-menu)
。。。是“死”代码。它不做任何事情,因为没有与之关联的扩展

因此,要修复代码,您需要执行以下操作

exten => 1,1,Playback(digits/1)
 same => n,Goto(main-menu,3,1)
。。。能够从[输入]跳到[主菜单]。要向后跳,您将执行相反的操作


进一步阅读:

我不想拥有两台服务器。我已经释放了服务器。我想迁移到asterisk。我正在尝试学习asterisk并在asterisk服务器上实现相同的功能。