fs_ext01 originate
阅读说明
笔记根据freeswitch官方文档和FreeSWITCH权威指南简单介绍originate的基本用法,最后概述下自己的阅读测试结论
originate 概述
-Originate a new call.
Usage
originate <call_url> <exten>|&<application_name>(<app_args>) [<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]
尖括号中是必选参数,方括号中是可选参数
FreeSWITCH will originate a call to <call_url> as Leg A. If that leg supervises within 60 seconds FS will continue by searching for an extension definition in the specified dialplan for <exten> or else execute the application that follows the & along with its arguments.
使用<call_url> (即呼叫字符串)作为A腿,如果60s超时后执行call_url后的<exten> dialplan或执行&后的APP。
supervises within 60 seconds 这里如果将supervises翻译为监督感觉怪怪的,我到FreeSWITCH mod_commands中看了下源码,在originate中调用了switch_ivr_originate接口,其中入参timelimit_sec 默认值为60 seconds,如果该函数在60s内执行成功,则后续会执行 <exten> 拨号计划或者 &后的APP。那么如何判断是执行<exten>还是&APP呢?源码中有一句话
if (*exten == '&' && *(exten + 1))
即如果 <call_url> 后面是 & 符号,且&后的<application_name>字符长度不为0,则执行APP,如果不是&符号,就执行<exten>的dialplan
originate 用法
originate是FreeSWITCH开发和测试中最常用的命令之一,在FreeSWITCH权威指南 10.4节详细讲述了该命令的用法及实例,有条件的可以到书中详细阅读用法及操作说明,这里仅根据我个人的阅读理解做几点笔记。
1. 更改主叫号码
FreeSWITCH中如果没有指定主叫号码,默认的主叫号码是0000000000。如使用下面命令,可以测试
originate user/1001 &echo
这里测试首先需要将软电话注册到FS,然后再fs_cli上输入上面命令即可,其中1001是自己注册的号码,如果自己注册号码为1000,改一下就行了。
那么如何能把0000000000主叫号码改为自己需要的号码呢?可以使用下面命令:
originate user/1001 &echo XML default 'CPP MUGGLE' 100000
上面的命令是什么意思呢?回过头来再看originate用法
originate <call_url> <exten>|&<application_name>(<app_args>) [<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]
其中 user/1001 是呼叫字符串,call_url
&echo 为APP
XML 为dialplan
default 为context
'CPP MUGGLE' 为cid_name
100000 为cid_num
2. 处理呼叫超时
上面命令再加一个秒数即可处理呼叫超时,如
originate user/1001 &echo XML default 'CPP MUGGLE' 100000 15
该命令增加了一个超时时间为15秒,其中对于呼叫超时时间,再权威指南上给出了详细的解释:
最后一个参数是超时的秒数。指的注意的是,它并不是对方不接电话的秒数,而是对方再收到我们INVITE消息后,不回复100 Trying消息的时间。一般来说这种情况是IP地址不可达。
其中默认的timeout_sec 为60秒
3. 防止命令阻塞
originate 命令是阻塞的,如果使用该命令,则无法输入其他命令或取消该呼叫。如果要使用非阻塞方式执行API,可以使用bgapi
如 bgapi originate...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)