FreeSwitch常用命令

2023-10-31

1.通话相关

  • //先打客户,再转坐席,没有录音
EslMessage elme = client.sendSyncApiCommand("originate", " sofia/gateway/huawei/015011275853 &bridge(user/1011)");
  • //先打客户,再通过拨号计划转坐席,拨号计划中配置了录音
EslMessage elme = client.sendSyncApiCommand("originate", " sofia/gateway/huawei/015011275853 &transfer(01011 XML default);
  • //先打坐席,再转客户,没有录音
EslMessage elme = client.sendSyncApiCommand("originate", " user/1011 &transfer(015011275853 XML default);
  • //先打坐席,再通过拨号计划转客户,拨号计划中配置了录音
    EslMessage elme = client.sendSyncApiCommand(“originate”, " user/1011 &bridge(sofia/gateway/huawei/015011275853);
EslMessage elme = client.sendSyncApiCommand("originate", " user/1011 &bridge(sofia/gateway/huawei/015011275853);
  • 为两个用户建立通话 < 配置来电显示用户名以及号码 >
originate  {origination_caller_id_number=95522,origination_caller_id_name=fanpc}user/1000 {origination_caller_id_number=95522,origination_caller_id_name=wangyong}&bridge(user/1002)
  • 挂机
EslMessage response = client.sendApiCommand("fsctl hupall normal_clearing dialed_ext "+callNo, "");

2.api命令和bgapi命令

  • esl命令 api和bgapi
client.sendApiCommand("originate", " sofia/gateway/huawei/"+calleeno+" &bridge"
          + "(user/"+callno+")");   //api命令
client.sendBackgroundApiCommand("originate", " sofia/gateway/huawei/"+calleeno+" &bridge"
              + "(user/"+callno+")");  //bgapi命令
  • FS api命令和bgapi命令区别及阻塞原因
freeswitch> originate sofia/gateway/gw1/Bob &echo

其中,gw1为呼叫Bob使用的网关的名字。上述命令是阻塞的,因而在Bob对应的网关没有任何反应的时候(不
回任何SIP消息),可能会阻塞较长时间。当FreeSWITCH控制台被阻塞时,将不能输入任何命令。如果要解决这个问题,可以打开另一个终端,用fs_cli连接FreeSWITCH,然后使用show channels找到对应的Channel,并且用
uuid_kill将该Channel释放。当然,为了避免产生这种阻塞的情况,可以提前使用bgapi,如:

freeswitch> bgapi originate sofia/gateway/gw1/Bob &echo

bgapi可以使originate在后台(新的线程中)执行,因而不会阻塞控制台。

3.日志跟踪

  • 打开internale日志跟踪
sofia profile internal siptrace on
  • 关闭external日志跟踪
sofia profile internal siptrace off

3. 彩铃

 originate {instant_ringback=true}{transfer_ringback=local_stream://moh}user/1000 &bridge(user/1001)
 originate {transfer_ringback=local_stream://moh}user/1000 &bridge(user/1001)

4.查看通道信息

  • 查看通道信息
 freeswitch> show channels
  • 查看调试输出
freeswitch> uuid_debug_media b4fae306-3f78-4d91-bcde-a2e95b0f9c1d both on

​ uuid_debug_media命令查看调试输出。其中,该命令的第一个参数是Channel的UUID,接下来是欲
调试的方向。方向有read和write两种(即读和写,也即收和发,都是相对于FreeSWITCH而言的,下同),也可以使用both参数表示双向都调试。最后一个参数是on或off,分别表示打开或关闭调试

5.录音

  • 回拨命令录音
freeswitch> originate user/1002 &record(/tmp/test.wav)
  • 拨打电话后播放录音
originate user/1000 &playback(/usr/local/freeswitch/sounds/test.wav)
  • 对执行uuid的channel录音
freeswitch>	uuid_record <channel_uuid> start /tmp/record.wav
  • 对指定uuid的channel停止录音
freeswitch> uuid_record <channeL_uuid> stop /tmp/record.wav
  • linux系统播放音乐
$ play /tmp/record.wav
  • 停止所有录音
freeswitch>	uuid_record <channel_uuid> stop all

6.查询注册用户

  • 查询已注册用户
sofia status profile internal reg

7.查看fs是否运行

  • 进程是否存在
ps aux | grep freeswitch
  • 端口是否被占用
netstat -an | grep 5060

8.查看日志

“警告”(WARNING)和“错误”(ERROR)是级别比较高的日志,“调试”(DEBUG)是级别比较低的日志,但其能显示更多的细节

9.日志抓包

  • 抓取internal和external的sip日志消息
freeswitch> sofia profile internal siptrace on
freeswitch> sofia profile external siptrace on
  • 抓取所有包
freeswitch> sofia global siptrace on   //打开
freeswitch> sofia global siptrace off   //关闭
  • 开启Sofia协议栈底层的调试器
freeswitch> sofia loglevel all 9    //打开
freeswitch> sofia loglevel all 0     //关闭
sofia loglevel <all|default|tport|iptsec|nea|nta|nth_client|nth_server|nua|soa| sresolv|stun>   [0-9]    //sofia日志级别格式
freeswitch> sofia loglevel nua 9    //打开nua日志抓包

10. originate呼叫命令

  • 命令格式
freeswitch> originate
-USAGE: <call url><exten>|&<application_name>(<app_args>)
 [<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]
  1. call url 外呼呼叫字符串

    freeswitch> originate user/1000 &echo
    
  • 同时拨打不同电话
freeswitch> originate user/1000,user/1001 &echo

通过逗号(,)或竖线符号(|)将多个呼叫字符串隔开,以达到同振或顺振的目的。如下面命令可同时呼叫1000和1001,两个话机都会振铃,哪个先接听则接通哪个,另一路会自动挂断

  • bridge 同时拨打两个电话
freeswitch> originate user/1000 &bridge(user/1001)
  • 挨个拨打不同电话
freeswitch> originate user/1000|user/1001 &echo
  • 超时挨个呼叫
freeswitch> originate {var1=1}[leg_timeout=10]user/1000|
 [leg_timeout=20]sofia/gateway/gw1/1380000000|
 [leg_timeout=20]sofia/gateway/gw2/1380000000

leg_timeout只应用于靠近它的那一条腿上,它用于定义呼叫超时,即等待对方返回媒体(如183或200)的超时时间。而var1=1是全局的,每条腿都会有这个变量

  • 呼叫指定语音编码格式
freeswitch> originate {absolute_codec_string=G729\,PCMU}user/1000 &echo
  • 设置主叫号7777
freeswitch> originate {origination_caller_id_number=7777}user/1000 &echo
  • 设置主叫号7777,转换主叫号为1000(隐藏电话号),并转接1001
freeswitch> originate {originattion_caller_id_number=7777}user/1000 &bridge(user/1001)
  • 来电显示
freeswitch> originate {originatioin_caller_id_number=7777}user/1000
 &bridge({origination_caller_id_number=8888}user/1001)
或者
freeswitch> originate {originatioin_caller_id_number=7777}
{effective_caller_id_number=8888}user/1000
 &bridge(user/1001)

11.彩铃 early media

  • 主动外呼如电话自动催费,用户真正接听后放音乐,或进入IVR
freeswitch> originate {ignore_early_media=true}sofia/gateway/gw/13800000000
 &playback(/tmp/test.wav)
  • 同时给两个用户播放相同彩铃
freeswitch> originate {instant_ringback=true}transfer_ringback=local_stream://moh}user/1000
&bridge(user/1001)

12.批量创建用户配置文件

**注意:**以下命令都在linux的shell命令行中执行

  • 以1000.xml为模板,创建1020.xml

在UNIX系统上的Shell中使用下列命令完成

sed -e "s/1000/1020/" 1000.xml > 1020.xml

sed是UNIX系统上经典的流文件编辑器,上面我们使用sed的“s”命令将1000.xml文件中所有出现1000的
地方都替换成1020,然后将命令的输出重定向(大于号是Shell中的重定向操作符)到1020.xml文件中

  • 批量创建1020~1039 xml文件
for i in `seq 1020 1039`; do sed -e "s/1000/$i/" 1000.xml > $i.xml ; done
  • Perl脚本添加配置文件

源代码目录中的scripts/perl目录下也有一个add_user脚本

 ./add_user 1020

指定生成配置文件路径

./add_user 1020 --domain=my_domain --confpath=/opt/freeswitch/conf

指定批量创建用户范围

./add_user --users=1020-1039

在指定文件夹中生成配置文件

# mkdir -p /tmp/directory/my_domain
# ./add_user 1111 --users=1020-1039 --domain=my_domain --confpath=/tmp

注意: 修改拨号计划配置文件之后别忘记修改拨号计划正则匹配规则

<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[0-3][0-9])$">

重新加载配置文件

freeswitch>reloadxml

13.fs的ivr语言菜单

IVR系统默认的配置文件为

conf/autoload_configs/ivr.conf.xml

ivr按钮配置目录

conf/ivr_menus/

conf/ivr_menus/welcome.xml

<include>
 <menus>
 <menu name="welcome"
 greet-long="welcome.wav"
 greet-short="welcom_short.wav"
 invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav"
 exit-sound="voicemail/vm-goodbye.wav"
 timeout="15000"
 max-failures="3"
 max-timeouts="3"
 inter-digit-timeout="2000"
 digit-len="4">
 <entry action="menu-exec-app" digits="0" param="transfer 1000 XML default"/>
 <entry action="menu-exec-app" digits="/^(10[01][0-9])$/"
 param="transfer $1 XML default"/>
 </menu>
 </menus>
</include>
·greet-long   该语音文件默认的位置应该是在/usr/local/freeswitch/sounds目录下   开始欢迎音乐
·greet-short  //按键提示音  如果长时间没有输入 提示
·invalid-sound    //按错键 提示音
·exit-sound       //退出菜单提示音
·timeout          //按键输入超时提示音
.max-failures         //容许用户最大输入错误次数
.max-timeouts        //最大超时次数
·inter-digit-timeout    //按键时间间隔
·digit-len        //输入号最大长度
  • 呼叫1001,接听后进入ivr菜单
freeswitch> originate user/1001 &ivr(welcome)

14.Inbound和Outbound

​ Outbound模式相较于嵌入式语言相比更强大,适合控制单腿的呼叫,实现复杂的IVR应用;而Inbound更适合接收所有的事件,与多条腿进行交互,进行更复杂的呼叫控制。其中,在Outbound模式中,又分为同步模式和异步模式,同步模式控制比较简单,但自由度较小;异步模式需要更多的编程技巧,但会更强大。

​ Outbound模式的Socket是由FreeSWITCH建立的,它是建立在Channel的基础上的,每一个Channel均会为外部的TCP Server建立一个连接,在Channel挂机时释放,因此,Outbound的连接要考虑Channel的生命周期(即Socket的生命周期)。而Inbound的连接由客户端主动向FreeSWITCH发起连接,极需要考虑断线重连等问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeSwitch常用命令 的相关文章

  • Redis的底层数据结构

    1 Redis的五种数据类型及七种底层结构 键的类型只能为字符串 值支持五种数据类型 字符串 列表 集合 散列表 有序集合 对于Redis来讲 对于键值对来说 键总是字符串 值就是五个中的一个 所以我们只用关心值的类型 值有五种数据类型 S
  • 理解CPU/寄存器/内存之间的关系

    转自 https blog csdn net qq 27689785 article details 82975575 CPU 寄存器 内存 因为要了解多线程 自然少不了一些硬件知识的科普 我没有系统学习过硬件知识 仅仅是从书上以及网络上看
  • Node.js全栈开发笔记与心得

    highlight a11y dark 一 Node js 全栈开发资料 1 前端入门基础 慕课网HTML CSS入门 慕课网JS入门 javascript进阶篇 菜鸟教程html部分 菜鸟教程CSS部分 阮一峰js入门 阮一峰es6教程
  • 一道有关逆序对的算法题---归并、树状数组、线段树三种解法

    这阵子巨忙 呜呜呜 上周末打了第十四届蓝桥杯的校内赛 总的来说 题目是很简单的 不过其中的压轴题挺有意思 所以我打算来一发博客记录记录这道算法题 废话不多说了 上题 问题描述 小蓝有一个序列 a 1 a 2 a n 每次可以交换相邻的两个元
  • 服务器系统网口,服务器网口设置方法

    服务器网口设置方法 内容精选 换一换 介绍常见的安全组配置示例 如下示例中 出方向默认全通 仅介绍入方向规则配置方法 不同安全组内的云耀云服务器内网互通仅允许特定 IP 地址远程连接云耀云服务器SSH远程连接Linux云耀云服务器RDP远程
  • 数据库原理-ER模型转换为关系模型

    1 ER图转换成关系模式集的算法 联系类型的转换 不同的情况做不同的处理 二元联系类型的转换 若实体间联系是1 1 可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性 若实体间联系是1 n
  • pandas dataframe 新增单列和多列

    dataframe 新增单列 assign方法 dataframe assign方法 返回一个新对象 副本 不影响旧dataframe对象 import pandas as pd df pd DataFrame col 1 0 1 2 3
  • C/C++混用的线性表基本操作(Five的期末复习,part1)

    一 线性表的定义 线性表 零个或多个数据元素的有限序列 几个关键的地方 首先它是一个序列 也就是说 元素之间是有顺序的 若元素存在多个 则第一个元素无前驱 最后一个元素无后继 其他每个元素都只有一个前驱和后继 然后 线性表强调是有限的 事实
  • tensorflow的 jupyter环境 error :UnrecognizedFlagError: Unknown command line flag 'f' 解决办法

    加一行代码 tf app flags DEFINE string f kernel
  • VS2017+DirectX9环境配置

    正好学完浅墨大神的游戏编程著作 来写一下VS2017怎么配置DirectX9 首先去下一个DX9的SDK SDK下载 然后找地方安装上 不过可能安装会出问题 我的情况解决方式如下 去控制面板里面卸载掉这两个东西 然后再安装下载下来的DXSD
  • ogre 1.7.0

    今天编译了orge 第一次安装编译orge挺麻烦的 现把编译和安装步骤总结一下 1 ogre 1 7 0的下载地址 https sourceforge net projects ogre files ogre 1 7 ogre v1 7 0
  • Python之赋值、深拷贝与浅拷贝

    一图胜千言 先上三幅小图 图片来源 赋值操作 浅拷贝操作 深拷贝操作 赋值操作 赋值是将一个对象指向一个已经存在的对象的过程 通常使用 texttt 来完成赋值操作
  • pd.DataFrame()函数解析

    文章目录 DataFrame是Python中Pandas库中的一种数据结构 它类似excel 是一种二维表 0 简介 DataFrame的单元格可以存放数值 字符串等 这和excel表很像 同时DataFrame可以设置列名columns与
  • Qt打开外部文件/文件夹

    方法一 QDesktopServices 1 函数原型 头文件 include
  • idea2021.3.3的安装方式以及使用方法

    1 打开idea的官网 可以点击下方链接进行下载 该软件版权为Jetbrains所有 我们仅作使用 欢迎大家使用正版软件 下面是idea的官方网址 idea的直接链接https www jetbrains com idea 打开链接之后 点
  • python聚类分析顾客_Python用K-means聚类算法进行客户分群的实现

    一 背景 1 项目描述 你拥有一个超市 Supermarket Mall 通过会员卡 你用有一些关于你的客户的基本数据 如客户ID 年龄 性别 年收入和消费分数 消费分数是根据客户行为和购买数据等定义的参数分配给客户的 问题陈述 你拥有这个
  • 使用winserver2003配置DNS服务器

    实验准备 Windows server 2003 R2 虚拟机一台 win 7 客户机一台 DNS内容 dns domain name service 域名解析服务 域名 例如 www baidu com 中 baidu com 是域名 w
  • Electron 入门案例详解

    目录 前言 一 开发环境检查 二 入门案例实现 1 初始化项目 2 安装electron包 3 运行electron应用 三 创建第一个应用窗口 1 准备页面 2 创建窗口 3 运行窗口 总结 前言 Electron 是一种基于 Node
  • 史上最全零拷贝总结

    一 传统方式下消息读取发送 很多应用程序在发送文件时 可以等价为进行如下的系统调用 File read file buf len Socket send socket buf len 例如消息中间件 Kafka 就是这个应用场景 从磁盘中读
  • 凸透镜成像动画可拖动_重要实验——凸透镜成像

    一 基本概念 透镜 透镜就是用透明物质制成的表面为球面的一部分的光学元件 透镜的光心 如上图所示 透镜的几何中心O一般称为透镜的光心 透镜的主光轴 如上图所示 经过透镜光心的一条水平直线称为透镜的主光轴 透镜的焦点 以凸透镜为例 如上图所示

随机推荐

  • Service启动流程总结-start和stop service

    文章目录 回顾 概述 源码探究 startService过程 onCreate阶段 onStartCommand阶段 Service超时机制 设置超时 移除超时 触发超时 当目标Service进程未启动时 stopService过程 总结
  • Elastic Stack(二)——Elasticsearch之REST API的使用

    一 Rest命令说明 二 创建索引 添加数据 PUT logs doc 1 log name 首页点击次数 log value 4 user id 10086 datetime 2020 05 01 PUT logs doc 2 log n
  • openwrt luci学习记录2 -- cbi模块

    Control 代码库路径 feeds lluci applications luci myapp luasrc controller myapp lua 设备上路径 usr lib lua luci controller myapp lu
  • tf好朋友之matplotlib的使用——scatter散点图的绘制

    tf好朋友之matplotlib的使用 scatter散点图的绘制 散点图绘制常用函数 plt scatter 应用示例 了解了那么多坐标设置 连续图的绘制 现在要来看看散点图了 散点图绘制常用函数 plt scatter scatter的
  • k8s 3master节点做高可用-无坑版

    master1 192 168 0 122 master2 192 168 0 86 master3 192 168 0 144 node1 192 168 0 204 node2 192 168 0 184 1 修改主机名并加入到主机映射
  • Linux——进程信号详解

    目录 一 进程信号的理解 1 1定义 1 2举例 1 3总结 二 进程信号地使用 2 1信号种类 2 2而操作系统向进程发送信号地方式有四种 2 2 1以键盘的方式向进程发送信号 接下来介绍一个系统调用函数signal 2 2 2 以系统调
  • 将hexo自定义域名升级https

    原文转载自我的博客https benym cn 前言 Tips 有什么问题可以在下方留言板留言哦 留下自己的邮箱 可以保证快速回复 最近在折腾博客 发现github上很多人说个人博客支持https很重要 原本的github io域名本来支持
  • 景联文科技可为多模态语音翻译模型提供数据采集支持

    8月22日Facebook的母公司Meta Platforms发布了一种能够翻译和转录数十种语言的人工智能模型 SeamlessM4T 可以在日常生活中或者商务交流中为用户提供更便捷的翻译和转录服务 相较于传统的文本翻译 这项技术的最大区别
  • 重启计算机一直转圈圈,Win10系统开机一直转圈圈进不了系统解决方法

    电脑越来越普及了 而大家都能熟练的操作电脑 但你知道如何解决Win10一直转圈圈不能进系统吗 不知道了吧 其实系统故障非常简单 大家只需要按照小编下述所说的方法操作就可以了 下面小编就给大家分享这篇Win10系统开机一直转圈圈进不了系统解决
  • deb 中标麒麟_注意:银河麒麟和中标麒麟不是同一个操作系统

    很多网友都想问 在国产操作系统中有两个叫麒麟的系统非常有名 一个是银河麒麟 另一个是中标麒麟 它们是否出自于同一个公司 是同一个操作系统 可以肯定的说 银河麒麟和中标麒麟不是同一个操作系统 这里请注意分辨了 包括和优麒麟也不同同一个操作系统
  • 智商100能看懂,内观,生男生女,集体潜意识及智人2.0

    一 这一轮人类发展趋势从外到内 要内观世界 1 人的身体前面是阴 背后是阳 但人是向前走路的 也就是从阳往阴走的 所以人类发展的趋势是阴 也就是往女性化走 从外到内 要内观世界 从目前人类的文明来说 现在的人类比古代的人类来说 男性越来越向
  • 最新高频Android笔试题分享,最新高频安卓面试题目分享

    前言 伟人曾经说过 书是人类进步的阶梯 书中自有黄金屋 书中自有颜如玉 读书破万卷 下笔如有神 书是唯一不死的东西 书籍是伟大的天才留给人类的遗产 最近有很多朋友在我的公众号上提问 Android开发的经典入门教材和学习路线 Android
  • 基于VLC实现RTSP推流桌面(共享桌面)

    基于VLC实现RTSP推流桌面 共享桌面 一 添加VLC头文件和库文件 二 封装RTSPServer推流类 三 测试代码 不清楚推流大概原理的小伙伴 参考 设置VLC播放器进行RTSP推流桌面 共享桌面 这里以VLC 2 2 6版本为例 因
  • 怎么将pdf文件转换成图片?三种方法

    在实际的工作过程中 PDF是非常常见的文档存储格式 也是很多网站默认的保存格式 对于PDF文件来说 其具备很多其他文件格式没有的优势和特点 例如 在PDF文件中 其排版整齐且固定 浏览直观且方便 为工作的开展提供了诸多便利 另外 为了能够提
  • [计算机网络]简单入门HTTPS : 确保Web网站安全

    前言 今天也是刚好看到HTTPS 感觉HTTPS有许多需要总结的地方 这里也是花点时间给大伙总结下 今天会从下面几个点入手给大伙介绍 HTTPS如何解决现有的HTTP安全问题 和HTTP的区别 HTTPS建立连接的过程 HTTPS的缺点 其
  • android蓝牙BLE(二) —— 通信

    android BLE系列 android蓝牙BLE 一 扫描 android蓝牙BLE 二 通信 android蓝牙BLE 三 广播 一 蓝牙基础协议 想了解蓝牙通信之前 需要先了解蓝牙两个最基本的协议 GAP 和 GATT 1 GAP
  • FreeCAD是什么、如何下载(windows+0.18.4版本)和安装以及中文设置

    目录 一 FreeCAD是什么 二 如何下载FreeCAD 三 FreeCAD安装过程 四 如何设置成中文 一 FreeCAD是什么 我本意是想用Qt连接CAD实现CAD的二次开发 实现在qt界面改变参数同时CAD图纸上的尺寸发生相应变化
  • Linux之Web服务器配置(Apache)

    摘要 Web Service技术 能使得运行在不同机器上的不同应用无须借助附加的 专门的第三方软件或硬件 就可相互交换数据或集成 依据Web Service规范实施的应用之间 无论它们所使用的语言 平台或内部协议是什么 都可以相互交换数据
  • 基于stm32f103c8t6HAL库六路电磁寻迹智能车

    基于stm32f103c8t6HAL库六路电磁寻迹智能车 学习单片机第一次参加相关比赛 下面分享一些关于调车的心得 1 控制舵机 舵机是控制小车转向的器件 而PWM波可以控制舵机 占空比越大 舵机旋转角度越大 接下来我们打开cubemx配置
  • FreeSwitch常用命令

    1 通话相关 先打客户 再转坐席 没有录音 EslMessage elme client sendSyncApiCommand originate sofia gateway huawei 015011275853 bridge user