So konfigurieren Sie Asterisk zum Senden von Audio, bevor ein Anruf hergestellt wird

8

Ist es möglich, Asterisk so zu konfigurieren, dass es RTP-Pakete mit Audio vom Empfänger sendet, bevor die Gegenstelle tatsächlich abhebt?

Dies scheint für einen VoIP-Konformitätstest erforderlich zu sein, den mein Setup bestehen muss. Sie verwenden einen Simulator, um dies zu testen, und wenn ich den anderen Teilnehmer anrufe, nehmen sie den Empfänger ab, ohne ein OK zu senden. Ich kann Audio von der anderen Seite hören, aber sie können mich nicht hören. Ich habe in aussehen directmediasetup, progressinband, prematuremediaaber keiner von denen erreicht , was ich brauche. Ist es überhaupt mit Asterisk machbar?

Umgebung:

Asterisk registriert sich bei einer SIP-Amtsleitung, Hardware-SIP-Telefone sind bei Asterisk registriert. Ausgehende Anrufe werden über die SIP-Leitung geleitet. Asterisk-Version: 1.8.11.

Nikolay Elenkov
quelle
Ich bin mir nicht 100% sicher, ob das, was Sie verlangen, gemäß der SIP-Spezifikation koscher ist (es scheint fehlerhaft zu sein, Daten an einen Empfänger zu senden, bevor dieser bestätigt hat, dass er die Verbindung akzeptiert und empfangsbereit ist). Ich gebe zu, dass ich die genannten Spezifikationen noch nie gelesen habe, damit vielleicht jemand mit mehr Wissen wiegen kann.
voretaq7
Vielen Dank. Ich bin mir auch nicht ganz sicher, aber sie haben ihre eigene Spezifikation :) Und es scheint es zu erfordern. (Um das
öffentliche Telefonnetz
1
Zumindest RFC3960 definiert dies wie folgt: „Frühe Medien beziehen sich auf Medien (z. B. Audio und Video), die ausgetauscht werden, bevor eine bestimmte Sitzung vom angerufenen Benutzer akzeptiert wird. (...) Sie kann unidirektional oder bidirektional sein und vom Anrufer, dem Angerufenen oder beiden generiert werden. '
Nikolay Elenkov
2
Dies scheint zu funktionieren, wenn das Ziel Asterisk mit so etwas wie NoOP(test) Progress() SayAlpha(asdf) Wait(20) ...Dies gibt Audio in beide Richtungen, ohne den Anruf herzustellen. Ich bin mir immer noch nicht sicher, was erforderlich ist, damit es funktioniert, wenn ich eine tatsächliche Gegenstelle anrufe.
Nikolay Elenkov

Antworten:

5

Frühe Medien sind mit Asterisk möglich, jedoch nur in bestimmten Situationen und nur mit der Zusammenarbeit / Unterstützung aller beteiligten Geräte und Dienste. Einige Telefone und / oder Dienstanbieter unterstützen keine frühen Medien. Die Unterstützung für frühe Sprache und frühe DTMF kann variieren.

Sie haben ein bei Asterisk registriertes SIP-Telefon, das eine externe Nummer anruft. Stern wiederum wählt diese Nummer über eine separate SIP-Amtsleitung. Dies sind zwei separate Rufbeine. Asterisk kann dem Anrufer frühe Medien wiedergeben (z. B. einen benutzerdefinierten Klingelton oder Musik in der Warteschleife), und Asterisk kann frühe Medien von der externen Partei über die SIP-Amtsleitung empfangen. Eine Standard-Dial () -Anweisung antwortet jedoch automatisch () und überbrückt die Anrufzweige, wenn der Remote-Teilnehmer antwortet.

Es scheint, dass Sie dieses normalerweise gewünschte Verhalten vermeiden und die Anrufzweige überbrücken möchten, ohne sie zu beantworten (). Mit der Anwendung Dial () können Sie die normalerweise automatische Antwort () mit den Optionen 'd' oder 'D' verschieben. Mir ist keine Dial () -Option bekannt, mit der Sie die Anrufstrecken ohne Answer () ing überbrücken können.

Weitere Informationen und Beispiele für frühe Medien mit Asterisk finden Sie im Asterisk-Wiki .

Roderickm
quelle
1
Danke für deine Antwort. Das ist so ziemlich das, was ich aus Mailinglisten-Posts und Fehlerberichten zusammengestellt habe, die ich online gefunden habe. Ich versuche, eine frühe Stimme zu senden, während ich frühe Medien von der Gegenstelle empfange, bevor sie antworten. Sie antworten also und ich kann das nicht kontrollieren. Ich werde mit den 'd | D'-Optionen experimentieren, danke für den Hinweis. Das eigentliche SIP-Telefon kann eine frühe Stimme senden. Ich kann eine Stimme mit Asterisk aufnehmen, ohne ein OK zu senden. Die meisten Beispiele befassen sich mit frühen Medien, wenn das Ziel Asterisk ist, ebenso wie das von Ihnen verlinkte Wiki.
Nikolay Elenkov
Akzeptiere dies als die detailliertere Antwort. Werde weitere Fragen stellen, sobald ich die Gelegenheit habe, ein paar Dinge auszuprobieren.
Nikolay Elenkov
0

Mit Sternchen ist dies nicht möglich.

Asterisk öffnet den Reverse Media-Pfad nicht vorzeitig, da dadurch einige Geräte nicht mehr funktionieren. Es werden nur vorzeitige Medien in eine Richtung übertragen.

Sie können dies wahrscheinlich ändern, indem Sie den Code neu schreiben (beide Endpunkte müssen dies unterstützen), aber der Standardquellbaum unterstützt dies nicht.

Arheops
quelle
Danke für deine Antwort. Bist du dir da sicher? Ich habe einige Posts gesehen, die besagen, dass es möglich ist, Audio zu empfangen und Inband-DTMF-Töne an einen Remote-IVR zu senden, indem frühe Medien verwendet werden, wenn eine Verbindung über Asterisk besteht. Ich habe derzeit jedoch keine einfache Möglichkeit, es zu testen.
Nikolay Elenkov
Dies ist offensichtlich falsch. Es ist absolut machbar, bidirektionale frühe Medien mit Asterisk zu haben.
Joe Sniderman
Bitte überprüfen Sie das Datum der Antwort. Zu diesem Zeitpunkt war es nicht machbar. Jetzt funktioniert es mit einigen Geräten, nicht mit allen.
Arheops
Frühe Medien sind mit Sternchen möglich, erfordern jedoch einige Kenntnisse, und es gibt nur eine begrenzte Anzahl von Funktionen, die frühe Medien senden können. Wählen ist standardmäßig keine davon, aber Sie können Progress () senden und nachverfolgen eine Wiedergabe (unabhängig von der Datei, keine Antwort) oder die Option "n" mit Hintergrund (), bei der die meisten Netzbetreiber die Weitergabe von Audio an einen Anrufer nicht zulassen, bevor der Anruf beantwortet wird.
Frank Waller
0

Warum nicht einfach Asterisk ganz aus dem Medienpfad nehmen? * *

directmedia=yes
directrtpsetup=yes
prematuremedia=no ;this does the exact opposite of what everyone assumes it does
progressinband=no

Asterisk sendet die Einladung mit der im SDP angegebenen IP-Adresse Ihres Telefons an die andere Seite. Wenn die andere Seite einen Sitzungsfortschritt von 183 ausgibt, wird dieser von Asterisk mit der IP-Adresse der anderen Seite im SDP an Ihr Telefon zurückgesendet.

Solange Ihr Telefon dies unterstützt, haben Sie bidirektionale frühe Medien, ohne dass ein Sternchen die Möglichkeit hat, sich in die Quere zu kommen und es durcheinander zu bringen.

* Nun, das Sternchen lädt sich am Ende des Anrufs für einen Moment wieder ein, aber ansonsten bleibt es ganz draußen

Joe Sniderman
quelle
Unterstützung für beide UA an beiden Enden erforderlich, nicht nur am Telefon. Sie haben auch ein Risiko ungleich Null, Sternchen aufgrund von Direktmedien zu vermeiden (entfernen Sie den Sternchen-Server überhaupt aus dem Anruf). Die Directrtpsetup-Funktion war zum Zeitpunkt der Antwort nicht verfügbar.
Arheops
Richtig in Bezug auf directrtpsetup zum Zeitpunkt der Antwort. Trotzdem können Sie sicher auf dem Medienpfad bleiben und über bidirektionale Frühmedien verfügen. Es versteht sich von selbst, dass beide UAs dies unterstützen müssen. Im speziellen Fall des OP ist bekannt, dass dies bei der anderen UA der Fall ist, jedoch nicht bekannt, wenn dies beim OP der Fall ist.
Joe Sniderman
0

Es gibt zwei Möglichkeiten. Entweder 1 mit 183 frühen Medien. Der andere Weg ist die Verwendung der Answer () -Anwendung.

In beiden Fällen kommen die Medien von der Asterisk-Seite.

;; 183 - Sitzungsfortschrittsmethode.
exten => _X., 1, Progress ()
exten => _X.n, Wiedergabe (tt-monkeys)
;; 200 - Antwort
exten => _X., 1, Answer ()
exten => _X., n, Wiedergabe (tt-Affen)

Faheem
quelle