asterisk - Asterisk 中的自定义 IVR 操作

标签 asterisk telephony ivr pbx

有人可以给我指出一个方向、示例代码或在线资源来完成以下任务吗:

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

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

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

最佳答案

Asterisk 并不总是等待用户输入。仅在后台、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...

关于asterisk - Asterisk 中的自定义 IVR 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/367789/

相关文章:

android - 如何在 Android 8.0 Oreo 上以编程方式结束来电

c# - 蓝牙拨号与 32feet.net 和 c#

c# - 基于 UCMA 的 VoiceXML - <goto> 和 <log> 标签

ivr - 在应用程序模拟器中测试 VXML 应用程序

android - 如何在SipDroid项目中添加g729编解码器?

linux - 在没有硬件调制解调器的 Linux 上模拟 PSTN 或 GS​​M

Asterisk 播放声音文件到ConfBridge?

android - 如何为 Gingerbread 上运行的应用授予 MODIFY_PHONE_STATE 权限

asp.net-mvc - 向 Web 应用程序添加 IVR 和 PBX 功能

audio - 语音播放时,Asterisk Monitor()不起作用