TGML(Tone Generation Markup Language)用于在 XSwitch 内生成各种铃音。
TGML 可以直接在 XSwitch 界面上设置,如:
set ringback=%(1000,4000,450)
TGML 可以也可以用在 Dialplan 中,如(其中tone_stream是一个文件接口,相当于一个文件):
<action application="playback" data="tone_stream://%(1000,4000,450)">
上述铃音是中国标准的电话回铃音,更多的铃音可以在XSwitch 默认的配置文件中找到(https://git.xswitch.cn/xswitch/xswitch/src/branch/master/conf/vanilla/vars.xml),如上述链接中的cn-ring就代表中国回铃音、us-ring就代表美国回铃音。
一般的定义是%(ontime,offtime,freq1,freq2),ontime(通)和offtime(断)的单位是毫秒,freq1和freq2的单位是赫兹。
cn-ring的定义是%(1000,4000,450),表示 1 秒通,4 秒断,单频 450 赫兹。当然也可以写成%(1000,4000,450,0)。
要播放忙音非常容易,下面的例子播放一个忙音,参数为 350 毫秒通,350 毫秒断,频率为 450 赫兹:
<action application="playback" data="tone_stream://%(350,350,450)">
有时会碰到 700 毫秒通,700 毫秒断的忙音:tone_stream://%(700,700,450),跟 350 毫秒版本的相比显得比较悠长:
<action application="playback" data="tone_stream://%(700,700,450)">
下面这个例子加上loops=4参数,播放 4 个忙音:
<action application="playback" data="tone_stream://%(350,350,450);loops=4">
下面这个例子播放拨号音,也就是只有 60 秒通没有断:
<action application="playback" data="tone_stream://%(60000,0,450)">
还可以直接播放 dtmf,dtmf 的范围当然是 0 到 9,再加上 abcd*#,下面的例子播放 dtmf1234
<action application="playback" data="tone_stream://1234">
下面是一个组合的例子,先播放 5 秒的拨号音,接着播放 dtmf1234,最后播放回铃音:
<action application="playback" data="tone_stream://%(5000,0,450);1234;%(1000,4000,450)">
上面的例子提到了%,loops,以及dtmf,除这些之外,TGML 还支持下面的变化:
比如:
<action application="playback" data="tone_stream://v=-7;>=2;+=.1;%(1400,0,350,440)">
初始音量是-7dB,每隔 2 毫秒音量递减,每次递减 0.1dB。这是一个音量逐渐变低的拨号音。
L跟loops作用类似,但loops节约内存。
L和l可以通过下面的例子做对比就很清楚它们之间的区别:
<action application="playback" data="tone_stream://1234;L=2">
<action application="playback" data="tone_stream://1234;l=2">
L=2把 dtmf1234 全部播放 2 遍,而l=2仅仅是把最后一个 dtmf4 播放 2 遍。
本文分享自 FreeSWITCH中文社区 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!