在星号中播放 MOH 而不是铃声

Play MOH instead of ringtone in asterisk

我正在尝试播放音乐文件 ( MOH ) 而不是铃声。

这是我的 extention_custom.conf

[from-internal]
exten = _X.,1,Verbose(call from: ${CALLERID(num)} to ${EXTEN})
same = n,Dial(Local/${CALLERID(num)}@somewhere,100,g|m(tt))

我在 musiconhold_custom.conf:

中定义了 MOH class
[tt]
mode=files
directory=/var/lib/asterisk/moh/tt/
sort=alpha

有时它可以工作,我可以听到音乐而不是铃声,但有时它是无声的。

sip_custom.conf

[*****]
type=friend
secret=***
context=from-internal
username=****
host=***.***.***.***
allow=all
directmedia=yes
nat=yes

我不知道它是否有用,但是当我检查 pCap 文件时,两种情况下的一切都是一样的,但是当我能听到音乐时,有一条额外的线,它是:

SSRC changed from 0xC8F2189B/6305 to 0x1BEA4D36/8

尝试将 directmedia 更改为 no。 SSRC 的变化可能表明 RTP 媒体正在从 asterisk 移交给端点。如果你不允许directmedia,那么asterisk会停留在中间(端点之间),并且总是可以播放moh。

请记住,这可能对您的网络拓扑有影响,但假设您的端点都在同一个带有 asterisk 的 LAN 上,并且您的 asterisk 服务器可以处理 RTP 流量,您不会看到太多变化。

我通过在我的代码的第一个添加原始铃声解决了这个问题

[from-internal]
exten = _X.,1,Verbose(call from: ${CALLERID(num)} to ${EXTEN})
same = n,Dial(Local/${CALLERID(num)}@somewhere,100,g|m(tt))
same = n,Ringing()
same = n,Wait(3)