FreeSWITCH小结:关于export的原理介绍及应用
FreeSWITCH小结:关于export的原理介绍及应用
Export原理
普通export用法
在dialplan中经常会用到export,如下所示:
    <action application="export" data="myvar=test"/>
上面的xml在执行后,会在本地通道中修改如下:
myvar=test
export_vars=<other_export_vars>,myvar
在本地变量中增加myvar,同时修改export_vars变量,将export指定的变量附加到后面。
这样,在bridge时候,系统会将export_vars指定的变量从a腿导入到b腿上.
带nolocal的export用法
有时候,仅仅需要将变量设置到b腿,而不需要设置到a腿,所以这里就需要参数nolocal.
用法如下:
    <action application="export" data="nolocal:myvar=test"/>
上面的命令在执行后,会在本地增加的变量如下:
nolocal:myvar=test
export_vars=<other_export_vars>,nolocal:myvar
也就是说增加的变量名称就是nolocal:myvar, 由于有nolocal前缀,就可以跟本地变量很好的区别开。
同样,在bridge的时候,系统也会将export_vars指定的变量从a腿导出到b腿。
巧妙的是,在导出nolocal:myvar的时候,会自动将nolocal:前缀去掉,从而达到将变量只设置到b腿的目的。
而如果留意就会发现,使用下面的命令还是可以获取到值的:
uuid_getvar <a_leg_uuid> nolocal:myvar
而使用下面的命令是获取不到任何值的:
uuid_getvar <a_leg_uuid> myvar
Export用法
知道了export的原理之后,即使api命令中没有uuid_export,我们也可以模拟出来。
如下:
用法1:只将指定的变量导出到b腿
originate {nolocal:sip_h_X-AutoAccept=true,export_vars='nolocal:sip_h_X-AutoAccept'}user/60400 60401
用法2:只将指定的变量设置到a腿
originate {sip_h_X-AutoAccept=true}user/60400 60401
用法3:同时将变量设置到a腿和b腿
originate {sip_h_X-AutoAccept=true,nolocal:sip_h_X-AutoAccept=true,export_vars='nolocal:sip_h_X-AutoAccept'}user/60400 60401
注意事项
这里所说的设置到b腿,是指bridge之后设置到b腿
Export示例
示例1:在呼叫前,同时设置a腿和b腿的uuid,以便后期跟踪
originate {origination_uuid=xxxxx,nolocal:origination_uuid=yyyyy,export_vars='nolocal:origination_uuid'}user/60401 60402
FreeSWITCH小结:关于export的原理介绍及应用的更多相关文章
- 高性能消息队列 CKafka 核心原理介绍(上)
		欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:闫燕飞 1.背景 Ckafka是基础架构部开发的高性能.高可用消息中间件,其主要用于消息传输.网站活动追踪.运营监控.日志聚合.流式 ... 
- kafka集群原理介绍
		目录 kafka集群原理介绍 (一)基础理论 二.配置文件 三.错误处理 kafka集群原理介绍 @(博客文章)[kafka|大数据] 本系统文章共三篇,分别为 1.kafka集群原理介绍了以下几个方 ... 
- Spring MVC工作原理及源码解析(一) MVC原理介绍、与IOC容器整合原理
		MVC原理介绍 Spring MVC原理图 上图是Spring MVC工作原理图(图片来自网上搜索),根据上图,我们可以得知Spring MVC的工作流程如下: 1.用户(客户端,即浏览器)发送请求至 ... 
- 03 Yarn 原理介绍
		Yarn 原理介绍 大纲: Hadoop 架构介绍 YARN 产生的背景 YARN 基础架构及原理 Hadoop的1.X架构的介绍 在1.x中的NameNodes只可能有一个,虽然可以通过Se ... 
- 04 MapReduce原理介绍
		大数据实战(上) # MapReduce原理介绍 大纲: * Mapreduce介绍 * MapReduce2运行原理 * shuffle及排序 定义 * Mapreduce 最早是由googl ... 
- Android Animation学习(一) Property Animation原理介绍和API简介
		Android Animation学习(一) Property Animation介绍 Android Animation Android framework提供了两种动画系统: property a ... 
- [转]MySQL主从复制原理介绍
		MySQL主从复制原理介绍 一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以 ... 
- 分布式文件系统FastDFS原理介绍
		在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储:2.数据高可用(冗余备份):3.读/写高性能:4.海量数据计算.最好还得支持多平台多语言,支持高并发. 由于单台服务器无法满足以 ... 
- 内存分析_.Net内存原理介绍
		内存原理介绍 1. .Net应用程序中的内存 1.1.Net内存类型 Windows使用一个系统:虚拟寻址系统.这个系统的作用是将程序可用的内存地址映射到硬件内存中的实际地址上.其实际结果 ... 
随机推荐
- HDU 4576 Robot (很水的概率题)
			Robot Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others)Total Sub ... 
- [转载]android工程中引入另一个工程中的资源
			原文地址:android工程中引入另一个工程中的资源作者:87fayuan 在项目中可能遇到这样的问题:项目过大,于是细分为N个子模块来做,每个模块都是不同的工程.涉及到activity传数据时,可以 ... 
- iOS:CYLTabBarController的具体使用实例:实现新浪微博的主流框架
			使用CocoaPods或者手动集成将CYLTabBarController这个第三方框架导入项目后,截图如下: 在AppDelegate.m类中实现的代码如下: // AppDelegate.m // ... 
- RMAN备份与恢复之概念二
			1 RMAN备份恢复 1.1 基础理论 恢复可以分为完全恢复和不完全恢复 完全数据库恢复是恢复到故障发生前的状态,所有已经提交的操作都进行恢复,确保数据库不丢失任何数据,完全恢复只用于归档模 ... 
- scikit-learn入门学习记录
			一加载示例数据集 from sklearn import datasets iris = datasets.load_iris() digits = datasets.load_digits() 数据 ... 
- LINUX 下编译不通过解答
			在linux下编译android源码或者webkit等程序源码时,不论在源码下加什么错误,编译器都默认正确,检索不到错误,此时,可能是之前编译的生成文件默认编译器不再检索编译新修改过的文件,只是发现修 ... 
- 不输入sudo使用docker
			系统是debian系 安装: sudo apt install docker.io 将当前用户加入‘docker’组: sudo gpasswd -a ${USER} docker 刷新权限: su ... 
- JQuery的get、post和ajax方法的使用
			在JQuery中可以使用get,post和ajax方法给服务器端传递数据 get方法的使用(customForGet.js文件): function verify(){ //1.获取文本框的数据 // ... 
- python 静态成员变量
			python 静态成员变量 python 也可以定义静态成员变量,就是类的变量. 注意python的静态成员变量只能通过 类.变量名 的形式获取 class A: a1 = 0 def __init_ ... 
- ios 程序发布使用xcode工具Application Loader 正在通过ITUNES STORE进行鉴定错误
			ios 程序发布使用xcode工具Application Loader 正在通过ITUNES STORE进行鉴定错误 一:此错误会导致上传程序,一直停留在验证阶段,而没有一点上传进度:结果会苦等半天, ... 
