FreeSwitch: esl inbound模式下外呼拨号
相信大家可能接到过一些电话,听上去不象是真人打过来的,比如:通知“您的信用卡到期了”,或者“您订的飞机航班取消了,请尽快改签或取消行程”,这种就是所谓的“自动外呼”系统,技术上讲,可以通过 esl inbound模式实现(注:对esl不熟悉的朋友,戳这里)
大概思路:
- 先把一些要外呼的任务计划,落地存储(比如:在某个时间点,应该去拨打哪些号码,放哪些语音)
- 搞个job去轮询,把这些任务定时取出来 (注:1-2这二个步骤,也可以用延迟队列来处理,或者db+延迟mq结合实现,远期任务存db,近期任务用job捞出来,扔到延迟MQ中)
- inblound模式连接到FS上,然后发命令给FreeSwitch
- 方法1:调用lua脚本,实现外呼
- 方法2:直接发originate命令
方法1的实现细节:(适合擅长lua的朋友,复杂逻辑可以放在lua中处理)
- lua 脚本示例:\FreeSWITCH\scripts\callout.lua
1 2 3 4 | session = freeswitch.Session( "user/1000" ); while session:ready() do session:execute( "bridge" , "user/1001" ); end |
这只是1个示例,调用这个脚本会先拨打1000分机号,等它接起来后,会再让1000呼分机1001 (以前有些诈骗电话,恶意扣费的大致就是这个原理 ,让你接起来后,自动转到1个境外电话,所以不要随便接陌生电话!!! 技术本身本无善恶,但使用技术的人或公司,是分好坏的!!!)
tips:lua脚本可以接收动态参数,实际应用中肯定不会象这个简单的示例,把号码写死。
- 然后在esl inbound的代码中调用:
1 | client.sendAsyncApiCommand( "luarun" , "callout.lua" ); |
方法2的实现细节:直接在java代码中,发起originate呼叫 (适合熟悉 java的朋友)
1 | client.sendAsyncApiCommand( "originate user/1000 &bridge(user/1001)" ) |
效果与lua相同
参考文档:
作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:
09.Open Source
, 21.Others
标签:
freeswitch
, inbound
【推荐】国内首个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 使用注意事项