FreeSWITCH的originate命令解析及示例

科技资讯 投稿 9300 0 评论

FreeSWITCH的originate命令解析及示例

操作系统:CentOS 7.6.1810

一、wiki及源码介绍

该命令在FreeSWITCH官方wiki也有介绍,这里列下wiki地址。

originate相关wiki地址:

对应函数:originate_function

 二、命令格式及解释

originate ALEG BLEG

originate <call url> <exten>|&<application_name>(<app_args> [<dialplan>][&lt;context>] [<cid_name>][&lt;cid_num>] [<timeout_sec>]

其中,

originate 为命令关键字,为必选字段,用于定义ALEG的呼叫信息,也就是通常说的呼叫字符串,可以通过通道变量定义很多参数;

|&<application_name>(<app_args>  为必选字段,用于指定BLEG的分机号码或者用于创建BLEG的app(比如echo、bridge等);

[][<context>]  可选参数,该参数用于指定dialplan的context,默认值:xml default ;

[<timeout_sec>] 可选参数,该参数用于指定originate超时,默认值:60 ;

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分机。

  • 呼叫外线

originate  {origination_caller_id_number=00000000,origination_caller_id_name=000000000}sofia/external/18612345678@192.168.1.100:5060 &echo
  • 播放音频给分机

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 9196 originate {var1=$value1}[var2=$value2]/user/1000 9196

其中,大括号用于定义呼叫的通道变量,中括号用来定义某条leg的局部通道变量。

  • origination_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

  • originate_timeout

示例参考分机轮询部分。

  • leg_timeout

示例参考分机轮询部分。

  • absolute_codec_string

originate {absolute_codec_string=‘^^:PCMA:PCMU’}user/1000 &playback(local_stream://moh

其中,"^^"为转义符,后面跟冒号表示用冒号替代逗号。 

  • 自定义通道变量

originate {var123="test123"}user/1000 9196

效果如下:

  • 更多通道变量

3、添加自定义sip头

originate {sip_h_X-varTest='123456'}user/1000 &playback(local_stream://moh

会在sip协议中添加自定义的header,具体效果如下:

4、特殊呼叫

  • loopback呼叫

示例呼叫:

originate user/1000 &bridge(loopback/wait

具体定义如下:

dialplan添加如下内容:

<extension name="loopback_test"> <condition field="destination_number" expression="^loopTest1$"> <action application="answer"/> <action application="playback" data="local_stream://moh"/> </condition> </extension>

呼叫测试:

originate user/1000 &bridge(loopback/loopTest1

  • null呼叫

originate null/1000 &echo

具体效果:

originate user/1000 &bridge(null/1234

具体效果:

  • 其它endpoint呼叫

bgapi originate {origination_uuid=111222}rtc/test &echo

具体效果如下:

  • 指定sip使用tcp协议呼叫

originate {origination_caller_id_name=1111}user/1000;transport=tcp  &playback(local_stream://moh

效果如下:

四、资源下载

https://pan.baidu.com/s/16-H-ITuXAcPYRsZpa3At-g

关注微信公众号(聊聊博文,文末可扫码)后回复 2023040201 获取。 

编程笔记 » FreeSWITCH的originate命令解析及示例

赞同 (46) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽