XSwitch通信百科
TGML
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 默认的配置文件中找到,如上述链接中的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。