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 还支持下面的变化:
- c=x 设置通道数。
- r=x 设置采样率。
- d=x 设置默认 tone 的持续时长(ontime),单位是毫秒。
- w=x 设置默认 tone 的静音时长(offtime),单位是毫秒。
- v=x 设置默认音量(范围是-63.0dB 至 0.0dB)。
- >=x 设置音量递减的步长,单位是毫秒。
- <=x 设置音量递增的步长,单位是毫秒。
- +=x 设置每个间隔要增加或者减少的 dB 数。
- l=x 设置脚本中每个 tone 重复的次数。
- L=x 设置整个脚本重复的次数。
比如:
<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 遍。
更详细的信息参见:https://freeswitch.org/confluence/display/FREESWITCH/TGML。
作者:小樱桃
来源:FreeSWITCH中文社区
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。