FreeSWITCH 呼入系统的简要设计

news2024/12/22 16:47:21

文章目录

  • 1. 呼入处理方案
  • 2. 细节处理
      • 1. a-leg 的拨号计划
      • 2. originate 呼叫坐席

1. 呼入处理方案

使用 FreeSWICTH 的 ESL 模块,一个简单的呼入处理时序如下图所示,关键步骤做如下补充:

  1. 用户呼入到 FreeSWITCH 实例,a-leg 创建
  2. FreeSWITCH 根据用户呼叫的号码路由匹配拨号计划,该拨号计划最好配置上 ESL 外连的 socket APP
  3. esl 外连目标 esl 客户端,esl 客户端接收连接后需订阅 a-leg 上的相应事件
  4. esl 客户端根据业务规则分配一个示闲的坐席接待用户
  5. esl 客户端获取目标坐席的 SIP 账户,向 FreeSWITCH 下发 originate 命令,呼叫目标坐席。这里之所以不在 a-leg 的 outbound 连接上直接执行 bridge APP 桥接坐席,是因为坐席可能暂时忙其他事情直接挂断电话,这样用户会感知到对方挂断但自己这一端的电话还没有挂,影响体验
  6. 对于坐席可以采用 inbound 模式监听其应答状态,如无特殊需求一般不需要为坐席单独配置拨号计划 outbound 外连
    1. 坐席的呼叫命令中可以带上超时参数,如果坐席超时未接听则自动挂断,从步骤4开始重新执行,继续分配另外一个坐席。
    2. 如果目标坐席接了电话,则 b-leg 接通,此时在用户来电的 a-leg 上执行 answer APP 通知对方已接通即可
  7. a/b leg 都已经接通,接下来使用 uuid_bridge API 桥接两条腿就可以通话了

在这里插入图片描述

2. 细节处理

1. a-leg 的拨号计划

用户呼入的拨号计划示例如下,当用户呼入到 FreeSWITCH 时可以先执行 ring_ready APP 回一个 180 给到用户终端,然后直接执行 esl 外连将 a-leg 交给目标服务器控制,由业务系统决定在 a-leg 上的响应行为

<extension name="inbound">
    <condition field="destination_number" expression="^9000(\d+)$">
        <action application="ring_ready"/>
        <action application="socket" data="127.0.0.1:9000 async full"/>
    </condition>
</extension>

2. originate 呼叫坐席

呼叫坐席的命令示例如下,需要注意的有以下几点:

  1. 通过 originate_timeout 设置呼叫坐席的超时秒数,坐席超时未接听则自动挂断 b-leg,
  2. 通过 origination_uuid 指定 b-leg 的会话 id,会话 id 可以自行生成保存,方便之后执行 uuid_bridge
  3. 在 b-leg 接通后执行 park 程序把坐席端的电话保持住,否则呼叫可能会超时自动挂断
originate {originate_timeout=10,origination_uuid=888888,origination_caller_id_number=1008611,origination_caller_id_name=1008611}user/1018 &park()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DC真实数据都有哪些?Filecoin为DC数据存储的解决方案又是什么?

对于生活在数字时代的我们而言&#xff0c;数据或许就和平日呼吸的空气一样&#xff0c;已经不需要我们再去思考其概念。我们的日常生活中无时无刻都有数据的身影&#xff0c;日常的购物消费、出行、学习、记录&#xff0c;当我们每天生活有数字化加持的小区里&#xff0c;工作…

网上图书资料管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;Internet带给我们的不仅是无穷的信息&#xff0c;更为我们带来了很多的便利。在这个科技高速发展的时代&#xff0c;网络应用十分广泛&#xff0c;所以许多人愿意通过网络来使他们的生活变得更加的方便。网上图书资料管理系统的出现…

Spring Cloud(微服务)学习篇(五)

Spring Cloud(微服务)学习篇(五) 1 nacos配置文件的读取 1.1 访问localhost:8848/index.html并输入账户密码后进入nacos界面并点击配置列表 1.2 点击右侧的号 1.3 点击加号后,进入新建配置界面,并做好如下配置 1.4 往下翻动,点击发布按钮 1.5 发布成功后的界面 1.6 在pom.xml…

ChatGPT解答:PYQT5 的mwindow源码文件里面写了很多的函数方法,随着时间的推移越来越多,代码行数太多,影响了性能,如何解决

ChatGPT解答&#xff1a; PYQT5 的mwindow源码文件里面写了很多的函数方法&#xff0c;随着时间的推移越来越多&#xff0c;代码行数太多&#xff0c;影响了性能&#xff0c;如何解决 以下为可复制的内容与实例&#xff1a; PYQT5 的mwindow源码文件里面写了很多的函数方法&a…

第一道pwn栈溢出题

代码和解题思路来自启明星辰的《ctf安全竞赛入门》&#xff0c;当然还有好多热心的师傅们的指导。1.代码&#xff1a;#include "stdio.h" void shell() {system("/bin/sh"); } void vuln() {printf("Please input your name:\n");char s[8];gets…

实现pdf文件预览

前言 工作上接到的一个任务&#xff0c;实现pdf的在线预览&#xff0c;其实uniapp中已经有对应的api&#xff1a;uni.openDocument(OBJECT)&#xff08;新开页面打开文档&#xff0c;支持格式&#xff1a;doc, xls, ppt, pdf, docx, xlsx, pptx。&#xff09;**实现了相关功能…

冬奥会信息管理系统

摘 要伴随着社会以及科学技术的发展&#xff0c;互联网已经渗透在人们的身边&#xff0c;网络慢慢的变成了人们的生活必不可少的一部分&#xff0c;紧接着网络飞速的发展&#xff0c;系统管理这一名词已不陌生&#xff0c;越来越多的体育馆等机构都会定制一款属于自己个性化的管…

【小程序】盒模型笔记

边框样式参数border中solid是实线&#xff0c;dotted是点状&#xff0c;dashed是虚线。还有其它一些&#xff0c;double(双边框)&#xff0c;groove,ridge,inset,outset等3D边框。可单独拎出来定义边框宽度&#xff0c;border-width由前篇可知&#xff0c;padding\margin上下左…

Python 元类编程实现一个简单的 ORM

概述 什么是ORM?    ORM全称“Object Relational Mapping”&#xff0c;即对象-关系映射&#xff0c;就是把关系数据库的一行映射为一个对象&#xff0c;也就是一个类对应一个表&#xff0c;这样&#xff0c;写代码更简单&#xff0c;不用直接操作SQL语句。 现在我们就要实…

白盒测试重点复习内容

白盒测试白盒测试之逻辑覆盖法逻辑覆盖用例设计方法1.语句覆盖2.判定覆盖(分支覆盖)3.条件覆盖4.判定条件覆盖5.条件组合覆盖6.路径覆盖白盒测试之基本路径测试法基本路径测试方法的步骤1.根据程序流程图画控制流图2.计算圈复杂度3.导出测试用例4.准备测试用例5.例题白盒测试总…

简单介绍编程进制

十进制 十进制的位权为 10&#xff0c;比如十进制的 123&#xff0c;123 1 * 10 ^ 2 2 * 10 ^ 1 3 * 10 ^ 0。 二进制 二进制的位权为 2&#xff0c;比如十进制的 4&#xff0c;二进制为 100&#xff0c;4 1 * 2 ^ 2 0 * 2 ^ 1 0 *2 ^ 0。 Java7 之前&#xff0c;不支…

【PyTorch】教程:torch.nn.Hardshrink

torch.nn.Hardshrink CLASS torch.nn.Hardshrink(lambd0.5) 参数 lambd ([float]) – the λ\lambdaλ 默认为 0.5 定义 HardShrink(x){x,if x>λx,if x<−λ0,otherwise \text{HardShrink}(x) \begin{cases} x, & \text{ if } x > \lambda \\ x, & \text{…

1528. 重新排列字符串

1528. 重新排列字符串https://leetcode.cn/problems/shuffle-string/ 难度简单52收藏分享切换为英文接收动态反馈 给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s &#xff0c;其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新…

Python写一个自动发送直播弹幕的工具,非常简单

哈喽大家好&#xff0c;今天给大家用Python整一个可以在直播间自动发弹幕的工具&#xff0c;来为喜欢的主播疯狂扣6 &#xff01; 事情原由昨晚回家&#xff0c;表弟在看LOL直播&#xff0c;看得我气不打一处来&#xff0c;差点就想锤他。 身为程序员的表弟&#xff0c;看直…

教师论文|科技专著管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;随着计算机和互联网技术的发展&#xff0c;社会的信息化程度越来越高&#xff0c;各行各业只有适应这种发展趋势&#xff0c;才能增强自己的适应能力和竞争能力&#xff0c;不断发展壮大。大学作为教育的基地&#xff0c;是社会进步…

Java 方法简介

如果需要经常做某一操作&#xff0c;则需要重复写类似的代码&#xff0c;比如查找某个数。此外&#xff0c;某些复杂的操作需要分成多个步骤进行&#xff0c;以便理解和维护。 为此&#xff0c;计算机引入了函数的概念&#xff0c;用来减少重复代码&#xff0c;分解复杂操作。…

【Servlet篇3】HttpServletResponse的常用方法

HttpServletResponse代表的是一个HTTP请求对应的响应。 在这一篇文章当中&#xff0c;已经提到了HTTP响应是由哪几部分组成的&#xff1a; 【网络原理7】认识HTTP_革凡成圣211的博客-CSDN博客HTTP抓包&#xff0c;Fiddler的使用https://blog.csdn.net/weixin_56738054/articl…

ChIP-seq 分析:数据与Peak 基因注释(10)

动动发财的小手&#xff0c;点个赞吧&#xff01; 1. 数据 今天&#xff0c;我们将继续回顾我们在上一次中研究的 Myc ChIPseq。这包括用于 MEL 和 Ch12 细胞系的 Myc ChIPseq。 可在此处[1]找到 MEL 细胞系中 Myc ChIPseq 的信息和文件可在此处[2]找到 Ch12 细胞系中 Myc ChIP…

UE5 报错记录

文章目录The following modules are missing or built with a different engine versionXXX could not be compiled. Try rebuilding from source manaually添加组件时提示未定义标识符或函数名法一方法二方法三The following modules are missing or built with a different e…

MediaTek 天玑 8000 5G移动平台详细参数

MediaTek 天玑 8000 移动平台 采用先进的 台积电 5nm 工艺&#xff0c;拥有出众的性能和能效&#xff0c;为高端智能手机用户提供出色的高帧率游戏和 5G 移动体验。 天玑 8000 采用了 MediaTek 诸多先进技术&#xff0c;内置 MediaTek Imagiq 780影像引擎、第五代 AI 处理器APU…