首页 > 其他分享 >freeswitch: esl inbound模式下外呼拨号

freeswitch: esl inbound模式下外呼拨号

时间:2024-01-13 17:22:43浏览次数:48  
标签:inbound user lua 下外 freeswitch esl 1000

相信大家可能接到过一些电话,听上去不象是真人打过来的,比如:通知“您的信用卡到期了”,或者“您订的飞机航班取消了,请尽快改签或取消行程”,这种就是所谓的“自动外呼”系统,技术上讲,可以通过 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
session = freeswitch.Session("user/1000");
session:setAutoHangup(false);
session:execute("bridge","user/1001");

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

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

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

  

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

client.sendAsyncApiCommand("originate user/1000 &bridge(user/1001)")

  效果与lua相同

 

参考文档:

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

标签:inbound,user,lua,下外,freeswitch,esl,1000
From: https://www.cnblogs.com/yjmyzz/p/17962619/how_to_originate_using_esl_inbound_mode_with_fre

相关文章

  • freeswitch+lua实现IVR(互动式语音应答)
    IVR(InteractiveVoiceResponse)交互式语言应答,是呼叫中心的1个经典应用场景,FreeSwitch官方有一个利用lua实现的简单示例,大致原理是利用lua脚本+TTS实现,记录一下:(环境:FreeSwitch 1.10.11+Windows10)步骤1:安装TTSFreeSwitch自带了1个TTS引擎(发音效果比较生硬,仅支持英文,不过......
  • freeswitch on debian docker
     概述freeswitch是一款简单好用的VOIP开源软交换平台。因为centos系统期限的原因,尝试在debian的docker上使用fs。环境dockerengine:Version24.0.6debiandocker:bullseye11.8freeswitch:v1.10.7Debian准备目前debian的最新版本是bookworm(12.4),然后是bullseye(11.8)和buste......
  • freeswitch如何解决sip信令的NAT问题
     概述freeswitch是一款简单好用的VOIP开源软交换平台。公网环境复杂多变,客户环境更是各种稀奇古怪的问题。fs在针对sip信令的NAT问题有针对性的参数设置。本文讨论的范围限于fs的公网地址正常没有在NAT后面的两种常见场景。其他更多更复杂的NAT场景暂不讨论。环境centos:C......
  • FreeSWITCH模块开发
    FreeSWITCH内核开发 1FreeSWITCH模块加载流程1.1main函数的主要工作FreeSWITCH在main函数中除了初始化异常处理程序,解析软交换启动参数(比如:-nc-nonat-conf-db等)之外,其核心就是调用switch_core_init_and_modload()函数初始化FreeSWITCH内核以及加载外围模块,具体加载哪些模......
  • FreeSWITCH的moh使用笔记
    操作系统:CentOS7.6_x64FreeSWITCH版本:1.10.9之前写过FreeSWITCH安装的文章,今天整理下moh使用过程中遇到的问题及解决方案,并提供moh音频下载途径。FreeSWITCH安装的文章可参考如下链接:docker构建FreeSWITCH编译环境及打包使用docker构建可动态启动的FreeSWITCH实例CentOS7环......
  • FreeSWITCH添加自定义endpoint之api及app开发
    操作系统:CentOS7.6_x64FreeSWITCH版本:1.10.9之前写过FreeSWITCH添加自定义endpoint的文章,今天整理下api及app开发的笔记。历史文章可参考如下链接:FreeSWITCH添加自定义endpointFreeSWITCH添加自定义endpoint之媒体交互一、常用函数介绍这里列举下开发过程中常用的函数。1......
  • FreeSWITCH添加h264编码及pcap视频提取
    操作系统:CentOS7.6_x64、Windows10_x64FreeSWITCH版本:1.10.9Python版本:3.9.2一、启用h264相关模块这里以mod_openh264为例进行演示。1、安装open_h264库获取open_h264源码:gitclonehttps://github.com/cisco/openh264.git若下载过慢,可从如下渠道获取:关注微信......
  • FreeSWITCH容器化问题之rtp端口占用
    操作系统:CentOS7.6_x64、debian11(bullseye,docker)FreeSWITCH版本:1.10.9Docker版本:23.0.6FreeSWITCH容器化带来部署便利的同时,也会遇到一些问题,比如今天要讨论的RTP端口占用问题(FreeSWITCH申请宿主机已占用的端口)。我将从以下三个方面进行展开:1)从源码层面分析FreeSWITCH......
  • freeswitch 新模块开发2
    1、随便找个地方,创建个目录mod_book2、在里面创建个mod_book.c文件,写入#include<switch.h>SWITCH_MODULE_LOAD_FUNCTION(mod_book_load);SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_book_shutdown);SWITCH_MODULE_DEFINITION(mod_book,mod_book_load,mod_book_shutdown,N......
  • freeswitch 新模块开发
    1、在Debian系统上成功编译并通过源码安装freeswitch2、在src/mod/application/目录下新建mod_helloworld目录。2、在src/mod/application/mod_helloworld/目录下创建mod_helloworld.c文件3、在文件中写入如下内容:#include<switch.h>SWITCH_MODULE_LOAD_FUNCTION......