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内联模式下如何设置单腿变量的更多相关文章

  1. Linux字符模式下如何设置/删除环境变量

    Linux字符模式下设置/删除环境变量方法: bash下 设置:export 变量名=变量值 删除:unset 变量名 csh下 设置:setenv 变量名 变量值 删除:unsetenv 变量名 h ...

  2. KindEditor设置为过滤模式,但在代码模式下提交表单时不过虑HTML标签的解决方法

    KindEditor设置filterMode为true,但在代码模式下提交表单的话,发现并没有过虑掉自己不想保留的HTML标签. 这时只需同步内容前加上红色部分内容即可: onClick=" ...

  3. 交互模式下测试python代码及变量的四则运算

    在交互模式下,python代码可以立即执行,所以这很方便我们进行代码测试 1.命令窗口,输入python (如果没配置环境变量则需带python安装目录的绝对路径) >>> 这个就是 ...

  4. windows下如何设置mysql环境变量

    方法一: windows下如何设置mysql环境变量 关键词: mysql, Setting Environment Variables, 环境变量设置 我的电脑->属性->高级-> ...

  5. 本地虚拟机NAT模式下怎么设置才可以访问外网

    记:因为我要在本机虚拟机上安装Docker,结果发现虚拟机环境不能上网,是主机模式.我要调成net模式下才可以访问外网,这就需要怎么设置.下面文章记录一下. 在本机安装VMware软件后,系统中会自动 ...

  6. VMware下的CentOS7在桥接模式下,设置静态ip联网

    之前在虚拟机下联网都用的是NAT模式,但现在做一个项目需要实现在两台笔记本电脑中的VMware虚拟机中的CentOS联网, 从网上查资料显示比较常规的方式是桥接模式.第一次用桥接模式联网,在网上查了很 ...

  7. 本地虚拟机在NAT网络连接模式下如何设置才可以访问外网以及使用Xshell远程连接

    本文演示环境: 笔记本电脑系统:windows 7 虚拟机系统:CentOS 7 虚拟化软件:VMware Workstation 12 远程连接工具:Xshell 5 第一步: 打开虚拟网络编辑器 ...

  8. JMeter命令模式下动态设置线程组和持续时间等动态传参

    背景: 1.当通过JMeter的图像化界面运行性能压测或者场景时候,JMeter界面很容易导致界面卡死或者无响应的情况(20个线程数就会卡死) 现象如下:

  9. VC内联汇编,引用程序中的变量

    int a=5; //变量a _asm { mov eax,a;       //将变量a的值放入寄存器eax add eax,eax;   //相当于a=a+a mov a,eax;      // ...

  10. Nodejs 实现ESL内联FreeSWITCH设定说明

    一.背景说明: SIP Server IP (Centos):192.168.11.61  ,服务器IP(Windows):192.168.11.19 二.目的: 能够从192.168.11.19上通 ...

随机推荐

  1. FastAPI中的复杂查询与原子更新指南

    title: FastAPI中的复杂查询与原子更新指南 date: 2025/05/02 20:33:32 updated: 2025/05/02 20:33:32 author: cmdragon ...

  2. Spring基于注解的AOP事务控制

    Spring基于注解的AOP事务控制 源码 代码测试 pom.xml <?xml version="1.0" encoding="UTF-8"?> ...

  3. 代码随想录第七天 | Leecode 454.四数相加II 、383. 赎金信 、15. 三数之和 、18. 四数之和

    Leecode 454. 四数相加II 题目链接:https://leetcode.cn/problems/4sum-ii/ 题目描述 给你四个整数数组 nums1.nums2.nums3 和 num ...

  4. 【经验】日常|WakeUp、Outlook、Google日历导入飞书日历

    以飞书团队账号登录时,设置的日历就能被团队其他成员看到(可选择私密.仅忙碌[默认].完全公开三种模式),以便相互查看空闲时间. Wakeup日历导出到Outlook日历 Wakeup支持从各大学校便利 ...

  5. Go Gob编码

    gob(Go binary)是Goland包自带的一个数据结构序列化的编码/解码工具.编码使用Encoder,解码使用Decoder.一种典型的应用场景就是RPC(remote procedure c ...

  6. C# 控制台程序验证await立即返回

    class Program{ public static volatile bool flag = true; public static void Main() { Action a = null; ...

  7. Github Copilot 实战: 从零开始用AI写一个OCR工具 (1)

    最近AI很火,咱也尝试一下由浅入深探索一下 Github Copilot 的能力和底限. 使用的环境是 Windows11 + Microsoft Visual Studio Enterprise 2 ...

  8. synchronized 锁是可重入锁吗?如何验证?

    摘要:举例证明 synchronized锁 是可重入锁,并描述可重入锁的实现原理. 综述   先给大家一个结论:synchronized锁 是可重入锁!   关于什么是可重入锁,通俗来说,当线程请求一 ...

  9. netty发送socket短连接请求,自定义报文头

    package com.chinaums.japi.util; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.ByteBuf; ...

  10. Hyperledger Fabric中的系统链码——VSCC, ESCC, LSCC, ESCC, QSCC

    系统链码也与用户链码相同.这些链码内置于peer节点中. Hyperledger Fabric 中提供了以下系统链代码: LSCC ESCC VSCC CSCC QSCC 1.LSCC: Lifecy ...