freeswitch lua 回拨

简介: 需求回拨, 外呼

需求

回拨, 外呼

命令行

呼通主叫后, 转到拨号方案

originate user/1000 2000 XML default
复制代码

呼通主叫后, 播放XML IVR

originate {origination_caller_id_number=137XXXX4955,origination_caller_id_name=137XXXX4955}sofia/external/180XXXX9957@10.0.1.2:5060 &ivr(demo_ivr)
复制代码

呼通主叫后, 执行脚本, 不带参数

originate {origination_caller_id_number=137XXXX4955,origination_caller_id_name=137XXXX4955}sofia/external/180XXXX9957@10.0.1.202:9080 &lua(demo_ivr.lua)
复制代码

呼通主叫后, 执行脚本, 带参数

originate {origination_caller_id_number=137XXXX4955,origination_caller_id_name=137XXXX4955}sofia/external/180XXXX9957@10.0.1.202:9080 '&lua(dy_ivr.lua tier)'
复制代码

更进一步

默认originate是阻塞的, 使用 bgapi 实现非阻塞回拨.

例如

bgapi originate {origination_caller_id_number=13771114955,origination_caller_id_name=13771114955}sofia/external/18051799957@10.0.1.2:5060 &ivr(demo_ivr)
复制代码


应用

可以使用shell&fs_cli, esl, xml_rpc 外部控制FreeSWITCH进行外呼或回拨, 以实现批量外呼. 使用lua实现,主要用于熟悉originate命令。

调用示例:

lua callback.lua 1377XXX4955 180XXXX9957 2345677 360 /tmp/test.wav
复制代码

callback.lua

--
-- CALLBACK
--
-- Author: foxgoing@gmail.com / 8000hz.com
-- 
-- 功能描述:先拨打主叫,主叫接通后向主叫播放指定声音文件,然后拨打被叫,同时设置最大通话时长。
--           设置供其他应用使用的客户号。主被叫都为外线号码。
local caller_number = argv[1];     --主叫号码
local callee_number = argv[2];     --被叫号码
local customer_number = argv[3];   --主叫的平台账号
local maxtimes = argv[4];          --最大通话时长(秒)
local sounds = argv[5];            --声音文件路径
api = freeswitch.API();
local callstring = "bgapi originate {ringback="..sounds..",ignore_early_media=true}sofia/gateway/szcmcc/"..caller_number.." '&lua(call.lua "..maxtimes.." "..callee_number.." "..customer_number..")'";
freeswitch.consoleLog("notice", callstring.."\n");
api:executeString(callstring);
freeswitch.consoleLog("notice", "Leave callback Scripts\n");
复制代码


****call.lua

--
-- CALL , a part of callback
--
-- Author: foxgoing@gmail.com / 8000hz.com
local maxtimes = argv[1];          --最大通话时常秒
local callee_number = argv[2];     --被叫号码
local customer_number = argv[3];   --主叫的平台账号
session:execute("sched_hangup", "+"..maxtimes.." allotted_timeout");
session:execute("set", "customer_number="..customer_number);
session:execute("bridge", "sofia/gateway/szcmcc/"..callee_number);
freeswitch.consoleLog("notice", "Leave call.lua Scripts\n");
复制代码


****小贴士:

originate命令执行时,如果收到了183或200就会立即执行 ‘&’ 后面的语句,换句话说就是只要来了媒体就执行后面。

但人们的需求不一嘛,有些人需要只有接通主叫后才能执行’&’后面的语句。那么如果你就可以设置:

{ignore_early_media=true}
复制代码

如果要实现主被叫同时呼叫,但你的运营商只返回180,但你还是想要主被叫同时呼叫。那么你可以这样设置:

{return_ring_ready=true}
复制代码


reeswitch lua 回拨 主叫被叫号码


功能实现

1:主叫呼叫接入号,挂断主叫回busy给主叫

2:回拨 接通主叫号码及被叫号码


dialplan代码:


<action application=”lua” data=”test.lua ${destination_number}”/>



test.lua代码:

freeswitch.consoleLog("notice","test.lua debug\n")
local caller=session:getVariable("caller_id_number");
local callee=argv[1];
freeswitch.consoleLog("notice","get caller "..caller.."\n")
freeswitch.consoleLog("notice","get callee "..callee.."\n")
session:hangup("USER_BUSY");
api = freeswitch.API();
local callstring = "bgapi originate {ignore_early_media=true,origination_caller_id_number="..callee..",origination_caller_id_name="..callee.."}user/"..caller.." '&bridge(sofia/gateway/szcmcc/"..callee..")'";
freeswitch.consoleLog("notice", callstring.."\n");
api:executeString(callstring);
freeswitch.consoleLog("notice", "Leave callback Scripts\n");
复制代码

缺点

还不知道怎么实现等待几秒后再回拨。

呼叫接入号后会马上进行回拨操作。

相关文章
|
Web App开发 存储 人工智能
从入门到进阶-如何基于FreeSWITCH搭建呼叫中心平台
FreeSWITCH 是一个开源的电话交换平台。博主从事多年AI技术,外呼中心搭建,需要演示站或技术支持联系博主。官方给它的定义是–世界上第一个跨平台的、伸缩性极好的、免费的、多协议的电话软交换平台
2001 0
|
NoSQL API 语音技术
Freeswitch如何接收 RECORD_STOP 和 RECORD_START事件
Freeswitch如何接收 RECORD_STOP 和 RECORD_START事件
|
存储 前端开发 关系型数据库
Linux 技术架构:前端、后端与数据库的完美融合
【8月更文挑战第25天】本文深入剖析了Linux操作系统的技术架构,重点介绍了前端、后端及数据库三大核心组成部分。Linux前端技术不仅涵盖了图形用户界面(GUI),包括GNOME、KDE等桌面环境,还涉及HTML、CSS、JavaScript等Web前端技术及其相关框架。后端技术则聚焦于Python、Java等多种编程语言、Apache和Nginx等Web服务器以及MySQL、PostgreSQL等数据库管理系统。Linux数据库技术覆盖了关系型和非关系型数据库,如MySQL、MongoDB等,并提供了多种数据库管理工具。
464 0
|
Java Linux 应用服务中间件
docker编译部署freeswitch-1.10.10
docker编译部署freeswitch-1.10.10
1421 0
|
编解码
FreeSWITCH 编码协商
FreeSWITCH 编码协商
真正解决办法:编译freeswitch错误,You must install libavformat-dev to build mod_av
真正解决办法:编译freeswitch错误,You must install libavformat-dev to build mod_av
623 1
|
网络协议 Linux
freeswitch在多网卡服务器下如何配置
freeswitch在多网卡服务器下如何配置
Freeswitch的Proxy(代理转发)模式和Bypass(旁路)模式的正确配置
Freeswitch的Proxy(代理转发)模式和Bypass(旁路)模式的正确配置
816 0
|
机器学习/深度学习 算法 机器人
FreeSWITCH ASR 电话机器人 VAD 打断 ASR集成 全功能开源代码
最近很多人都对FreeSWITCH和ASR对接比较感谢兴趣,我之前已经做了一个商业模块(商业模块请点击这里http://www.ddrj.com/callcenter/asr.html),考虑到大部分人,只是研究一下,并不准确购买商业模块,特意做一个开源项目给大家提供一个参考。
1287 0