准备花时间好好研究下,一直都是一知半解
sip_looped_call
通俗地说,就是自己呼叫自己
查文档,是这样讲的:如果调用已通过 ACL 以外的方式进行身份验证,并且当前请求 IP/port 与配置文件 IP/port 匹配,那么就为 true
实际测试,如果呼叫自己的 5060 端口,那么 sip_looped_call 就为 true,写了一段路由,同时仿到 default.xml 和 public.xml 的最前面:
<extension name="test" continue="true">
<condition>
<action application="log" data="ERR sip_looped_call = ${sip_looped_call}"/>
</condition>
</extension>
日志如下:
Dialplan: sofia/internal/0000000000@192.168.99.206 parsing [public->test] continue=true
Dialplan: sofia/internal/0000000000@192.168.99.206 Absolute Condition [test]
Dialplan: sofia/internal/0000000000@192.168.99.206 Action log(ERR sip_looped_call = ${sip_looped_call})
EXECUTE [depth=0] sofia/internal/0000000000@192.168.99.206 log(ERR sip_looped_call = true)
发现没有挑战,context 走到了 public
park vs unpark
往泊车方面去想,很容易想明白。有二个模块:mod_fifo 和 mod_valet_parking
echo vs 'delay_echo 5000'
这个对开局太有用了
不过本人有一次吃瘪的经历,某网关呼叫 FreeSWITCH,dialplan 配置为 echo,信令正常,但听到的是静音,其实是网关自带了回声消除功能。后来终于觉醒了,换成 delay_echo,网关一般只能消除 128 ms(有的只能 32 或者 64),配置为 delay_echo 300 就能听到了
play_fsv vs record_fsv
mod_fsv 里面的二个 app,之所以用 mod_fsv 而不用 mod_av,估计是效率方面的考虑(本人对视频不太熟)
ringback_180 vs ringback_183_uk_ring vs ringback...
设置 ringback、transfer_ringback 等变量,送到的端点是 loopback,以及 ignore_early_media 对呼出的影响
个人感觉这个有点炫技
conference
conference,众所周知,不再赘述
mad_boss_intercom
摇人入会,向 sales 组里面所有的成员都发 INVITE
fax
这个不讲了,本人很熟,但现在几乎没人用传真了
esf_page_group
rtp_multicast_page,广播,Yealink/GrandStream 等话机支持
Local_Extension
呼叫本地分机,要留意 hangup_after_bridge、continue_on_fail 等通道变量的使用
含义很丰富,建议仔细研究和多做测试
留意 global-intercept/group-intercept/intercept-ext 跟 Local_Extension 之间的关联性
留意 bind_meta_app 跟 features.xml 之间的联系
个人感觉这个 extension 是最复杂的,需要花大量时间做研究(实现了 IPPBX 的很多功能)
rtp_secure_media
媒体加密
本人专门做过笔记
group_call
组呼
snom、skinny
不讲,很少人用
ivr
不讲,查资料可得
show_info
太简单,不讲
acknowledge_call
就是回 SIP 100 trying,没别的,估计很少有人用他
eavesdrop
监听
call_return
待研究
unroll_loops
待研究
ruri
待研究
refer
呼叫后转,待研究
add-group
待研究
set open=true
待研究,没查到这个通道变量的含义
enum
国内没人用,不讲
<extension name="tod_example" continue="true">
<condition field="${default_password}" expression="^1234$" break="never">
<action application="log" data="CRIT WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING "/>
<action application="log" data="CRIT Open $${conf_dir}/vars.xml and change the default_password."/>
<action application="log" data="CRIT Once changed type 'reloadxml' at the console."/>
<action application="log" data="CRIT WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING "/>
<action application="sleep" data="10000"/>
</condition>
continue=true 和 break=never,这二者的作用有点分不清,回头研究
数了数,800 多行,包含的内容非常多
未完待续