高效拨打电话 - 自动外呼系统构建

现在世界疫情严重,大家都居家自我隔离,社区、公司、政府部门等需要收集大家疫情相关信息,如是否异地返回、是否经过高风险地区、身体是否发烧等等。

交警行业、客服行业、外卖行业、快递行业等,均出现了风口。

这就催生了很多自动外呼的需求。

你会接到如公安局派出所的调查疫情电话,甜美可爱的疫情机器人小姐姐、小哥哥等。

那么我们如何自己实现自动外呼系统?

整体的方案流程如下:运营商线路支撑--->软交换服务--> 对话服务系统-->asr、tts服务

目前最为流行的是基于freeswitch的软交换的电话系统,freeswitch这里就不多介绍,大家可以自己百度、谷歌。

一:对接运营商

电话要能呼出去,除了有freeswitch平台外,还需要能够连接到运营商中继。两种方式,1:freeswitch 平台sip对接第三方。 2:freeswitch 平台与E1等设备进行互通

sip对接非常简单,在freeswitch profile internal.xml 里将你们合作的第三方,sip对接的账号、密码、IP 端口等配置成功即可。 例如:

 
  1. <gateway name="sip__test">

  2. <param name="username" value="1021"/>

  3. <param name="password" value="你的密码2020"/>

  4. <param name="realm" value="ip:端口"/>

  5. <param name="register" value="true"/>

  6. </gateway>

freeswitch会自动检查,并5-20秒检查是否注册网关成功。 如果你的第三方sip对接不需要注册式, 删除掉<param name="register" value="true"/>即可。 这里你可以测试多个freeswitch直接的互相对接,互为gateway就更好理解所谓的gateway对接方式。

E1对接:一般采用讯时E1设备, E1的对接需要公司自己拉线路,运营商为你拉好电话线路后,并和E1连通, 在E1的管理页面,使用路由route方式将sip消息传输到freeswitch sip端口。fs默认端口5060(为了安全最好做修改)。双方设置ip白名单,从E1进入的sip不进行鉴权。 fs想外呼出去,需要在E1上注册fs分机,在freeswitch上配置dialplan,通过已经注册分机进行外呼出去。

2 软交换服务

软交换的代表为freeswitch,良好的性能和对各类音频和视频协议的支持,我们使用freeswitch来进行外呼命令触发,呼叫任务触发,同时基于freeswitch对接用户的接听,支持实时音频语音转写asr,并根据NLU模型,输出tts播报。

批量外呼系统

可以使用消息队列rabbitmq等,使用ESL连接到freeswitch,然后根据前端任务需求,将手机号等消息push进队列。 一端消费者消费消息,并根据一定的策略进行外呼。

freeswitch originate 呼叫命令

originate {ignore_early_media=true}sofia/gateway/sip__test/{phone} 机器人路由号码

这里强调一下, 如果不带ignore_early_media=true, 那么会在对方响铃时即为ack,将过早执行bridge,导致机器人语音话术不完整。

整个最终通过esl执行的是上述呼叫命令,因此我们需要前端进行任务解析(这里的前端指的是业务解析系统),然后接收消息方,批量执行fs命令即可。

我们可以选择java esl模块、或者golang的 esl等均可。按照一定的执行频率进行呼叫,这里请注意避免骚扰别人,收到大量投诉会被运营商封号等。

为了实现并发,可将originate替换成 bgapi originate ,实现呼叫的异步进行。

这里要注意细节,像普通的电话模拟线路,插上普通网关后,也可以进行对接freeswitch,但是有时候无法检测用户接听等操作,需要开启反极性信号。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值