前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FreeSwitch: esl inbound模式下外呼拨号

FreeSwitch: esl inbound模式下外呼拨号

作者头像
菩提树下的杨过
发布2024-01-14 10:18:12
2780
发布2024-01-14 10:18:12
举报

相信大家可能接到过一些电话,听上去不象是真人打过来的,比如:通知“您的信用卡到期了”,或者“您订的飞机航班取消了,请尽快改签或取消行程”,这种就是所谓的“自动外呼”系统,技术上讲,可以通过 esl inbound模式实现(注:对esl不熟悉的朋友,戳这里

大概思路:

  1. 先把一些要外呼的任务计划,落地存储(比如:在某个时间点,应该去拨打哪些号码,放哪些语音)
  2. 搞个job去轮询,把这些任务定时取出来 (注:1-2这二个步骤,也可以用延迟队列来处理,或者db+延迟mq结合实现,远期任务存db,近期任务用job捞出来,扔到延迟MQ中)
  3. inblound模式连接到FS上,然后发命令给FreeSwitch
    • 方法1:调用lua脚本,实现外呼
    • 方法2:直接发originate命令

方法1的实现细节:(适合擅长lua的朋友,复杂逻辑可以放在lua中处理)

  • lua 脚本示例:\FreeSWITCH\scripts\callout.lua
代码语言:javascript
复制
session = freeswitch.Session("user/1000");
session:setAutoHangup(false);
session:execute("bridge","user/1001");

  这只是1个示例,调用这个脚本会先拨打1000分机号,等它接起来后,会再让1000呼分机1001 (以前有些诈骗电话,恶意扣费的大致就是这个原理 ,让你接起来后,自动转到1个境外电话,所以不要随便接陌生电话!!! 技术本身本无善恶,但使用技术的人或公司,是分好坏的!!!)

  tips:lua脚本可以接收动态参数,实际应用中肯定不会象这个简单的示例,把号码写死。

  • 然后在esl inbound的代码中调用:
代码语言:javascript
复制
client.sendAsyncApiCommand("luarun", "callout.lua");

方法2的实现细节:直接在java代码中,发起originate呼叫 (适合熟悉 java的朋友)

代码语言:javascript
复制
client.sendAsyncApiCommand("originate user/1000 &bridge(user/1001)")

  效果与lua相同

参考文档:

https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Client-and-Developer-Interfaces/Lua-API-Reference/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档