基于freeswitch的智能外呼1-自动外呼系统构建

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

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

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

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

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

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

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

一:对接运营商

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

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

 <gateway name="sip__test">
      <param name="username" value="1021"/>
      <param name="password" value="你的密码2020"/>
      <param name="realm" value="ip:端口"/>
      <param name="register" value="true"/>
   </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,但是有时候无法检测用户接听等操作,需要开启反极性信号。

3对话系统服务

基于自然语言处理的NLU对话系统多轮次问答,通过意图识别,命名实体识别,我们将用户的话语进行意图分析,并根据设定的流程图进行场景触发。

4 asr、tts服务

我们将asr,和tts服务对接到电话系统中,根据NLU的意图理解推荐用户话术,在这之前我们需要做的就是识别用户的语音,转化成系统需要的文本,并根据对话系统推荐的话术使用tts给用户进行语音播报。

此专栏将完整介绍如何实现,自研究智能外呼的全过程,包括开源ASR训练到可用,到NLU意图识别、命名实体提取,到可配置流程话术,到asr和tts如何与freeswitch对接。

我将持续更新

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值