originate命令解析及示例
命令格式及解释
命令使用的基础模板:
originate ALEG BLEG
在fs_cli控制台使用的完整语法如下:
originate <call url> <exten>|&<application_name>(<app_args>) [<dialplan>][<context>] [<cid_name>][<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分机。
呼叫外线
通过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