FreeSWITCH 智能呼叫流程设计

这篇具有很好参考价值的文章主要介绍了FreeSWITCH 智能呼叫流程设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 智能呼叫流程

用户与机器人对话通常都是以文本的形式进行,但是借助 ASR 和 TTS 技术,以语音电话为载体的智能呼叫系统成为可能。智能呼叫系统涉及到多种不同类型的应用,以 FreeSWITCH 为交互核心的一种简要实现如下图所示,关键点为以下几个步骤:

  1. esl 客户端通过内连向 FreeSWITCH 实例下发 originate 命令,呼叫目标用户
  2. FreeSWITCH 进行呼叫动作,等待用户接通
  3. 呼叫后会话状态流转,FreeSWITCH 根据呼叫字符串确定这个 channel 上路由命中的拨号计划,执行拨号计划上配置的 socket APP 外连目标服务器
  4. esl 客户端接收 FreeSWITCH 外连连接后订阅该 channel 上的相应事件,并与 AI 机器人对话获取开场白
  5. 获得开场白文本后 esl 客户端下发命令,在用户 channel 上执行 play_and_detect_speech APP,实现开场白放音并开启 ASR 识别用户语音
  6. FreeSWITCH 与外部集成的 MRCP 服务器交互,使用其 TTS 和 ASR 功能
  7. 用户说话后,esl 客户端监听相应事件获取 ASR 的识别结果,然后使用识别到的文本与 AI 机器人进行对话,得到响应后从步骤5重新开始执行,直到用户挂机

FreeSWITCH 智能呼叫流程设计

2. 细节处理

1. 呼叫字符串指定拨号计划

呼叫外部用户的命令示例如下,该例子中通过拨号字符串指定了以下信息:

  1. 通过网关 10086 呼叫目标用户 1008611
  2. 在用户会话 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. 外呼的拨号计划

呼叫用户的拨号计划配置示例如下,需注意以下几点:

  1. 通过 tts_engine 指定默认使用的 tts 引擎,该参数候选值为安装目录下 conf/mrcp_profiles 文件夹中的 XML 文件配置的 profile 名称
  2. 使用 tts_voice 指定默认音色
  3. 通过 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 识别拆成两个步骤达到目的,具体处理如下:文章来源地址https://www.toymoban.com/news/detail-503250.html

  1. 与用户交互时不使用 play_and_detect_speech,而是在 channel 上直接调用 speak 等 APP 放音
  2. esl 监听到放音 APP 执行完毕,再下发 detect_speech APP 打开 ASR 识别用户语音

到了这里,关于FreeSWITCH 智能呼叫流程设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 架构篇13:架构设计流程-详细方案设计

    完成备选方案的设计和选择后,我们终于可以长出一口气,因为整个架构设计最难的一步已经完成了,但整体方案尚未完成,架构师还需继续努力。接下来我们需要再接再励,将最终确定的备选方案进行细化,使得备选方案变成一个可以落地的设计方案。所以今天我来讲讲架

    2024年01月23日
    浏览(55)
  • 交互设计师必须知道的五大交互设计流程

    交互设计师必须知道的五大交互设计流程 交互设计 又称互动设计,从用户角度来说, 交互设计 是一种如何让产品易用,有效而让人愉悦的技术,它致力于了解目标用户和他们的期望,了解用户在同产品交互时彼此的行为,了解“人”本身的心和行为特点。同时,还包括了解

    2024年02月03日
    浏览(41)
  • [设计] Doris血缘解析流程

    元数据是凌久中台重要功能模块,是数据治理的重要一环,元数据治理是一切数据治理的基础,主要分为元数据管理和表血缘管理;        元数据管理主要用来做数据地图、数据资产等;        血缘治理主要用来追查问题数据上游表来源,以及分析当前表的对下游标

    2023年04月09日
    浏览(39)
  • 流程控制翻转教学设计

    任务描述 本关任务:编写一个能在同一行输出小于n的非负整数的小程序。 相关知识 为了完成本关任务,你需要掌握: 1.range 2.遍历输出range产生的整数 range range 类型表示不可变的数字序列,通常用于在 for 循环中循环指定的次数。 range 参数必须为整数,如果省略 step 参数,

    2024年02月16日
    浏览(40)
  • 数字芯片设计流程

    首先介绍下模拟信号与数字信号的区别:模拟信号在时间和数值上是连续的,例如我们要录制一段声音,模拟信号是用一段连续变化的电磁波或电压信号来表示,自然界中的信号以模拟信号呈现。而数字信号在时间和数值上是离散的、间断的。模拟信号通过采样、量化、编码

    2024年02月07日
    浏览(39)
  • 【软件架构】03-架构设计流程

    确定了系统面临的主要复杂度问题,进而明确了设计方案的目标, 一般三到五个,防止思维狭隘 从需求、团队、技术、资源等综合情况出发,对主流、成熟的架构模式进行选择。 以常见的质量属性作为评估标准:性能、可用性、硬件成本、项目投入、复杂度、安全性、可扩

    2024年02月22日
    浏览(41)
  • AD20 原理图设计流程

    Altium Designer 20  的原理图设计大致可以分为 9 个步骤 : (1) 新建原理图 。这是原理图设计的第一步。 (2) 图纸设置 。图纸设置就是要设置图纸的大小,方向等信息。图纸设置要根据电路图的内容和标准化来进行。 (3) 加载元件库 。加载元件库就是添加原理图绘制所需

    2024年02月05日
    浏览(36)
  • camunda工作流实战项目(表单设计器+流程编辑器,零代码创建流程)

    基于ruoyi平台和camunda工作流开发而成,结合bpmn.js流程编辑器和vform表单设计器,实现常规流程零代码创建。 具备流程中心的能力,支持外部任务,可协调多个业务系统协同工作 具备SaaS平台的能力,支持多租户,各业务系统可作为租户,创建自己的流程,通过外部任务与自身

    2024年02月12日
    浏览(53)
  • springboot集成Camunda审核流程(二):Camunda Modeler设计器设置BPMN流程

    ​ Camunda Modeler -为流程设置器(建模工具),用来构建我们的流程模型。Camunda Modeler流程绘图工具,支持三种协议类型流程文件分别为:BPMN、DMN、Form。 ​ Camunda Modeler下载地址:https://camunda.com/download/modeler/ 下载完成之后解压之后,打开Camunda Modeler.exe 即可使用。 下面分别简

    2024年02月03日
    浏览(36)
  • 基于Cadence Allegro无盘设计操作流程

    无盘设计 1.因为过孔具有电容效应,无盘设计能最大限度保证阻抗连续性,从而减小反射与插损; 2.减缓走线压力,降低产品成本与风险; SetupConstraintsModelSpacing Models勾选Hole to line SetupUnused Pads Suppression 光绘钻孔层注明无盘设计:Non-functional pads on internal signal layer

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包