FreeSWITCH 智能呼叫流程设计
文章目录
- 1. 智能呼叫流程
- 2. 细节处理
- 1. 呼叫字符串指定拨号计划
- 2. 外呼的拨号计划
- 3. 语音打断的支持
1. 智能呼叫流程
用户与机器人对话通常都是以文本的形式进行,但是借助 ASR 和 TTS 技术,以语音电话为载体的智能呼叫系统成为可能。智能呼叫系统涉及到多种不同类型的应用,以 FreeSWITCH 为交互核心的一种简要实现如下图所示,关键点为以下几个步骤:
- esl 客户端通过内连向 FreeSWITCH 实例下发 originate 命令,呼叫目标用户
- FreeSWITCH 进行呼叫动作,等待用户接通
- 呼叫后会话状态流转,FreeSWITCH 根据呼叫字符串确定这个 channel 上路由命中的拨号计划,执行拨号计划上配置的 socket APP 外连目标服务器
- esl 客户端接收 FreeSWITCH 外连连接后订阅该 channel 上的相应事件,并与 AI 机器人对话获取开场白
- 获得开场白文本后 esl 客户端下发命令,在用户 channel 上执行 play_and_detect_speech APP,实现开场白放音并开启 ASR 识别用户语音
- FreeSWITCH 与外部集成的 MRCP 服务器交互,使用其 TTS 和 ASR 功能
- 用户说话后,esl 客户端监听相应事件获取 ASR 的识别结果,然后使用识别到的文本与 AI 机器人进行对话,得到响应后从步骤5重新开始执行,直到用户挂机
2. 细节处理
1. 呼叫字符串指定拨号计划
呼叫外部用户的命令示例如下,该例子中通过拨号字符串指定了以下信息:
- 通过网关 10086 呼叫目标用户 1008611
- 在用户会话
CS_ROUTING
阶段使用 10008611 作为destination_number
去路由匹配 XML 拨号计划配置,进而确定在这个 channel 上的执行动作
originate {originate_timeout=10,origination_uuid=888888,origination_caller_id_number=1008611,origination_caller_id_name=1008611}sofia/gateway/10086/1008611 1008611 XML default
2. 外呼的拨号计划
呼叫用户的拨号计划配置示例如下,需注意以下几点:
- 通过 tts_engine 指定默认使用的 tts 引擎,该参数候选值为安装目录下 conf/mrcp_profiles 文件夹中的 XML 文件配置的 profile 名称
- 使用 tts_voice 指定默认音色
- 通过 play_and_detect_speech_close_asr 参数指定 play_and_detect_speech APP 执行完毕后自动关闭 ASR
<extension name="outbound"><condition field="destination_number" expression="^1008611"><action application="ring_ready"/><action application="answer"/><action application="set" data="tts_engine=unimrcp:unimrcp-mrcp2"/><action application="set" data="tts_voice=aixia"/><action application="set" data="play_and_detect_speech_close_asr=true"/><action application="socket" data="127.0.0.1:9000 async full"/></condition>
</extension>
3. 语音打断的支持
play_and_detect_speech APP 会先打开 ASR 识别用户语音然后才放音,放音时会被用户的语音流打断。如果要实现不可打断的特性,可通过将放音和 ASR 识别拆成两个步骤达到目的,具体处理如下:
- 与用户交互时不使用 play_and_detect_speech,而是在 channel 上直接调用 speak 等 APP 放音
- esl 监听到放音 APP 执行完毕,再下发 detect_speech APP 打开 ASR 识别用户语音
FreeSWITCH 智能呼叫流程设计相关推荐
- freeswitch呼叫流程分析
今天翻文档时发现之前整理的关于freeswitch呼叫相关的内容,写成博文分享出来也方便我以后查阅. 整体结构图 FreeswitchCore 模块加载过程 freeswitch主程序初始化时会从mo ...
- 【单片机项目】基于STM32的智能小车设计(一)流程设计
其实前几周就已经将小车调好并且也发了视频,但是每天忙于复习,也没有时间来对小车的流程设计.硬件设计.程序编写进行一个总结,正好周五可以休息一下,就分三个模块对这个智能小车项目进行一个总结. 这个小项目 ...
- 《机械制造业智能工厂规划设计》——2.1 智能工厂设计流程
2.1 智能工厂设计流程 智能工厂的设计流程如图2.1所示. 1.智能工厂设计的总输入是企业的发展战略 大家知道企业发展战略是对企业长远发展的全局性谋划.它是由企业的愿景.使命.政策环境.长期和短期目 ...
- 智能对话机器人设计全流程
智能对话机器人设计全流程(阿里小蜜) 8.1什么是对话机器人 对话机器人模拟人类对话聊天形式并提供服务的程序,对话机器人之所以被广泛应用,是因为名称中的对话和机器人分别和用户和服务提供方都提供了价值 ...
- 智能家居系列之智能家居平台设计
系列介绍 很久没有写文章了,近来断断续续地在思考一些东西.在去工作的地铁上,终于想好,决定分享自己在智能家居方面的思考.本系列文章计划分为7部分,不排除会对部分内容合并. 智能门锁 中控屏 智能音箱 ...
- 智能呼叫系统之客户互动中心
前面所介绍的呼叫系统技术主要是通过语音媒介为企业向客户提供必要的服务,提高企业在客户中的形象和地位.因此,呼叫系统在企业中的地位相对于生产.销售而言,一直处于辅助的性质.但是,随着时代的发展,企业在社 ...
- Cisco统一智能呼叫中心简介
最近正在作几张基于Cisco统一智能呼叫中心的报表,搜寻半天的资料都找不到,好不容易才搜到这篇介绍的文章,仅供参考! Cisco Unified Contact Center Hosted(即以前的C ...
- 工地智能安全帽方案/设计案列/APP
建筑工地是一个安全事故多发的场所.目前,工程建设规模不断扩大,工艺流程纷繁复杂,如何完善现场施工现场管理,控制事故发生频率,保障文明施工一直是施工企业.政府管理部门关注的焦点.尤其随着社会的不断进步和 ...
- 驰骋工作流程引擎案例-水质检测工作流程设计开发实现过程
2019独角兽企业重金招聘Python工程师标准>>> Technorati Tags: 开源驰骋工作流引擎, .NET工作流,表单设计器,ccflow, jflow, 案例,水质监 ...
最新文章
- Git related
- java 防止拷贝_[改善Java代码]避免对象的浅拷贝
- 关于Eclipse中复制粘贴一个项目后的操作
- android 过滤数组中的重复元素,Flutter List数组避免插入重复数据的实现
- P2567 [SCOI2010]幸运数字
- 《转》不要过打折的生活,当你发现这些你有了,说明你开始成熟了
- JS编程建议——52:建议使用splice删除数组
- 小程序日历插件的使用
- 盘点国内高投资低票房的电影巨制
- 搭建无人值守安装服务器
- 软件开发常用设计模式—单例模式总结(c++版)
- 51循迹小车舵机c语言程序,红外循迹小车c程序(舵机小车).doc
- 2021暗月web渗透测试攻防全栈红队视频教程网络安全程师培训全系列学习心得分享
- 定时获取AccessToken——萤石开放平台
- python mpi_MPI Python环境搭建
- Vue使用插件v-viewer预览单张图片
- python爬虫爬取《战狼Ⅱ》影评
- 覃卫平java,广西外国语学院与柳州市柳江区实验高中、柳城县中学签订优质生源基地协议并圆满完成挂牌仪式...
- 给中国学生的第三封信:成功…
- 退了IBM对日软件外包实训有些天了
热门文章
- mc服务器违反协议,Mojang开始向违反EULA的服务器发出通告
- iOS 火星坐标系 与 地球坐标系
- android wifi是否可用,Android判断网络是否可用、区分WiFi和数据、是否被安全软件拦截...
- python简单图形输出_基于 Python Matplotlib 模块的高质量图形输出
- java json asc排序_按ASCII码给json对象排序
- vim常用插件安装及使用
- [转]不管你学的是什么专业,你都应该多少懂些管理学的东西
- 爬虫图片mysql_爬取微博图片数据存到Mysql中遇到的各种坑\爬取微博图片\Mysql存储图片\微博爬虫...
- 通过命令行玩转Git,需要记住那些命令?
- python学后总结_学员 | 斥巨资学完数据分析后,给大家总结了7个小建议