FreeSwitch Originate API

        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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值