Originate的用途就是发起一路新的呼叫,这我们都知道。
1. 用法
originate <call_url> <exten>|&<application_name>(<app_args>) [<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]
FreeSWITCH将会向<call_url>发起一路呼叫,把它作为A leg。如果这条腿在60秒内接通,FS将从指定的拨号方案里查找 <exten>并桥接;或者执行&后面指定的APP,括号里描述的是APP的参数。
1.1 Originate 参数
- <call_url> 你要拨打的呼叫串。
- Destination,桥接目标,它可以是以下两种选择之一:
- <exten> 从拨号方案中查找目标号码。注意:注册分机不能通过这种方式桥接,如果要接通分机,请用&bridge(user/xxxx)
- &<application_name>(<app_args>)
- "&" 说明要控制流程是要执行APP,而不是桥接号码
- (<app_args>) 执行APP的参数,这是可选的,因为不是所有APP都需要参数,比如说park。
- 最常用的APP有:
park, bridge, javascript/lua/perl, playback 等等。 - 注意,如果参数中有空格,那么用单引号修饰参数串,比如:'&lua(test.lua arg1 arg2)'
- 注意:&和APP名字之间不能有空格。
- <dialplan> 如果不指定,缺省值为 'XML'
- <context> 如果不指定,缺省值为'default'
- <cid_name> 发给A leg 的CallerID name
- <cid_num> 发给A leg的CallerID number
- <timeout_sec> 超时,单位为秒,缺省为60秒
1.2 Originate 变量
可以在拨号串里加一个通道变量列表作为前缀,变量表以花括号修饰,以逗号为分割符,比如:
originate {sip_auto_answer=true,return_ring_ready=false}user/1001 9198
Originate 实例
如下所示,你可以呼叫注册在本地的终端300,并把它park住。注意,这里指定的profile必须是300分机所注册的;此外,用百分号%代替@,说明这是一个注册分机,而不是外部号码:
originate sofia/example/300%pbx.internal &park()
桥接远程终端8600分机:
originate sofia/example/300@foo.com 8600
桥接远程SIP终端:
originate sofia/example/300@foo.com &bridge(sofia/example/400@bar.com)
执行JS脚本:
originate sofia/example/1000@somewhere.com &javascript(test.js)
执行带参数的JS脚本:
originate sofia/example/1000@somewhere.com '&javascript(test.js myArg1 myArg2)'
设置通道变量:
originate {ignore_early_media=true}sofia/mydomain.com/18005551212@1.2.3.4 15555551212
携带指定的SIP头域:
originate {sip_h_X-varA=111,sip_h_X-varB=222}sofia/mydomain.com/18005551212@1.2.3.4 15555551212
注意: 你可以任意设置通道变量,包括自定义变,如果变量值包含空格,那么用单绰号修饰:
originate {my_own_var=my_value}sofia/mydomain.com/that.ext@1.2.3.4 15555551212 originate {my_own_var='my value'}sofia/mydomain.com/that.ext@1.2.3.4 15555551212
如果需要向呼叫终端设定回铃音,可以这么做:
originate {ringback=\'%(2000,4000,440.0,480.0)\'}sofia/example/300@foo.com &bridge(sofia/example/400@bar.com)
bridge执行时向Leg A和Leg B指定参数:
originate {'origination_caller_id_number=2024561000'}sofia/gateway/whitehouse.gov/2125551212 &bridge(['effective_caller_id_number=7036971379']sofia/gateway/pentagon.gov/3035554499)
如果需要在"Ring-Ready"状态返回originate的处理,请这样尝试:
originate {return_ring_ready=true}sofia/gateway/someprovider/919246461929 &socket('127.0.0.1:8082 async full')
如果需要设置保持音乐:
originate {ringback=\'/path/to/music.wav\'}sofia/gateway/name/number &bridge(sofia/gateway/siptoshore/12425553741)
可以在后台发起呼叫(异步执行):
bgapi originate {ignore_early_media=true,originate_timeout=60}sofia/gateway/name/number &playback(message)
可以通过下面步骤为通道指定UUID:
- 调用create_uuid 生成一个UUID备用
- 指定
origination_uuid参数发起呼叫,那么这个UUID将与session关联
这样有利于精准控制通道,比如用 uuid_kill取消呼叫
originate {origination_uuid=...}user/100@domain.name.com
甚至可以向多个分机发起呼叫:
originate user/1001,user/1002,user/1003 &park()