FreeSwitch: ESL Inbound内联模式下如何设置单腿变量
outbound外联模式下,可以参考我先前写的文章:freeswitch: ESL中如何自定义事件及自定义事件的监听,使用export导出变量。但是inbound模式下,ESL client并未封装export命令,如果要给某条腿附加一个变量值,可以借助uuid_setvar命令。
一、命令行验证
1.1 启动freeswitch控制台,手动originate发起呼叫
originate {origination_uuid=abd2d52e-6074-4a46-aa0e-c73d04f566f6}user/1000 &park()
注:外呼freeswitch内置的1000账号,同时指定该腿的uuid为abd2d52e-6074-4a46-aa0e-c73d04f566f6 (前提:要先用一个网络电话程序,以1000账号注册到freeswitch上)

点击Answer接通,保持这条腿的通话
1.2 设置变量
uuid_setvar abd2d52e-6074-4a46-aa0e-c73d04f566f6 test-var value-a value-b value-c
正常的话,会回显+OK
1.3 获取变量
uuid_getvar abd2d52e-6074-4a46-aa0e-c73d04f566f6 test-var
输出结果,参考下图:

二、ESL Inbound示例代码
try {
//inbound test
final Client inboundClient = new Client();
inboundClient.connect("localhost", 8021, "ClueCon", 10);
inboundClient.setEventSubscriptions(EventFormat.PLAIN, "ALL");
inboundClient.addEventListener(new IInboundEslEventListener() {
@Override
public void onEslEvent(Context ctx, EslEvent eslEvent) {
String eventName = eslEvent.getEventName();
if (eventName.startsWith("CHANNEL")) {
if (eventName.startsWith("CHANNEL_ANSWER")) {
//接通时,设置test变量
String uuid = eslEvent.getEventHeaders().get(EslEventConstant.UNIQUE_ID);
ctx.sendAsyncApiCommand("uuid_setvar " + uuid + " test 123123123");
}
if (eventName.startsWith("CHANNEL_HANGUP_COMPLETE")) {
//挂断时,获取test变量
String testValue = eslEvent.getEventHeaders().get("variable_test");
System.out.println("test:" + testValue);
}
}
}
@Override
public void onDisconnect(Context ctx, EslMessage eslMsg) {
System.out.println("message:" + eslMsg);
}
});
} catch (Exception e) {
e.printStackTrace();
}
断点调试结果:

FreeSwitch: ESL Inbound内联模式下如何设置单腿变量的更多相关文章
- Linux字符模式下如何设置/删除环境变量
Linux字符模式下设置/删除环境变量方法: bash下 设置:export 变量名=变量值 删除:unset 变量名 csh下 设置:setenv 变量名 变量值 删除:unsetenv 变量名 h ...
- KindEditor设置为过滤模式,但在代码模式下提交表单时不过虑HTML标签的解决方法
KindEditor设置filterMode为true,但在代码模式下提交表单的话,发现并没有过虑掉自己不想保留的HTML标签. 这时只需同步内容前加上红色部分内容即可: onClick=" ...
- 交互模式下测试python代码及变量的四则运算
在交互模式下,python代码可以立即执行,所以这很方便我们进行代码测试 1.命令窗口,输入python (如果没配置环境变量则需带python安装目录的绝对路径) >>> 这个就是 ...
- windows下如何设置mysql环境变量
方法一: windows下如何设置mysql环境变量 关键词: mysql, Setting Environment Variables, 环境变量设置 我的电脑->属性->高级-> ...
- 本地虚拟机NAT模式下怎么设置才可以访问外网
记:因为我要在本机虚拟机上安装Docker,结果发现虚拟机环境不能上网,是主机模式.我要调成net模式下才可以访问外网,这就需要怎么设置.下面文章记录一下. 在本机安装VMware软件后,系统中会自动 ...
- VMware下的CentOS7在桥接模式下,设置静态ip联网
之前在虚拟机下联网都用的是NAT模式,但现在做一个项目需要实现在两台笔记本电脑中的VMware虚拟机中的CentOS联网, 从网上查资料显示比较常规的方式是桥接模式.第一次用桥接模式联网,在网上查了很 ...
- 本地虚拟机在NAT网络连接模式下如何设置才可以访问外网以及使用Xshell远程连接
本文演示环境: 笔记本电脑系统:windows 7 虚拟机系统:CentOS 7 虚拟化软件:VMware Workstation 12 远程连接工具:Xshell 5 第一步: 打开虚拟网络编辑器 ...
- JMeter命令模式下动态设置线程组和持续时间等动态传参
背景: 1.当通过JMeter的图像化界面运行性能压测或者场景时候,JMeter界面很容易导致界面卡死或者无响应的情况(20个线程数就会卡死) 现象如下:
- VC内联汇编,引用程序中的变量
int a=5; //变量a _asm { mov eax,a; //将变量a的值放入寄存器eax add eax,eax; //相当于a=a+a mov a,eax; // ...
- Nodejs 实现ESL内联FreeSWITCH设定说明
一.背景说明: SIP Server IP (Centos):192.168.11.61 ,服务器IP(Windows):192.168.11.19 二.目的: 能够从192.168.11.19上通 ...
随机推荐
- FastAPI中的复杂查询与原子更新指南
title: FastAPI中的复杂查询与原子更新指南 date: 2025/05/02 20:33:32 updated: 2025/05/02 20:33:32 author: cmdragon ...
- Spring基于注解的AOP事务控制
Spring基于注解的AOP事务控制 源码 代码测试 pom.xml <?xml version="1.0" encoding="UTF-8"?> ...
- 代码随想录第七天 | Leecode 454.四数相加II 、383. 赎金信 、15. 三数之和 、18. 四数之和
Leecode 454. 四数相加II 题目链接:https://leetcode.cn/problems/4sum-ii/ 题目描述 给你四个整数数组 nums1.nums2.nums3 和 num ...
- 【经验】日常|WakeUp、Outlook、Google日历导入飞书日历
以飞书团队账号登录时,设置的日历就能被团队其他成员看到(可选择私密.仅忙碌[默认].完全公开三种模式),以便相互查看空闲时间. Wakeup日历导出到Outlook日历 Wakeup支持从各大学校便利 ...
- Go Gob编码
gob(Go binary)是Goland包自带的一个数据结构序列化的编码/解码工具.编码使用Encoder,解码使用Decoder.一种典型的应用场景就是RPC(remote procedure c ...
- C# 控制台程序验证await立即返回
class Program{ public static volatile bool flag = true; public static void Main() { Action a = null; ...
- Github Copilot 实战: 从零开始用AI写一个OCR工具 (1)
最近AI很火,咱也尝试一下由浅入深探索一下 Github Copilot 的能力和底限. 使用的环境是 Windows11 + Microsoft Visual Studio Enterprise 2 ...
- synchronized 锁是可重入锁吗?如何验证?
摘要:举例证明 synchronized锁 是可重入锁,并描述可重入锁的实现原理. 综述 先给大家一个结论:synchronized锁 是可重入锁! 关于什么是可重入锁,通俗来说,当线程请求一 ...
- netty发送socket短连接请求,自定义报文头
package com.chinaums.japi.util; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.ByteBuf; ...
- Hyperledger Fabric中的系统链码——VSCC, ESCC, LSCC, ESCC, QSCC
系统链码也与用户链码相同.这些链码内置于peer节点中. Hyperledger Fabric 中提供了以下系统链代码: LSCC ESCC VSCC CSCC QSCC 1.LSCC: Lifecy ...