【问题标题】:asterisk vs freeswitch configuration星号 vs freeswitch 配置
【发布时间】:2012-10-19 08:08:21
【问题描述】:

下面是一个用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!");

我还使用拨号计划为星号服务器编写了一个 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 服务器,它会播放菜单。我正在尝试了解架构,但似乎缺少某些部分。感谢您提供任何帮助。

【问题讨论】:

    标签: sip voip asterisk freeswitch sip-server


    【解决方案1】:

    你已经接近了,但并不完全。

    将上下文视为物理盒子。你不能穿过盒子里的墙壁。因此,“标签”(例如 n(menuprompt))和扩展名仅适用于该特定框/上下文中的内容。

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

    在 [main-menu] 上下文中,您对“Goto(menuprompt)”的调用将引用 [main-menu] 上下文中的“(menuprompt)”标签。

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

    所以你的拨号方案最大的问题是你有一个新的上下文 [主菜单] 但没有初始分机号码。所以你的

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

    ... 是“死”代码。它没有做任何事情,因为没有与之关联的扩展。

    因此,要修复您的代码,您需要执行类似的操作

    exten => 1,1,Playback(digits/1)
     same => n,Goto(main-menu,3,1)
    

    ... 能够从 [incoming] 跳转到 [main-menu]。要跳回来,你会做相反的事情。

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

    【讨论】:

      【解决方案2】:

      我看不出为什么您需要两台具有相同功能的 IVR 服务器。在您的 Asterisk 拨号方案中,您可以制定规则将呼叫转发到 FreeSWITCH,然后您的 Asterisk 用户将被连接到那里。

      【讨论】:

      • 我不想拥有两台服务器。我已经 freeswitch 服务器。我想迁移到星号。我正在尝试学习星号并在星号服务器上实现相同的功能。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多