2

有人可以指点我一个方向,示例代码或在线资源来完成以下操作:

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

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

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

4

3 回答 3

4

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...
于 2010-09-04T12:47:12.577 回答
2

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

于 2008-12-15T09:04:26.173 回答
2

你会为此设置 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)

于 2009-02-20T18:59:32.500 回答