【问题标题】:Custom IVR action in AsteriskAsterisk 中的自定义 IVR 操作
【发布时间】:2008-12-15 08:46:12
【问题描述】:

您能否指点我一个方向、示例代码或在线资源来完成以下操作:

要求: 我想编写一个简单的 IVR 菜单选项来运行脚本(Bash 或 Python)。例如,打电话给 Asterisk 机器并请求在另一个 Linux 机器上重新启动服务。 “其他 Linux 盒子”的详细信息将被硬编码到 IVR 菜单选项中,并且不需要作为 IVR 交互的一部分提供 - 只需在盒子 Y 上重新启动服务 X。我有点担心并且不确定如何使用密码(即使在版本中是硬编码的)。

背景: 我是一个 Asterisk 新手,从 AsteriskNow 发行版安装它,我还在学习这个产品。基本的 PBX 功能正在运行,并通过 FreePBX 进行管理。 Asterisk 不是我们开发工作的主要重点,而是工具箱中的一个工具。我们主要从事 .NET 工作,但拥有 Unix 技能。

如果可能的话,我不想花几天时间学习 Asterisk 的集成细节来完成工作......

【问题讨论】:

    标签: asterisk telephony ivr pbx


    【解决方案1】:

    Asterisk 并不总是等待用户输入。仅在 Background、WaitExten、Read 命令期间。如果你使用 Playback(),Asterisk 在播放音频文件时会忽略任何 DTMF。

    您可以使用 Read() 替换 Playback,但您必须将读取超时设置为非常低的值,否则在您使用 Read() 播放的每个音频文件之后都会出现静音。如果你使用 Read() 那么你必须检查用户输入的值来检查退出,像这样......

    代替

    exten => x,n,Playback(yourfile) 
    exten => x,n,somethingelse...
    

    你需要

    exten => x,n,Read(Exit,yourfile,1)
    exten => x,n,GotoIf($["${Exit}" = "0"]?0,1) 
    exten => x,n,somethingelse...
    

    【讨论】:

      【解决方案2】:

      Asterisk AGI 页面包含指向许多编程语言的应用程序的链接。 如果您主要使用 .NET,也许 nasterisk 或较旧的 MONO-TONE 会有所帮助。

      【讨论】:

        【解决方案3】:

        您会为此设置 Asterisk,还是/它会做其他事情,例如 PBX、IVR 等?

        如果您正在使用 Asterisk 做其他事情,那么设置一个隐藏的分机(IVR 菜单上没有公布的),一旦您连接就可以拨打该分机;在此扩展程序中,您可以检查来电显示并将其与您的号码进行比较,以便只有您可以执行脚本(您可以通过询问 PIN 号码来增加一些安全性,这样如果找不到,您可以更轻松地休息你的手机)。

        类似这样的:

        exten => 9999,1,GotoIf($["${CALLERID(num)}" = "yournumber"]?4)
        exten => 9999,2,Playback(sorry)
        exten => 9999,3,Hangup
        exten => 9999,4,Read(Pin,please-enter-pin,4)
        exten => 9999,5,AGI(your-script)

        在您的脚本中检查 Pin 变量,如果它有效,则执行,否则不执行任何操作退出。这样您就不必在拨号方案中硬编码密码,其他人可能会看到...如果它是受信任的机器,那么您可以在拨号方案中验证密码:

        exten => 9999,5,GotoIf($["Pin" != "1234"]?2)
        exten => 9999,6,AGI(your-script)

        【讨论】:

        • 感谢您的回答。我今天才看到它,但仍然适用。这是一个不错且简单的解决方案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多