- opensips脚本
- freeswitch脚本
- 拓展
- 问题
- 拓展
- 1.常用diaplan
- set用于设置一个通道变量
- echo即回声,这个我们已经很熟悉了,它在调试的时候比较有用
- info在调试的时候也比较有用,它会在日志中打印全部的通道变 量
- answer用于应答一路呼叫。FreeSWITCH做被叫时,如果想给主叫 方放音,则必须应答后才可以
- bridge负责桥接另一条腿(b-leg),它的参数是一个呼叫字符 串
- playback用于给Channel放音。比如,如果需要对主叫放音,我们 可以这样使用playback
- sleep用于设置可以等待/暂停的一段时间,单位默为毫秒
- ring_ready用于在SIP中给对方回180消息,即通知对方可以振铃 了
- pre_answer用于在SIP中给对方回183消息,后续的playback之类的 动作将作为早期媒体(Early Media)给对方发过去,如彩铃音
- read用于实现播放声音并且等待接收DTMF按键
- play_and_get_digits与read类似,但它比read更高级,我们先来看 一下它的参数
- https://www.runoob.com/regexp/regexp-syntax.html">2.正则表达式 https://www.runoob.com/regexp/regexp-syntax.html
- 3.录音
opensips脚本
#与前几节课的代码合并 has_totag是确定是否有tagif(is_method("INVITE")&&!has_totag()){#通过dispatcher查找fsif(ds_is_in_list("$si","$sp","1")){#通过查找location表中是否有该注册账户if(!lookup("location","m")){t_reply("404","Not Found");exit;}record_route();t_relay();exit;}#第四课if(!proxy_authorize("","subscriber")){proxy_challenge("","0");exit;}if(!ds_select_dst("1","1")){sl_send_reply("500","Service full");exit;}consume_credentials();record_route();t_relay();exit;}
freeswitch脚本
<extension name="PlayBack Test"><condition field="destination_number" expression="^(1002)$"><action application="record_session" data="/root/record-$1.wav"/><action application="bridge" data="sofia/external/$1@192.168.2.200:18627"/><action application="set" data="This is a test"/></condition></extension>
拓展
个性铃声,编辑 conf/autoload_configs/portaudio.conf.xml,将ring-file一行修改为下面的 样子,其中,value指定你的声音文件的路径
<param name="ring-file" value="/home/your_name/your_ring_file.wav"/>#重新加载模块freeswitch> reloadxmlfreeswitch> reload mod_portaudio
问题
1.如果出现连接错误,多看fs_cli打印日志
2.铃声没有
3.正则表达式需要详细查看
拓展
1.常用diaplan
set用于设置一个通道变量
<action application="set" data="my_var=123456"、》
echo即回声,这个我们已经很熟悉了,它在调试的时候比较有用
<action applicatioin="echo"/>
info在调试的时候也比较有用,它会在日志中打印全部的通道变 量
<action applicaiton="info"/>
answer用于应答一路呼叫。FreeSWITCH做被叫时,如果想给主叫 方放音,则必须应答后才可以
<action application="answer"/>
bridge负责桥接另一条腿(b-leg),它的参数是一个呼叫字符 串
<action application="bridge" data="user/1000">bridge操作是阻塞的,它会一直等到b-leg释放后才继续往下走。
playback用于给Channel放音。比如,如果需要对主叫放音,我们 可以这样使用playback
<action application="playback" data="/tmp/test.wav"/>
sleep用于设置可以等待/暂停的一段时间,单位默为毫秒
<action application="sleep" data="1000"/>
ring_ready用于在SIP中给对方回180消息,即通知对方可以振铃 了
<action application="ring_ready" data="1000"/>
pre_answer用于在SIP中给对方回183消息,后续的playback之类的 动作将作为早期媒体(Early Media)给对方发过去,如彩铃音
<action application="ring_ready" data="1000"/><action application="playback" data="/tmp/music.wav"/>
read用于实现播放声音并且等待接收DTMF按键
play_and_get_digits与read类似,但它比read更高级,我们先来看 一下它的参数
2.正则表达式 https://www.runoob.com/regexp/regexp-syntax.html
https://www.zhihu.com/question/48219401/answer/742444326
3.录音
第11章
单腿录音
<extension name="record"><condition field="destination_number" expression="^rec(.*)$"><action application="answer"/><action application="playback" data="tone_stream://%(100,1000,800)"/><action application="record" data="/tmp/$1.wav"/></condition></extension>
对两条腿的通话进行录音
<extension name="record"><condition field="destination_number" expression="^(100[0-9])$"><action application="record_session" data="/tmp/record-$1.wav"/><action application="bridge" data="user/$1"/></condition></extension>

