FreeSwitch+lua实现IVR(互动式语音应答)
IVR(Interactive Voice Response)交互式语言应答,是呼叫中心的1个经典应用场景,FreeSwitch官方有一个利用lua实现的简单示例,大致原理是利用lua脚本+TTS实现,记录一下:(环境:FreeSwitch 1.10.11 + Windows 10)
步骤1:安装TTS
FreeSwitch自带了1个TTS引擎(发音效果比较生硬,仅支持英文,不过用来学习足够了),找到安装目录下的 freeswitch/conf/modules.conf.xml
1 2 3 4 5 6 | <!-- ASR /TTS --> < load module="mod_flite"/> <!-- <load module="mod_pocketsphinx"/> --> <!-- <load module="mod_cepstral"/> --> <!-- <load module="mod_tts_commandline"/> --> <!-- <load module="mod_rss"/> --> |
找到ASR /TTS这一节,把mode_flite注释去掉,然后重启FreeSwitch 生效(如果没生效,检查是否有mod_flite.dll这个文件)
步骤2:配置路由
\FreeSWITCH\conf\dialplan\default\welcome.xml,在default目录 下,创建welcome.xml文件,内容如下:
1 2 3 4 5 6 7 | < include > < extension name="welcome_ivr"> < condition field="destination_number" expression="^2910$"> < action application="lua" data="welcome.lua"/> </ condition > </ extension > </ include > |
这段的意思是 如果被叫号码是2910,将由welcome.lua脚本来执行后续逻辑。
步骤3:编写交互逻辑lua脚本
\FreeSWITCH\scripts\welcome.lua (创建该文件),内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | -- 先应答,防止电话断掉 session:answer(); while (session:ready() == true ) do -- 防止自动挂断 session:setAutoHangup( false ); -- 设置TTS引擎参数 session:set_tts_params( "flite" , "kal" ); -- 播放欢迎语音 session:speak( "Hello. Welcome to the VoIp World!" ); -- 睡100ms session: sleep (100); -- 播放提示语音 session:speak( "please select an Action." ); session: sleep (100); -- 按1转到1001分机 session:speak( "to call 1001, press 1" ); session: sleep (100); -- 按2挂断 session:speak( "to hangup , press 2" ); session: sleep (2000); -- 等待按键(5秒超时) digits = session:getDigits(1, "" , 5000); if (digits == "1" ) then -- 按1,转到1001分机 session:execute( "bridge" , "user/1001" ); end if (digits == "2" ) then -- 按2,播放bye,bye语音,然后挂断 session:speak( "bye bye" ); session:hangup(); end end |
参考文档:
作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:
09.Open Source
, 21.Others
标签:
freeswitch
, IVR
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2019-01-13 pygame 笔记-10 摩擦力与屏幕环绕
2017-01-13 netty-socketio 示例代码
2016-01-13 bash/shell编程学习(2)
2013-01-13 MAC本遭遇ARP攻击的处理办法
2010-01-13 windows 2008 使用注意事项