- Mitglied seit
- 6 Mai 2004
- Beiträge
- 1,864
- Punkte für Reaktionen
- 0
- Punkte
- 0
Ich ärgerte mich schon seit Jahr und Tag darüber dass das senden von DTMF Tönen mittels speziell SendDTMF() und dtmfmode=rfc2833 nicht stabil funktionierte.
Mit Providern wie sipgate, die dtmfmode=info unterstützen, ist SendDTMF() dagegen nie ein Problem gewesen, das Problem tritt nur mit Providern auf die "lediglich" dtmfmode=rfc2833 unterstützen. Immer wieder werden Zahlen "verschluckt" oder doppelt übermittelt. Ein Graus.
Nach erneutem Frust mit sipphone.com (unterstützt auch nur rfc2833), habe ich angefangen (wieder einmal) nach einer Lösung zu googlen und bin schließlich fündig geworden:
Man öffne rtp.c und ändere diese Zeile:
if (rtp->lasteventseqn <= seqno || rtp->resp == 0 ||
(rtp->lasteventseqn >= 65530 && seqno <= 6)) {
wie folgt um:
if ((rtp->lasteventseqn <= seqno && rtp->resp == 0) || (rtp->lasteventseqn >= 65530 && seqno <= 6)) {
(Klammersetzung geändert). Dann Asterisk neu kompilieren.
Die zu ändernde Zeile taucht zweimal im Code auf, ich habe sie auch zweimal ersetzt - SendDTMF() funktioniert jetzt seit Tagen bei mir einwandfrei mit rfc2833!
Dieser Patch is allerdings nie offiziell geworden (warum weiß der Geier), er stammt aus der Asterisk-dev Liste.
Vielleicht hilft es auch dem einen oder anderen von Euch.
Gruß,
Tin
Mit Providern wie sipgate, die dtmfmode=info unterstützen, ist SendDTMF() dagegen nie ein Problem gewesen, das Problem tritt nur mit Providern auf die "lediglich" dtmfmode=rfc2833 unterstützen. Immer wieder werden Zahlen "verschluckt" oder doppelt übermittelt. Ein Graus.
Nach erneutem Frust mit sipphone.com (unterstützt auch nur rfc2833), habe ich angefangen (wieder einmal) nach einer Lösung zu googlen und bin schließlich fündig geworden:
Man öffne rtp.c und ändere diese Zeile:
if (rtp->lasteventseqn <= seqno || rtp->resp == 0 ||
(rtp->lasteventseqn >= 65530 && seqno <= 6)) {
wie folgt um:
if ((rtp->lasteventseqn <= seqno && rtp->resp == 0) || (rtp->lasteventseqn >= 65530 && seqno <= 6)) {
(Klammersetzung geändert). Dann Asterisk neu kompilieren.
Die zu ändernde Zeile taucht zweimal im Code auf, ich habe sie auch zweimal ersetzt - SendDTMF() funktioniert jetzt seit Tagen bei mir einwandfrei mit rfc2833!
Dieser Patch is allerdings nie offiziell geworden (warum weiß der Geier), er stammt aus der Asterisk-dev Liste.
Vielleicht hilft es auch dem einen oder anderen von Euch.
Gruß,
Tin