FreeSWITCH版本:1.10.9
【资料图】
操作系统:CentOS 7.6.1810
originate经常用于发起呼叫,在实际工作过程中用到的也比较多,今天总结下基本用法,也方便我以后查阅。
一、wiki及源码介绍该命令在FreeSWITCH官方wiki也有介绍,这里列下wiki地址。
wiki首页:https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/
originate相关wiki地址:
https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Dialplan/Freeswitch-IVR-Originate_9634753/#docusaurus_skipToContent_fallback
https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Examples/Originate-Example_10682745/#docusaurus_skipToContent_fallback
源码文件:mod_commands.c
对应函数:originate_function
二、命令格式及解释命令使用的基础模板:
originate ALEG BLEG
在fs_cli控制台使用的完整语法如下:
originate|& ( ) [ ][<context>] [ ][<cid_num>] [ ]
其中,
originate为命令关键字,为必选字段,用于定义ALEG的呼叫信息,也就是通常说的呼叫字符串,可以通过通道变量定义很多参数;
|&
[][
[
示例呼叫:
originate user/1000 9196 xml default "mike" 18612345678
呼叫效果如下:
三、常见使用方式1、基础使用echo呼叫
示例如下:
originate user/1000 &echo
先呼叫1000分机,1000分机接听后,将1000分机所在的channel桥接到echo应用(将话筒传入的声音播放到听筒),以下命令具备同样效果:
originate user/1000 9196
分机互相拨打
示例如下:
originate user/1000 1001
先呼叫1000分机,1000分机接听后,再呼叫1001分机,1001分机接听后,将1000分机所在的channel桥接1001的channel,通话建立。
bridge到其它终端
这里以分机为例进行演示,具体如下:
originate user/1000 &bridge(user/1001)
和分机互相拨打类似。
分机共振
使用逗号语法关键字,示例如下:
originate user/1000,user/1001 9196
1000分机和1001分机同时响铃,任意一个分机接听后,另外一个分机自动挂机。
分机轮询
使用 | 语法实现,这里需要注意下,有呼叫默认超时时间的设置,示例如下:
originate {originate_timeout=30}[leg_timeout=10]user/1000|[leg_timeout=10]user/1001 9196
1000分机先振铃,10秒超时后呼叫1001分机。
呼叫外线
通过external进行外线呼叫,示例如下:
originate {origination_caller_id_number=00000000,origination_caller_id_name=000000000}sofia/external/18612345678@192.168.1.100:5060 &echo
播放音频给分机
使用playback命令进行声音播放:
originate user/1000 &playback(/tmp/test1.wav)
播放moh音频:
originate user/1000 &playback(local_stream://moh)
无限循环播放:
originate user/1000 &endless_playback(/tmp/test1.wav)
使用file_string进行多个文件依次顺序播放:
originate user/1000 &playback(file_string:///tmp/test1.wav!/tmp/test2.wav)2、通道变量的使用
originate字符串里面可以设置很多通道变量来定义呼叫参数,基本使用格式示例如下:
originate {var1=$value1,var2=$value2}/user/1000 9196originate {var1=$value1}[var2=$value2]/user/1000 9196
其中,大括号用于定义呼叫的通道变量,中括号用来定义某条leg的局部通道变量。
这里列举下常见的通道变量。
origination_uuid
发起呼叫时,用于定义leg的uuid,示例如下:
1)在呼叫时,指定A腿的uuid
originate {origination_uuid=xxxxx}user/1000 1001
2)在呼叫时,同时指定A腿和B腿的uuid
originate {origination_uuid=xxxxx}user/1000 &bridge({origination_uuid=yyyyy}user/1001)
origination_caller_id_name / origination_caller_id_number
用于设置主叫名称及号码,示例如下:
originate {origination_caller_id_name="mike",origination_caller_id_number=18612345678}user/1000 9196
会在话机及sip协议中体现,具体如下:
ignore_early_media
该参数适用于A leg,定义是否忽略B leg的early media。
originate_timeout
用于定义originate/bridge过程中的呼叫时长,超过该时间后就呼叫超时。
示例参考分机轮询部分。
leg_timeout
用于定义originate/bridge过程中某条leg的呼叫时长,超过该时间后就呼叫超时。
示例参考分机轮询部分。
absolute_codec_string
用于指定语音编码,示例如下:
originate {absolute_codec_string=‘^^:PCMA:PCMU’}user/1000 &playback(local_stream://moh)
其中,"^^"为转义符,后面跟冒号表示用冒号替代逗号。
自定义通道变量
在originate字符串中可以自定义通道变量,示例如下:
originate {var123="test123"}user/1000 9196
效果如下:
通道变量名称会自动添加 variable_ 前缀,具体来说就是 variable_var123
更多通道变量
具体参考switch_ivr_originate函数(switch_ivr_originate.c文件)
3、添加自定义sip头在originate字符串中,可以自定义sip头,通过添加 sip_h_X 前缀来试下,示例如下:
originate {sip_h_X-varTest="123456"}user/1000 &playback(local_stream://moh)
会在sip协议中添加自定义的header,具体效果如下:
4、特殊呼叫loopback呼叫
1)拨号方案自带的loopback
示例呼叫:
originate user/1000 &bridge(loopback/wait)
具体定义如下:
2)自定义loopback
dialplan添加如下内容:
呼叫测试:
originate user/1000 &bridge(loopback/loopTest1)
null呼叫
呼叫示例:
originate null/1000 &echo
具体效果:
也可以和bridge一起使用:
originate user/1000 &bridge(null/1234)
具体效果:
其它endpoint呼叫
这里以rtc为例,演示其它endpoint呼叫:
bgapi originate {origination_uuid=111222}rtc/test &echo
具体效果如下:
指定sip使用tcp协议呼叫
需要使用 transport=tcp 来指定协议,示例如下:
originate {origination_caller_id_name=1111}user/1000;transport=tcp &playback(local_stream://moh)
效果如下:
四、资源下载本文涉及freeswitch源码及使用的测试软电话可从如下渠道获取:
https://pan.baidu.com/s/16-H-ITuXAcPYRsZpa3At-g
关注微信公众号(聊聊博文,文末可扫码)后回复2023040201获取。
FreeSWITCH版本:1 10 9操作系统:CentOS7 6 1810originate经常...
今天(4月2日),是第16个“世界孤独症关注日”。由饿了么联合“一...
每经AI快讯,有投资者在投资者互动平台提问:董秘您好!从去年11月...
脸上化了美美的妆,看起来很有时尚淑女的味道,帅气的休闲装搭配牛...
1、S32168(06Cr18Ni11Ti)属于国标含Ti奥氏体不锈钢。2、执行标准:G...
全年来看,尽管市场对国内经济复苏节奏与力度存在分歧,但经济改善...
今天来回顾关于3天新增64例莆田疫情有哪些特点当地最新情况如下的文...
六月一日就是儿童节了,《哆啦A梦:大雄月球探险记》就在儿童节上映...
解答:1、水解蛋白质。含有水解蛋白的护肤品能更好的与皮肤相容,促...
《金证研》北方资本中心池渊 作者庭初 风控股权代持,是一种以他...
2023KPL春季赛今日第二场比赛是由武汉eStarPro对阵到济南RW侠【双方...
中国银行原董事长刘连舸被查,半个月前刚辞任!上个月还被免去党委...
长园集团:2023年第四次临时股东大会会议文件
聚苯硫醚(PPS)应用广泛,在电子电器、航空航天、汽车运输等领域获得...
海尔消费金融审计后2022年度营业收入17 1亿,同比增长57 46%。
原标题:五大三粗、身材魁梧,看完女星生图下的身材,我感受到了欺...
昨天的话我们也是提到了部分关于假面骑士Geats4月份的剧情情报,今...
3月31日,澎湃新闻记者从内部人士处获悉,美团将于4月发布面向ToB市...
周四盘中,现货白银报23 725,涨幅1 75%。今日分析:在23 54之上...
如今,汽车越来越受欢迎。基本上每个家庭都会有一辆车。汽车这么多...
谢娜怎么了暴瘦20斤?肤白貌美颜值回春被网友质疑做了医美
挑战肯定是有的,迎难而上,发现塑造一个角色后很有成就感。
提升环境品质构建美丽宜居生活环境朝阳初起,春意盎然。家住黄龙县...
据德国联邦统计局当地时间30日公布的初步数据显示,德国3月消费者价...
30年来,两地在产业对接、经贸合作、民生互补、人才培养交流等方面...
1、青春励志的歌曲歌曲的时长为5分03妙。《奋斗的青春》是黑子沛演...
当前疫情形势仍然严峻复杂,不可松懈。2023年03月31日重庆最新进出管...
市政公司经营部工作计划第1篇重庆西部物流园资产经营公司在物流园管...
1、中国的动画片中文名:大头儿子和小头爸爸外文名:ZebraFinch原作...
1999年,大众集团正式宣布将第二代奥迪A6引入中国。自此,国产奥迪A...