2 Stimmen

Erhalten der RINGING-Antwort auf SIP UAC, ohne sie vom anderen UAC zu senden

Ich hoffe, dass dies meine letzte Frage zu diesem SIP-Thema sein wird. Ich habe es geschafft, das letzte Problem zu überwinden, indem ich einen Freund gebeten habe, mir von einem entfernten Computer aus zu helfen. Ich kann eine Verbindung zwischen den Computern herstellen, aber hier ist die Sache: Gemäß allen Beispielen, die ich gesehen habe, sollte der Angerufene die Klingelantwort aufrufen. In meinem Anwendungsfall habe ich es jedoch noch nicht implementiert, erhalte aber dennoch vom Anrufer UAC eine Klingelantwort. Dies sind die SIP-Nachrichten auf der Anruferseite:

Ausgehender Request 5:

INVITE sip:320@hostName.hn SIP/2.0
Contact: "Client 310" 
From: "Client 310" 
Max-Forwards: 32
CSeq: 2 INVITE
Call-ID: f8d171d3278788df9e03eb9cf3acba70@xxx.xxx.x.xxx
Allow: INVITE,CANCEL,ACK,BYE,OPTIONS
Content-Type: application/sdp
Proxy-Authorization: Digest username="310",nonce="012afffb",realm="asterisk",uri="sip:310@hostName.hn",algorithm=MD5,response="d19ca5b98450b4be7bd4045edb8a3a2f"
Via: SIP/2.0/UDP hostName.hn:5060
To: "Client 320" ;tag=as5a8fa200
Content-Length: 257

v=0
o=310 7108915969559970847 7108915969559970847 IN IP4 xxx.xxx.x.xxx
s=-
i=Nu-Art Software - TacB0sS VoIP information
c=IN IP4 xxx.xxx.x.xxx
m=audio 3312 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000

Eingehende Antwort 6:

SIP/2.0 100 Trying
Via: SIP/2.0/UDP hostName.hn:5060;branch=f8d171d3278788df9e03eb9cf3acba70-xxx.xxx.x.xxx-2-invite-hostName.hn-5060333732;received=79.181.6.233
From: "Client 310" 
To: "Client 320" ;tag=as5a8fa200
Call-ID: f8d171d3278788df9e03eb9cf3acba70@xxx.xxx.x.xxx
CSeq: 2 INVITE
User-Agent: Freeswitch 1.2.3
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY,INFO
Supported: replaces
Contact: 
Content-Length: 0

Eingehende Antwort 7:

SIP/2.0 180 Klingeln
Via: SIP/2.0/UDP hostName.hn:5060;branch=f8d171d3278788df9e03eb9cf3acba70-xxx.xxx.x.xxx-2-invite-hostName.hn-5060333732;received=79.181.6.233
From: "Client 310" 
To: "Client 320" ;tag=as5a8fa200
Call-ID: f8d171d3278788df9e03eb9cf3acba70@xxx.xxx.x.xxx
CSeq: 2 INVITE
User-Agent: Freeswitch 1.2.3
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY,INFO
Supported: replaces
Contact: 
Content-Length: 0

Anruf an: 320@hostName.hn klingelt

Eingehende Antwort 8:

SIP/2.0 183 Sitzungsfortschritt
Via: SIP/2.0/UDP hostName.hn:5060;branch=f8d171d3278788df9e03eb9cf3acba70-xxx.xxx.x.xxx-2-invite-hostName.hn-5060333732;received=79.181.6.233
From: "Client 310" 
To: "Client 320" ;tag=as5a8fa200
Call-ID: f8d171d3278788df9e03eb9cf3acba70@xxx.xxx.x.xxx
CSeq: 2 INVITE
User-Agent: Freeswitch 1.2.3
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY,INFO
Supported: replaces
Contact: 
Content-Type: application/sdp
Content-Length: 264

v=0
o=root 27669 27669 IN IP4 yy.yy.yy.yy
s=session
c=IN IP4 yy.yy.yy.yy
t=0 0
m=audio 10914 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

Eingehende Antwort 9:

SIP/2.0 503 Dienst nicht verfügbar
Via: SIP/2.0/UDP hostName.hn:5060;branch=f8d171d3278788df9e03eb9cf3acba70-xxx.xxx.x.xxx-2-invite-hostName.hn-5060333732;received=79.181.6.233
From: "Client 310" 
To: "Client 320" ;tag=as5a8fa200
Call-ID: f8d171d3278788df9e03eb9cf3acba70@xxx.xxx.x.xxx
CSeq: 2 INVITE
User-Agent: Freeswitch 1.2.3
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY,INFO
Supported: replaces
Content-Length: 0

Ich antworte nicht auf die Einladung, deshalb passiert das alles, aber warum erhalte ich ein Klingeln, wenn ich es nicht bin, der es sendet.

Danke,

Adam.

Update:

Wenn Sie die Zeiten bemerken, zu denen ich die Antworten erhalte:

Eingehende Antwort 7: 1275879030656 Klingeln

Eingehende Antwort 8: 1275879038734 Sitzungsfortschritt

Eingehende Antwort 9: 1275879038781 Dienst nicht verfügbar

Ich verstehe die Logik hier nicht. Ich habe 8 Sekunden von der ersten Klingelantwort bis zum Sitzungsfortschritt, aber vom Sitzungsfortschritt zum Dienst nicht verfügbar habe ich 47 ms?

Wie ergibt das Sinn? 50 ms, um was zu tun? Zeit, um die Antwort zu analysieren + Zeit, um eine RTP-Sitzung zu öffnen + Zeit, um eine Antwort zu erstellen + Zeit, um SDP zu erstellen + Zeit, die der Server benötigt, um die Nachricht zu erhalten - die Zeit, die die 503-Nachricht benötigt, um mein UAC zu erreichen. Ist das nicht ein bisschen knapp bemessen? Wann soll ich dem Server antworten?

Danke nochmal für all deine Hilfe, Wiz.

3voto

sipsorcery Punkte 29399

Weil der FreeSwitch-Server, den Sie anrufen, ein B2BUA ist und so konfiguriert werden muss, dass er unabhängig vom weitergeleiteten Anrufbein ein Freizeichen erzeugt. Wenn der Server, den Sie anrufen, ein SIP-Proxy ohne B2BUA-Funktionen wäre, würden Sie kein Freizeichen oder andere Antworten erhalten, bis das SIP-Gerät am anderen Ende geantwortet hätte.

Die Antworten 7 und 8 lassen Ihr Softphone klingeln. Bei Antwort 7, 180 Ringing, liegt es an Ihrem Softphone, den Ton zu erzeugen. Bei Antwort 8, 183 Session Progress mit RTP, erhält Ihr Softphone eine Fortschrittsanzeige vom FreeSwitch-Server, die es rendern sollte.

Aktualisierung: Der Grund für die von Ihnen beobachteten Zeitabläufe hängt erneut damit zusammen, dass Sie den Anruf an einen B2BUA, in diesem Fall FreeSwitch, tätigen. Es scheint, als ob er so konfiguriert ist, dass automatisch eine Ringing-Antwort gesendet wird, wenn ein neuer Anruf eingeht, und in der Zwischenzeit seinen Wahlplan bearbeitet, um festzustellen, was mit dem Anruf geschehen soll. Irgendwo in diesem Wahlplan scheint es einen Befehl zur Anzeige von Sitzungsfortschritten zu geben, was die 183-Antwort erklärt, aber dann muss der Wahlplan beendet werden oder auf einen Fehler stoßen, was zur 503-Antwort führt.

Es ist unwahrscheinlich, dass Sie das gleiche Muster von Antworten erhalten würden, wenn Sie direkt mit einem UAS kommunizieren würden.

Die einzige Handlung, die von Ihrem Ende des Anrufs erforderlich ist, Sie agieren als UAC, ist das ACK der abschließenden Antwort, in diesem Fall die 503. Ihr SIP-Stack muss etwas mit den 180- und 183-Antworten tun, um dem Benutzer mitzuteilen, was passiert, aber Sie müssen nicht darauf antworten, da es sich um sogenannte informative Antworten handelt und der UAS keine Antwort darauf wünscht. Tatsächlich gibt es eine Erweiterung des SIP-Standards, die sich mit der zuverlässigen Verarbeitung provisorischer Antworten befasst, aber sie ist optional und ich würde mir an Ihrer Stelle darüber keine Gedanken machen.

0 Stimmen

Sie meinen, RTP-Pakete zu senden?

0 Stimmen

Generieren bezieht sich auf das Audio, das Ihr SIP-Gerät abspielt, wenn es eine bestimmte Antwort ohne RTP empfängt, wie z.B. 180 Ringing (180 Rufen kann auch RTP haben, aber es ist optional). Rendern bezieht sich auf das Audio, das Ihr SIP-Gerät abspielen wird, wenn ein RTP-Stream verfügbar ist. Generieren und Rendern sind keine formalen Begriffe, sondern beschreibende, die ich verwendet habe, um zu erklären, was passiert.

0 Stimmen

Vielen Dank für die Erklärung. Ich verstehe, was ich tun muss, ich scheine nur die Reihenfolge der Dinge nicht zu verstehen, wie Sie im Update sehen können, den Zahlen stimmen einfach nicht überein. Wenn ich anfangen soll, RTP-Pakete zu übertragen, muss ich die IP zum Übertragen erhalten, und sie kommt nur mit dem Session Progress. Und wenn Sie sich den Zeitrahmen ansehen, vielleicht liege ich falsch, aber das scheint mir albern, da der Server 1 Sekunde warten könnte, ich aber 50 ms Zeit habe zu antworten?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X