11. Beispiele für Nachrichtenflüsse
Der nächste Abschnitt zeigt Beispiele für Anrufverläufe und Nachrichten. Die Verläufe und Beschreibungen sind nicht normativ. Beachten Sie, dass in diesen Beispielen alle INVITE-Nachrichten, die von einem UA der Gruppe gesendet werden, als From die gemeinsame AOR (in diesem Fall sip:[email protected]) haben, und alle an die Gruppe gesendeten INVITE-Nachrichten als Request-URI die gemeinsame AOR haben. Alle anderen Anforderungen würden nicht für diese Funktion gelten und würden mit normalen SIP-Mechanismen behandelt.
Beachten Sie, dass die ersten 12 Beispiele davon ausgehen, dass der Appearance Agent über Dialogzustandsereignisse informiert ist. Das Beispiel in Abschnitt 11.13 zeigt den Fall, dass dies nicht zutrifft, und infolgedessen initiiert der Appearance Agent ein Abonnement für Benutzer der gemeinsamen AOR. Jedes der anderen Anrufverlaufsbeispiele hätte diesen Betriebsmodus zeigen können, da er ebenso gültig ist.
11.1. Registrierung und Abonnement
Bob und Alice befinden sich in einer gemeinsame Erscheinungsgruppe, die durch die gemeinsame Erscheinungs-AOR sip:[email protected] identifiziert wird. Bob REGISTERt sich mit dem Kontakt sip:[email protected]. Alice REGISTERt sich mit dem Kontakt sip:[email protected].
Die UAs von Alice und Bob abonnieren das Dialogpaket für die Erscheinungs-AOR und veröffentlichen den Dialogzustand an den Appearance Agent. Die Nachrichtenaustausche zwischen Registrar, Appearance Agent, Alice und Bob sind unten dargestellt. Die folgenden Anrufverlaufsbeispiele zeigen nicht die Authentifizierung von Abonnements, Veröffentlichungen und Benachrichtigungen. Es sollte beachtet werden, dass aus Sicherheitsgründen alle Veröffentlichungen und Abonnements autorisiert werden müssen, bevor sie akzeptiert werden.
Beachten Sie außerdem, dass Registrierungen und Abonnements alle von Alice in Intervallen erneuert werden müssen, die durch die vom Registrar oder Appearance Agent zurückgegebenen Ablaufintervalle bestimmt werden.
Registrar Appearance Agent Alice Bob
| | | |
| | | |
|<--------------------------- REGISTER F1<| |
| | | |
|>F2 200 OK ----------------------------->| |
| | | |
| |<----- SUBSCRIBE F3<| |
| | | |
| |>F4 200 OK -------->| |
| | | |
| |>F5 NOTIFY -------->| |
| | | |
| |<-------- 200 OK F6<| |
| | | |
|<-------------------------------------------- REGISTER F7<|
| | | |
|>F8 200 OK ---------------------------------------------->|
| | | |
| |<---------------------- SUBSCRIBE F9<|
| | | |
| |>F10 200 OK ------------------------>|
| | | |
| |>F11 NOTIFY ------------------------>|
| | | |
| |<------------------------ 200 OK F12<|
| | | |
Abbildung 1. Beispiel für Registrierung und Abonnement
F1-F2: Alice registriert die AOR mit dem Kontakt: <sip:[email protected]>
F1 Alice ----> Registrar
REGISTER sip:registrar.example.com SIP/2.0
Via: SIP/2.0/UDP ua1.example.com;branch=z9hG4bK527b54da8ACC7B09
From: <sip:[email protected]>;tag=CDF9A668-909E2BDD
To: <sip:[email protected]>
CSeq: 2 REGISTER
Call-ID: d3281184-518783de-cc23d6bb
Contact: <sip:[email protected]>
Max-Forwards: 70
Expires: 3600
Content-Length: 0
F2 Registrar ----> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP ua1.example.com;branch=z9hG4bK527b54da8ACC7B09
CSeq: 2 REGISTER
Call-ID: d3281184-518783de-cc23d6bb
From: <sip:[email protected]>;tag=CDF9A668-909E2BDD
To: <sip:[email protected]>;tag=1664573879820199
Contact: <sip:[email protected]>;expires=3600
Content-Length: 0
F3 to F6: Alice abonniert auch die mit der Erscheinungs-AOR verbundenen Ereignisse. Der Appearance Agent benachrichtigt Alice über den Status.
F3 Alice ----> Appearance Agent
SUBSCRIBE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ua1.example.com;branch=z9hG4bKf10fac97E7A76D6A
From: <sip:[email protected]>;tag=925A3CAD-CEBB276E
To: <sip:[email protected]>
CSeq: 91 SUBSCRIBE
Call-ID: ef4704d9-bb68aa0b-474c9d94
Contact: <sip:[email protected]>
Event: dialog;shared
Accept: application/dialog-info+xml
Max-Forwards: 70
Expires: 3700
Content-Length: 0
F4 Appearance Agent ----> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP ua1.example.com;branch=z9hG4bKf10fac97E7A76D6A
CSeq: 91 SUBSCRIBE
Call-ID: ef4704d9-bb68aa0b-474c9d94
From: <sip:[email protected]>;tag=925A3CAD-CEBB276E
To: <sip:[email protected]>;tag=1636248422222257
Allow-Events: dialog
Expires: 3700
Contact: <sip:appearanceagent.example.com>
Content-Length: 0
F5 Appearance Agent ----> Alice
NOTIFY sip:[email protected] SIP/2.0
From: <sip:[email protected]>;tag=1636248422222257
To: <sip:[email protected]>;tag=925A3CAD-CEBB276E
Call-ID: ef4704d9-bb68aa0b-474c9d94
CSeq: 232 NOTIFY
Via: SIP/2.0/UDP appearanceagent.example.com;branch=z9hG4bK1846
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Event: dialog;shared
Subscription-State: active;expires=3000
Contact: <sip:appearanceagent.example.com>
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
version="40"
state="full"
entity="sip:[email protected]">
</dialog-info>
F6 Alice ----> Appearance Agent
SIP/2.0 200 OK
Via: SIP/2.0/UDP appearanceagent.example.com;branch=z9hG4bK1846
From: <sip:[email protected]>;tag=1636248422222257
To: <sip:[email protected]>;tag=925A3CAD-CEBB276E
CSeq: 232 NOTIFY
Call-ID: ef4704d9-bb68aa0b-474c9d94
Contact: <sip:[email protected]>
Content-Length: 0
F7 Bob ----> Registrar
REGISTER sip:registrar.example.com SIP/2.0
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4b53b54d87B
From: <sip:[email protected]>;tag=34831131
To: <sip:[email protected]>
CSeq: 72 REGISTER
Call-ID: 139490230230249348
Contact: <sip:[email protected]>
Max-Forwards: 70
Expires: 3600
Content-Length: 0
F8 Registrar ----> Bob
SIP/2.0 200 OK
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4b53b54d87B
From: <sip:[email protected]>;tag=34831131
To: <sip:[email protected]>;tag=fkwlwqi1
CSeq: 72 REGISTER
Call-ID: 139490230230249348
Contact: <sip:[email protected]>;expires=3200
Contact: <sip:[email protected]>;expires=3600
Content-Length: 0
11.2. Erscheinungsauswahl für einen eingehenden Anruf
Im folgenden Anrufverlauf befinden sich Bob und Alice in einer gemeinsame Erscheinungsgruppe. Carol ruft die AOR der gemeinsame Erscheinungsgruppe an. Der Appearance Agent sendet NOTIFY-Nachrichten an Alice und Bob, um ihnen mitzuteilen, welche Erscheinung der Anruf verwendet. Die Geräte von Alice und Bob werden beide über den eingehenden Anruf alarmiert. Bob nimmt den Anruf an.
Beachten Sie, dass es möglich ist, dass sowohl Alice als auch Bob den Anruf annehmen und 200 (OK)-Antworten an Carol senden. Es liegt an Carol, diese Situation aufzulösen. Typischerweise sendet Carol ACKs an beide 200 OK, sendet aber ein BYE, um einen der Dialoge zu beenden. Infolgedessen erhält entweder Alice oder Bob das BYE und veröffentlicht, dass ihr Dialog beendet ist. Wenn Carol jedoch sowohl Alice als auch Bob antwortet und beide Dialoge aktiv hält, muss der Appearance Agent die Situation auflösen, indem er den Dialog von Alice oder Bob auf eine andere Erscheinung verschiebt.
Alle NOTIFY-Nachrichten im folgenden Anrufverlauf tragen Dialogereignisse, und der Einfachheit halber werden nur Dialogzustände erwähnt. Aus Gründen der Kürze werden die Details einiger Nachrichten unten nicht gezeigt. Beachten Sie, dass die Reihenfolge von F2 - F5 und F7 - F8 umgekehrt sein könnte.
Forking Appearance
Carol Proxy Agent Alice Bob
| | | | |
|>F1 INVITE >| | | |
| |< - - - - - >| | |
| | |>F2 NOTIFY ----------->|
| | | | |
| | |<F3 200 OK -----------<|
| | | | |
| | |>F4 NOTIFY ->| |
| | | | |
| | |<-200 OK F5-<| |
|<- 100 F6 -<| | | |
| |>F7 INVITE (appearance=1) ---------->|
| | | | |
| |>F8 INVITE (appearance=1) >| |
| | | | |
| |<-------------------- Ringing 180 F9<|
|< 180 F10 -<| | | |
| |<--------- 180 Ringing F11<| |
|< 180 F12 -<| | | |
| | | | |
| |<------------------------ 200 OK F13<|
|< 200 F14 -<| | | |
| | | | |
| |>F15 CANCEL -------------->| |
| | | | |
| |<-------------- 200 OK F16<| |
| | | | |
| |<Request Cancelled 487 F17<| |
| | | | |
| |>F18 ACK ----------------->| |
|>F19 ACK -->| | | |
| |>F20 ACK --------------------------->|
| | | | |
|<=============Both way RTP established===========>|
| | | | |
| |< - - - - - >| | |
| | | | |
| | |>F21 NOTIFY >| |
| | | | |
| | |<- 200 F22 -<| |
| | | | |
| | |>F23 NOTIFY ---------->|
| | | | |
| | |<F24 200 OK ----------<|
| | | |
Abbildung 2. Beispiel für die Erscheinungsauswahl für einen eingehenden Anruf
F4 Appearance Agent ----> Alice
NOTIFY sip:[email protected] SIP/2.0
From: <sip:[email protected]>;tag=151702541050937
To: <sip:[email protected]>;tag=18433323-C3D237CE
Call-ID: 1e361d2f-a9f51109-bafe31d4
CSeq: 12 NOTIFY
Via: SIP/2.0/UDP appearanceagent.example.com;branch=z9hG4bK1403
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Event: dialog;shared
Subscription-State: active;expires=2800
Contact: <sip:appearanceagent.example.com>
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="13"
state="partial"
entity="sip:[email protected]">
<dialog id="2a7294823093f5274e3fd2ec54a2d76c"
call-id="14-1541707345"
remote-tag="44BAD75D-E3128D42"
direction="recipient">
<sa:appearance>1</sa:appearance>
<state>trying</state>
<remote>
<identity>sip:[email protected]</identity>
</remote>
</dialog>
</dialog-info>
F7 Proxy ----> Bob
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ua3.example.com;branch=z9hG4bK4324ea
Via: SIP/2.0/UDP proxy.example.com;branch=z9hG4bK38432ji
From: <sip:[email protected]>;tag=44BAD75D-E3128D42
To: <sip:[email protected]>
CSeq: 106 INVITE
Call-ID: 14-1541707345
Contact: <sip:[email protected]>
Max-Forwards: 69
Alert-Info: <urn:alert:service:normal>;appearance=1
Content-Type: application/sdp
Content-Length: ...
v=0
o=- 1102980499 1102980499 IN IP4 ua3.example.com
s=
c=IN IP4 ua3.example.com
t=0 0
m=audio 2238 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
F21 Appearance Agent ----> Alice
NOTIFY sip:[email protected] SIP/2.0
From: <sip:[email protected]>;tag=151702541050937
To: <sip:[email protected]>;tag=18433323-C3D237CE
Call-ID: 1e361d2f-a9f51109-bafe31d4
CSeq: 13 NOTIFY
Via: SIP/2.0/UDP appearanceagent.example.com;branch=z9hG4bK4164F03j
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Event: dialog;shared
Subscription-State: active;expires=2500
Contact: <sip:appearanceagent.example.com>
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="17"
state="partial"
entity="sip:[email protected]">
<dialog id="2a7294823093f5274e3fd2ec54a2d76c"
call-id="14-1541707345"
remote-tag="44BAD75D-E3128D42"
local-tag="7349dsfjkFD03s"
direction="recipient">
<sa:appearance>1</sa:appearance>
<state>confirmed</state>
<local>
<target>sip:[email protected]</target>
</local>
<remote>
<identity>sip:[email protected]</identity>
</remote>
</dialog>
</dialog-info>
11.3. Ausgehender Anruf ohne Belegung einer Erscheinung
In diesem Szenario tätigt der UA von Bob einen Anruf, ohne zuvor eine Erscheinungsnummer auszuwählen/zu belegen. Nachdem Bob die INVITE gesendet hat, weist der Appearance Agent eine Erscheinungsnummer dafür zu und benachrichtigt sowohl Alice als auch Bob.
Carol Proxy Alice Appearance Agent Bob
| | | | |
| | | | |
| |<------------------------------------- INVITE F1<|
| | | | |
| |>F2 100 Trying --------------------------------->|
|<-- INVITE F3<| | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<-- NOTIFY F4<| |
| | | | |
| | |>F5 200 OK -->| |
| | | |------- NOTIFY F6>|
| | | | |
| | | |<F7 200 OK ------<|
|>F8 180 ---->| | | |
| |>F9 180 Ringing -------------------------------->|
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F10<| |
| | | | |
| | |>F11 200 OK ->| |
| | | |------ NOTIFY F12>|
| | | | |
| | | |<F13 200 OK -----<|
|>F14 200 OK ->| | | |
| |>F15 200 OK ------------------------------------>|
| | | | |
| |<--------------------------------------- ACK F16<|
|<---- ACK F17<| | | |
| | | | |
|<================= Both way RTP established ===================>|
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F18<| |
| | | | |
| | |>F19 200 OK ->| |
| | | |------ NOTIFY F20>|
| | | | |
| | | |<F21 200 OK -----<|
| | | | |
Abbildung 3. Beispiel für einen ausgehenden Anruf ohne Belegung einer Erscheinung
F1 Bob ----> Proxy
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK98c87c52123A08BF
From: <sip:[email protected]>;tag=15A3DE7C-9283203B
To: <sip:[email protected]>
CSeq: 1 INVITE
Call-ID: f3b3cbd0-a2c5775e-5df9f8d5
Contact: <sip:[email protected]>
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 223
v=0
o=- 1102980499 1102980499 IN IP4 ua2.example.com
s=IP SIP UA
c=IN IP4 ua2.example.com
t=0 0
a=sendrecv
m=audio 2236 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
F4 Appearance Agent ----> Alice
NOTIFY sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP appearanceagent.example.com;branch=z9hG4bK81d84f62
From: <sip:[email protected]>;tag=1636248422222257
To: <sip:[email protected]>;tag=925A3CAD-CEBB276E
Call-ID: ef4704d9-bb68aa0b-474c9d94
CSeq: 233 NOTIFY
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Event: dialog;shared
Subscription-State: active;expires=2200
Contact: <sip:appearanceagent.example.com>
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="27"
state="partial"
entity="sip:[email protected]">
<dialog id="fa02538339df3ce597f9e3e3699e28fc"
call-id="f3b3cbd0-a2c5775e-5df9f8d5"
local-tag="15A3DE7C-9283203B" direction="initiator">
<sa:appearance>1</sa:appearance>
<sa:exclusive>false</sa:exclusive>
<state>trying</state>
<local>
<target uri="sip:[email protected]">
</target>
</local>
</dialog>
</dialog-info>
F6 Appearance Agent ----> Bob
NOTIFY sip:[email protected] SIP/2.0
From: <sip:[email protected]>;tag=497585728578386
To: <sip:[email protected]>;tag=633618CF-B9C2EDA4
Call-ID: a7d559db-d6d7dcad-311c9e3a
CSeq: 7 NOTIFY
Via: SIP/2.0/UDP appearanceagent.example.com
;branch=z9hG4bK1711759878512309
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Event: dialog;shared
Subscription-State: active;expires=2000
Contact: <sip:appearanceagent.example.com>
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="78"
state="partial"
entity="sip:[email protected]">
<dialog id="02538339hfgdf3ce597f9e3egkl3699e28fc"
call-id="f3b3cbd0-a2c5775e-5df9f8d5"
local-tag="15A3DE7C-9283203B" direction="initiator">
<sa:appearance>1</sa:appearance>
<sa:exclusive>false</sa:exclusive>
<state>trying</state>
<local>
<target uri="sip:[email protected]">
</target>
</local>
</dialog>
</dialog-info>
11.4. Ausgehender Anruf mit Belegung einer Erscheinung
In diesem Szenario sendet der UA von Bob ein Dialogereignis-PUBLISH mit dem Zustand (trying), das eine Erscheinungsnummer auswählt/belegt, bevor die INVITE gesendet wird. Nach Erhalt der 200 (OK) vom Appearance Agent, die die Erscheinungsnummer bestätigt, sendet der UA von Bob die INVITE an Carol und baut eine Sitzung auf. Aus Gründen der Kürze sind Details einiger Nachrichten in den Nachrichtenflüssen nicht enthalten. Der UA von Bob fügt so viele der im Voraus bestimmbaren Dialoginformationen aus F7 ein wie möglich. In diesem Fall ist mindestens der Contact-URI enthalten, was es dem Appearance Agent ermöglicht, die INVITE mit dem PUBLISH zu korrelieren.
Carol Proxy Alice Appearance Agent Bob
| | | | |
| | | |<----- PUBLISH F1<|
| | | | |
| | | |>F2 200 OK ------>|
| | | | |
| | |<-- NOTIFY F3<| |
| | | | |
| | |>F4 200 OK -->| |
| | | |------- NOTIFY F5>|
| | | | |
| | | |<F6 200 OK ------<|
| | | | |
| |<------------------------------------- INVITE F7<|
| | | | |
| |>F8 100 Trying --------------------------------->|
|<-- INVITE F9<| | | |
| | | |<---- PUBLISH F10<|
| | | | |
| | | |>F11 200 OK ----->|
| | | | |
|>F12 180 --->| | | |
| |>F13 180 Ringing ------------------------------->|
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F14<| |
| | | | |
| | |>F15 200 OK ->| |
| | | |------ NOTIFY F16>|
| | | | |
| | | |<F17 200 OK -----<|
|>F18 200 OK ->| | | |
| |>F19 200 OK ------------------------------------>|
| | | | |
| |<--------------------------------------- ACK F20<|
|<---- ACK F21<| | | |
| | | | |
|<================= Both way RTP established ===================>|
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F22<| |
| | | | |
| | |>F23 200 OK ->| |
| | | |------ NOTIFY F24>|
| | | | |
| | | |<F25 200 OK -----<|
| | | | |
Abbildung 4. Beispiel für einen ausgehenden Anruf mit Belegung einer Erscheinung
F1 to F4: Bob verwendet die gemeinsame Erscheinung des Help Desk auf seinem UA, um einen ausgehenden Anruf zu tätigen (z. B. hebt er ab). Bevor er die ausgehende INVITE-Anforderung sendet, veröffentlicht Bob beim Appearance Agent, um die Erscheinungsnummer 1 zu reservieren. Der Appearance Agent benachrichtigt Alice (und alle anderen UAs, einschließlich Bob) über das Ereignis durch Senden von NOTIFY-Nachrichten.
F1 Bob ----> Appearance Agent
PUBLISH sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK61314d6446383E79
From: <sip:[email protected]>;tag=44150CC6-A7B7919D
To: <sip:[email protected]>
CSeq: 7 PUBLISH
Call-ID: 44fwF144-F12893K38424
Contact: <sip:[email protected]>
Event: dialog;shared
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="6"
state="full"
entity="sip:[email protected]">
<dialog id="id3d4f9c83" direction="initiator">
<sa:appearance>1</sa:appearance>
<sa:exclusive>false</sa:exclusive>
<state>trying</state>
<local>
<target uri="sip:[email protected]">
</target>
</local>
</dialog>
</dialog-info>
F2 Appearance Agent ----> Bob
SIP/2.0 200 OK
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK61314d6446383E79
From: <sip:[email protected]>;tag=44150CC6-A7B7919D
To: <sip:[email protected]>
CSeq: 7 PUBLISH
Call-ID: 44fwF144-F12893K38424
Contact: <sip:[email protected]>
Event: dialog;shared
SIP-Etag: 482943245
Allow-Events: dialog
Expires: 60
Content-Length: 0
F7 Bob ---> Proxy
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK342122
Max-Forwards: 70
From: <sip:[email protected]>;tag=15A3DE7C-9283203B
To: <sip:[email protected]>
Call-ID: f3b3cbd0-a2c5775e-5df9f8d5
CSeq: 31 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: ...
(SDP nicht dargestellt)
F10 Bob ----> Appearance Agent
PUBLISH sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK6d644638E7
From: <sip:[email protected]>;tag=0CCf6-A7FdsB79D
To: <sip:[email protected]>
CSeq: 437 PUBLISH
Call-ID: fwF14d4-F1FFF2F2893K38424
Contact: <sip:[email protected]>
Event: dialog;shared
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="6"
state="full"
entity="sip:[email protected]">
<dialog id="id3d4f9c83"
call-id="f3b3cbd0-a2c5775e-5df9f8d5"
local-tag="15A3DE7C-9283203B"
direction="initiator">
<sa:appearance>1</sa:appearance>
<sa:exclusive>false</sa:exclusive>
<state>trying</state>
<local>
<target uri="sip:[email protected]">
</target>
</local>
<remote>
<identity uri="sip:[email protected]">
</identity>
</remote>
</dialog>
</dialog-info>
11.5. Ausgehender Anruf ohne Verwendung einer Erscheinungsnummer
In diesem Szenario sendet der UA von Bob ein Dialogereignis-PUBLISH mit dem Zustand (trying), das angibt, dass er für diesen Dialog keine Erscheinungsnummer verwenden möchte. Das PUBLISH enthält kein appearance-Element, aber den 'shared'-Event-Header-Feldparameter. Infolgedessen weiß der Appearance Agent, dass der UA für diesen Anruf keine Erscheinungsnummer verwenden möchte. Wenn der Appearance Agent dies nicht zulassen möchte, würde er das PUBLISH mit einer 400 (Bad Request)-Antwort ablehnen, und der UA würde wissen, dass er erneut PUBLISHen muss, um eine Erscheinungsnummer auszuwählen/zu belegen.
Carol Proxy Alice Appearance Agent Bob
| | | | |
| | | |<----- PUBLISH F1<|
| | | | |
| | | |>F2 200 OK ------>|
| | | | |
| | |<-- NOTIFY F3<| |
| | | | |
| | |>F4 200 OK -->| |
| | | |------- NOTIFY F5>|
| | | | |
| | | |<F6 200 OK ------<|
| | | | |
| |<------------------------------------- INVITE F7<|
| | | | |
| |>F8 100 Trying --------------------------------->|
|<-- INVITE F9<| | | |
| | | |<---- PUBLISH F10<|
| | | | |
| | | |>F11 200 OK ----->|
| | | | |
|>F12 180 --->| | | |
| |>F13 180 Ringing ------------------------------->|
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F14<| |
| | | | |
| | |>F15 200 OK ->| |
| | | |------ NOTIFY F16>|
| | | | |
| | | |<F17 200 OK -----<|
|>F18 200 OK ->| | | |
| |>F19 200 OK ------------------------------------>|
| | | | |
| |<--------------------------------------- ACK F20<|
|<---- ACK F21<| | | |
| | | | |
|<================= Both way RTP established ===================>|
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F22<| |
| | | | |
| | |>F23 200 OK ->| |
| | | |------ NOTIFY F24>|
| | | | |
| | | |<F25 200 OK -----<|
| | | | |
Abbildung 5. Beispiel für einen ausgehenden Anruf ohne Verwendung einer Erscheinungsnummer
F1 Bob ----> Appearance Agent
PUBLISH sip:appearanceagent.example.com SIP/2.0
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK61314d6446383E79
From: <sip:[email protected]>;tag=4415df82k39sf
To: <sip:[email protected]>
CSeq: 7 PUBLISH
Call-ID: 44fwF144-F12893K38424
Contact: <sip:[email protected]>
Event: dialog;shared
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="6"
state="full"
entity="sip:[email protected]">
<dialog id="id3d4f9c83" direction="initiator">
<sa:exclusive>false</sa:exclusive>
<state>trying</state>
<local>
<target uri="sip:[email protected]">
</target>
</local>
</dialog>
</dialog-info>
Beachten Sie, dass F7 mit dem vorherigen Beispiel identisch wäre.
11.6. Freigabe einer Erscheinung
Bob und Carol befinden sich in einem Dialog, der beispielsweise wie in Abschnitt 11.3 erstellt wurde. Carol sendet ein BYE an Bob, um den Dialog zu beenden, und der Appearance Agent gibt die verwendete Erscheinungsnummer frei und sendet Benachrichtigungen an die UAs in der gemeinsamen Gruppe.
Carol Proxy Alice Appearance Agent Bob
| | | | |
| | | | |
|<================= Both way RTP established ===================>|
| | | | |
|>F22 BYE ---->| | | |
| |>F23 BYE --------------------------------------->|
| | | | |
| |<------------------------------------ 200 OK F24<|
|<--200 OK F25<| | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F26<| |
| | | | |
| | |>F27 200 OK ->| |
| | | |------ NOTIFY F28>|
| | | | |
| | | |<F29 200 OK -----<|
Abbildung 6. Beispiel für die Freigabe einer Erscheinung
F28 Appearance Agent ----> Bob
NOTIFY sip:[email protected] SIP/2.0
From: <sip:[email protected]>;tag=497585728578386
To: <sip:[email protected]>
Call-ID: a7d559db-d6d7dcad-311c9e3a
CSeq: 7 NOTIFY
Via: SIP/2.0/UDP appearanceagent.example.com
;branch=z9hG4bK759878512309
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Event: dialog;shared
Subscription-State: active;expires=1800
Contact: <sip:appearanceagent.example.com>
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="27"
state="partial"
entity="sip:[email protected]">
<dialog id="fa02538339df3ce597f9e3e3699e28fc"
call-id="f3b3cbd0-a2c5775e-5df9f8d5"
local-tag="15A3DE7C-9283203B"
remote-tag="65a98f7c-1dd2-11b2-88c6-b0316298f7c"
direction="initiator">
<sa:appearance>1</sa:appearance>
<sa:exclusive>false</sa:exclusive>
<state>terminated</state>
<local>
<target uri="sip:[email protected]">
</target>
</local>
</dialog>
</dialog-info>
11.7. Übernahme einer Erscheinung
In diesem Szenario hat Bob einen etablierten Dialog mit Carol, der unter Verwendung der Anrufverläufe von Abbildung 1 oder 2 erstellt wurde. Bob legt Carol dann in die Warteschleife. Alice erhält eine Benachrichtigung darüber und stellt dies in der Benutzeroberfläche von Alice dar. Alice übernimmt anschließend den gehaltenen Anruf und hat eine etablierte Sitzung mit Carol. Schließlich legt Carol auf. Alice muss das PUBLISH F32 senden, um anzuzeigen, dass die INVITE F38 ein Versuch sein wird, den Dialog zwischen Carol und Bob zu übernehmen, und daher dieselbe Erscheinungsnummer verwenden darf. Dieses Beispiel zeigt auch die Verwendung von Secure SIP (sips).
Carol Proxy Alice Appearance Agent Bob
| | | | |
|<================= Both way RTP established ===================>|
| | | | |
| |<------------------------------(hold) INVITE F22<|
|<- INVITE F23<| | | |
| | | | |
|>F24 200 OK ->| | | |
| |>F25 200 OK ------------------------------------>|
| | | | |
| |<--------------------------------------- ACK F26<|
|<---- ACK F27<| | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F28<| |
| | | | |
| | |>F29 200 OK ->| |
| | | |>F30 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F31<|
| | | | |
| | Alice decides to pick up the call |
| | | | |
| | |>F32 PUBLISH->| |
| | | | |
| | |<- 200 OK F33<| |
| | | | |
| | |<- NOTIFY F34<| |
| | | | |
| | |>F35 200 OK ->| |
| | | |>F36 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F37<|
| |<-- INVITE F38<| | |
|<- INVITE F39<|(w/ Replaces) | | |
|( w/ Replaces)| | | |
|>F40 200 OK ->| | | |
| |>F41 200 OK -->| | |
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | | |>F42 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F43<|
| | |<- NOTIFY F44<| |
| | | | |
| | |>F45 200 OK ->| |
| | | | |
| |<----- ACK F46<| | |
|<---- ACK F47<| | | |
| | | | |
|<= Both way RTP established =>| | |
| | | | |
|>F48 BYE ---->| | | |
| |>F49 BYE --------------------------------------->|
| | | | |
| |<------------------------------------ OK 200 F50<|
|<- 200 OK F51<| | | |
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F52<| |
| | | | |
| | |>F53 200 OK ->| |
| | | | |
| | | |>F54 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F55<|
Abbildung 7. Beispiel für die Übernahme einer Erscheinung
F28 Appearance ----> Alice
NOTIFY sips:[email protected] SIP/2.0
From: <sips:[email protected]>;tag=151702541050937
To: <sips:[email protected]>;tag=18433323-C3D237CE
Call-ID: 1e361d2f-a9f51109-bafe31d4
CSeq: 12 NOTIFY
Via: SIP/2.0/TLS appearanceagent.example.com
;branch=z9hG4bK1403
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Event: dialog;shared
Subscription-State: active;expires=1800
Contact: <sips:appearanceagent.example.com>
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="10"
state="partial"
entity="sips:[email protected]">
<dialog id="id3d4f9c83"
call-id="f3b3cbd0-a2c5775e-5df9f8d5"
local-tag="15A3DE7C-9283203B"
remote-tag="65a98f7c-1dd2-11b2-88c6-b0316298f7c"
direction="initiator">
<sa:appearance>1</sa:appearance>
<sa:exclusive>false</sa:exclusive>
<state>active</state>
<local>
<target uri="sips:[email protected]">
<param pname="+sip.rendering" pval="no"/>
</target>
</local>
<remote>
<identity>sips:[email protected]</identity>
<target uri="sips:[email protected]" />
</remote>
</dialog>
</dialog-info>
F32 Alice ----> Appearance Agent
PUBLISH sips:[email protected] SIP/2.0
Via: SIP/2.0/TLS ua2.example.com;branch=z9hG4bKa5d6cf61F5FBC05A
From: <sips:[email protected]>;tag=44150CC6-A7B7919D
To: <sips:[email protected]>;tag=428765950880801
CSeq: 11 PUBLISH
Call-ID: 87837Fkw87asfds
Contact: <sips:[email protected]>
Event: dialog;shared
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="10"
state="full"
entity="sips:[email protected]">
<dialog id="id3d4f9c83"
call-id="3d57cd17-47deb849-dca8b6c6"
local-tag="8C4183CB-BCEAB710" >
<sa:appearance>1</sa:appearance>
<sa:exclusive>false</sa:exclusive>
<sa:replaced-dialog
call-id="f3b3cbd0-a2c5775e-5df9f8d5"
from-tag="15A3DE7C-9283203B"
to-tag="65a98f7c-1dd2-11b2-88c6-b03162323164+65a98f7c" />
<state>trying</state>
<local>
<target uri="sips:[email protected]">
<param pname="+sip.rendering" pval="yes"/>
</target>
</local>
<remote>
<target uri="sips:[email protected]" />
</remote>
</dialog>
</dialog-info>
F38 Alice ----> Proxy
INVITE sips:[email protected] SIP/2.0
Via: SIP/2.0/TLS ua1.example.com;branch=z9hG4bK4ea695b5B376A60C
From: <sips:[email protected]>;tag=8C4183CB-BCEAB710
To: <sips:[email protected]:5075>
CSeq: 1 INVITE
Call-ID: 3d57cd17-47deb849-dca8b6c6
Contact: <sips:[email protected]>
<all-one-line>
Replaces: f3b3cbd0-a2c5775e-5df9f8d5;to-tag=65a98f7c
-1dd2-11b2-88c6-b03162323164+65a98f7c;from-tag=15A3DE7C-9283203B
</all-one-line>
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 223
v=0
o=- 1102980497 1102980497 IN IP4 ua1.example.com
s=IP SIP UA
c=IN IP4 ua1.example.com
t=0 0
a=sendrecv
m=audio 2238 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
11.8. Anruf zwischen UAs innerhalb der Gruppe
In diesem Szenario ruft Bob Alice an, die ebenfalls zur gemeinsame Erscheinungsgruppe gehört. Für diesen Dialog wird nur eine Erscheinungsnummer verwendet. Dieses Beispiel zeigt auch die Verwendung des 'exclusive'-Tags, um anzuzeigen, dass andere UAs der Gruppe diesem Dialog nicht beitreten oder ihn nicht übernehmen können.
Carol Proxy Alice Appearance Agent Bob
| | | | |
| |<-------------------- INVITE (to Alice's UA) F1<|
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | | | |
| | |<-- NOTIFY F2<| |
| | | | |
| | |>F3 200 OK -->| |
| | | |>F4 NOTIFY ------>|
| | | | |
| | | |<------ 200 OK F5<|
| |>F6 INVITE --->| | |
| | (appearance=1)| | |
| | | | |
| |<------ 180 F7<| | |
| | | | |
| |>F8 180 --------------------------------------->|
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<-- NOTIFY F9<| |
| | | | |
| | |>F10 200 OK ->| |
| | | |>F11 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F12<|
| |<-- 200 OK F13<| | |
| | | | |
| |>F14 200 OK ------------------------------------>|
| | | | |
| |<--------------------------------------- ACK F15<|
| | | | |
| |>F16 ACK ----->| | |
| | | | |
| | |<======= RTP established =======>|
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F17<| |
| | | | |
| | |>F18 200 OK ->| |
| | | |>F19 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F24<|
| | | | |
Abbildung 8. Beispiel für einen Anruf zwischen UAs innerhalb der Gruppe
F19 Appearance Agent ----> Bob
NOTIFY sip:[email protected] SIP/2.0
From: <sip:[email protected]>;tag=497585728578386
To: <sip:[email protected]>;tag=633618CF-B9C2EDA4
Call-ID: a7d559db-d6d7dcad-311c9e3a
CSeq: 7 NOTIFY
Via: SIP/2.0/UDP appearanceagent.example.com
;branch=z9hG4bK1711759878512309
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Event: dialog;shared
Subscription-State: active;expires=1500
Contact: <sip:appearanceagent.example.com>
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="10"
state="partial"
entity="sip:[email protected]">
<dialog id="3xdsd4f9c83"
call-id="b3cbd0-ad2c5775e-5df9f8d5"
local-tag="34322kdfr234f"
remote-tag="3153DE7C-928203B"
direction="initiator">
<sa:exclusive>true</sa:exclusive>
<sa:appearance>1</sa:appearance>
<state>confirmed</state>
<local>
<target uri="sip:[email protected]">
</target>
</local>
<remote>
<identity>sip:[email protected]</identity>
<target uri="sip:[email protected]" />
</remote>
</dialog>
<dialog id="4839589"
call-id="b3cbd0-ad2c5775e-5df9f8d5"
local-tag="3153DE7C-928203B"
remote-tag="34322kdfr234f"
direction="responder">
<sa:exclusive>true</sa:exclusive>
<sa:appearance>1</sa:appearance>
<state>confirmed</state>
<local>
<target uri="sip:[email protected]" />
</local>
<remote>
<identity>sip:[email protected]</identity>
<target uri="sip:[email protected]" />
</remote>
</dialog>
</dialog-info>
11.9. Beratungshalten mit Erscheinungen
In diesem Szenario hat Bob einen Anruf mit Carol. Bob führt einen Beratungsanruf mit Alice durch, indem er Carol in die Warteschleife legt und Alice anruft. Der UA von Bob entscheidet sich gegen eine Erscheinungsnummer für den Anruf mit Alice, da er ihn als Teil des Anrufs mit Carol behandelt. Er zeigt dies im PUBLISH F32 an, das den 'shared'-Event-Header-Feldparameter, aber kein <appearance>-Element enthält. Das PUBLISH wird vor der INVITE an Alice gesendet, um sicherzustellen, dass vom Appearance Agent keine Erscheinungsnummer zugewiesen wird. Schließlich legt Bob mit Alice auf und setzt den Anruf mit Carol fort. Dialogbenachrichtigungen des Beratungsanrufs werden nicht gezeigt, da sie nicht verwendet werden.
Beachten Sie, dass Bob, wenn Carol auflegt, während Bob sich mit Alice berät, entscheiden kann, ob er die mit Carol verwendete Erscheinungsnummer für den Anruf mit Alice wiederverwenden möchte. Wenn nicht, veröffentlicht Bob die Beendigung des Dialogs mit Carol, und der Appearance Agent weist die Erscheinung neu zu. Wenn er die Erscheinung behalten möchte, veröffentlicht Bob die Beendigung des Dialogs mit Carol und veröffentlicht außerdem die Erscheinung mit dem Dialog mit Alice. Dies führt dazu, dass Bob die Erscheinungsnummer behält, bis er den Dialog mit Alice als beendet meldet.
Beachten Sie, dass der Anrufverlauf ähnlich wäre, wenn Bob anstelle von Alice einen Musik-in-der-Warteschleife-Server anrufen würde, um einen Dienst für Musik in der Warteschleife gemäß [RFC7088] umzusetzen.
Carol Proxy Alice Appearance Agent Bob
| | | | |
|<================= Both way RTP established ===================>|
| | | | |
| |<------------------------------(hold) INVITE F22<|
|<- INVITE F23<| | | |
| | | | |
|>F24 200 OK ->| | | |
| |>F25 200 OK ------------------------------------>|
| | | | |
| |<--------------------------------------- ACK F26<|
|<---- ACK F27<| | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F28<| |
| | | | |
| | |>F29 200 OK ->| |
| | | |>F30 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F31<|
| | | | |
| | Bob makes a consultation call to Alice |
| | | | |
| | | |<---- PUBLISH F32<|
| | | | |
| | | |>F33 200 OK ----->|
| | | | |
| |<------------------------------------ INVITE F34<|
| | | | |
| |>F35 INVITE -->| | |
| | | | |
| |<-- 200 OK F36<| | |
| | | | |
| |>F37 200 OK ------------------------------------>|
| | | | |
| |<--------------------------------------- ACK F38<|
| | | | |
| |>F39 ACK ----->| | |
| | | | |
| | |<======= RTP established =======>|
| | | | |
| | Bob hangs up with Alice |
| | | | |
| |<--------------------------------------- BYE F40<|
| | | | |
| |>F41 BYE ----->| | |
| | | | |
| |<-- 200 OK F42<| | |
| | | | |
| |>F43 200 OK ------------------------------------>|
| | | | |
| |<----------------------------(unhold) INVITE F44<|
|<- INVITE F45<| | | |
| | | | |
|>F46 200 OK ->| | | |
| |>F47 200 OK ------------------------------------>|
| | | | |
| |<--------------------------------------- ACK F48<|
|<---- ACK F49<| | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F50<| |
| | | | |
| | |>F51 200 OK ->| |
| | | |>F52 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F53<|
| | | | |
|<================= Both way RTP established ===================>|
| | | | |
Abbildung 9. Beispiel für Beratungshalten mit Erscheinungen
F32 Bob ----> Appearance Agent
PUBLISH sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bKa5d6cf61F5FBC05A
From: <sip:[email protected]>;tag=44150CC6-A7B7919D
To: <sip:[email protected]>;tag=428765950880801
CSeq: 11 PUBLISH
Call-ID: 44fwF144-F12893K38424
Contact: <sip:[email protected]>
Event: dialog;shared
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="10"
state="full"
entity="sip:[email protected]">
<dialog id="id3d4f9c83"
call-id="b3cbd0-ad2c5775e-5df9f8d5"
local-tag="3153DE7C-928203B"
direction="initiator">
<sa:exclusive>true</sa:exclusive>
<state>trying</state>
<local>
<target uri="sip:[email protected]">
</target>
</local>
<remote>
<identity>sip:[email protected]</identity>
<target uri="sip:[email protected]" />
</remote>
</dialog>
</dialog-info>
11.10. Beitreten zu oder Überbrücken einer Erscheinung
In diesem Anrufverlauf wird ein von Bob angenommener Anruf von Alice beigetreten oder "überbrückt". Alice verwendet das Join-Header-Feld, um diese Überbrückung anzufordern. Wenn Bob keine Medienmischung unterstützen würde, könnte Bob Konferenzressourcen gemäß [RFC4579] beziehen.
Carol Forking Proxy Appearance Agent Alice Bob
| | | | |
|<=============Both way RTP established===========>|
| | | | |
| | |< PUBLISH F22| |
| | | | |
| | |>F23 200 OK >| |
| | | | |
| |<---- INVITE (w/ Join) F24<| |
| | | | |
| |>F25 INVITE (w/Join)---------------->|
| | | | |
| |<---- OK 200 Contact:Bob;isfocus F26<|
| | | | |
| |< - - - - - >| | |
| | | | |
| | |>F27 NOTIFY >| |
| | | | |
| | |< 200 OK F28<| |
| | | | |
| | |>F29 NOTIFY ---------->|
| | | | |
| | |<F30 200 OK ----------<|
| | | | |
| |>F31 200 OK Contact:B----->| |
| | | | |
| |<----------------- ACK F32<| |
| | | | |
| |>ACK F33---------------------------->|
| | | | |
| |<-----INVITE Contact:Bob;isfocus F34<|
|<-INVITE F35| | | |
| | | | |
|>F26 200 -->| | | |
| |>F37 200 OK ------------------------>|
| | | | |
| |<--------------------------- ACK F38<|
|<--- ACK F39| | | |
| | | |<==RTP==>|
|<=============Both way RTP established===========>|
| | | | |
| |< - - - - - >| | |
| | | | |
| | |>F40 NOTIFY >| |
| | | | |
| | |< 200 OK F41<| |
| | | | |
| | |>F42 NOTIFY ---------->|
| | | | |
| | |<F43 200 OK ----------<|
| | | | |
Abbildung 10. Beispiel für das Beitreten zu oder Überbrücken einer Erscheinung
F22 Alice ----> Appearance Agent
PUBLISH sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bKa5d6cf61F5FBC05A
From: <sip:[email protected]>;tag=44150CC6-A7B7919D
To: <sip:[email protected]>;tag=428765950880801
CSeq: 11 PUBLISH
Call-ID: 87837Fkw87asfds
Contact: <sip:[email protected]>
Event: dialog;shared
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="10"
state="full"
entity="sip:[email protected]:5060">
<dialog id="id3d4f9c83"
call-id="dc95da63-60db1abd-d5a74b48"
local-tag="605AD957-1F6305C2" >
<sa:appearance>1</sa:appearance>
<sa:exclusive>false</sa:exclusive>
<sa:joined-dialog
call-id="14-1541707345"
from-tag="44BAD75D-E3128D42"
to-tag="d3b06488-1dd1-11b2-88c5-b03162323164+d3e48f4c" />
<state>trying</state>
<local>
<target uri="sip:[email protected]">
</target>
</local>
<remote>
<target uri="sip:[email protected]" />
</remote>
</dialog>
</dialog-info>
F24 Alice ----> Proxy
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ua1.example.com;branch=z9hG4bKcc9d727c2C29BE31
From: <sip:[email protected]>;tag=605AD957-1F6305C2
To: <sip:[email protected]>
CSeq: 2 INVITE
Call-ID: dc95da63-60db1abd-d5a74b48
Contact: <sip:[email protected]>
<all-one-line>
Join: 14-1541707345;to-tag=d3b06488-1dd1-11b2-88c5
-b03162323164+d3e48f4c;from-tag=44BAD75D-E3128D42
</all-one-line>
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 223
v=0
o=- 1103061265 1103061265 IN IP4 ua1.example.com
s=IP SIP UA
c=IN IP4 ua1.example.com
t=0 0
a=sendrecv
m=audio 2236 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
11.11. Verlust einer Erscheinung während der Zuweisung
Bob reserviert eine Erscheinung mit einem PUBLISH, sendet eine INVITE an Carol und wird dann unerreichbar. Als er seine Veröffentlichung beim Appearance Agent nicht erneuert, erklärt der Appearance Agent den Dialog für beendet und gibt die Erscheinung mithilfe der NOTIFY-Nachrichten F14 und F16 frei. Nach erneutem Senden der NOTIFY an Bob (nicht gezeigte Nachrichten F17, F18 usw.) wird das Abonnement beendet.
Carol Proxy Alice Appearance Agent Bob
| | | | |
| | | |<----- PUBLISH F1<|
| | | | |
| | | |>F2 200 OK ------>|
| | | | |
| | |<-- NOTIFY F3<| |
| | | | |
| | |>F4 200 OK -->| |
| | | |------- NOTIFY F5>|
| | | | |
| | | |<F6 200 OK ------<|
| | | | |
| |<------------------------------------- INVITE F7<|
| | | | |
| |>F8 100 Trying --------------------------------->|
|<-- INVITE F9<| | | |
| | | |<---- PUBLISH F10<|
| | | | |
| | | |>F11 200 OK ----->|
| | | | |
|>F12 180 --->| | | |
| |>F13 180 Ringing ------------------------------->|
| | | | |
| | | | Bob goes offline |
| | | | |
| | | Appearance selection times out |
| | | | |
| | |<- NOTIFY F14<| |
| | | | |
| | |>F15 200 OK ->| |
| | | |------ NOTIFY F16>|
| | | | |
| | | NOTIFY is retransmitted |
Abbildung 11. Beispiel für den Verlust einer Erscheinung während der Zuweisung
11.12. Wettlaufsituation bei der Belegung einer Erscheinung
Bob und Alice versuchen beide, Erscheinung 2 durch gleichzeitiges Veröffentlichen zu reservieren. Der Appearance Agent weist die Erscheinung Bob zu, indem er ein 200 OK sendet, und verweigert sie Alice durch Senden einer 400 (Bad Request)-Antwort. Nach der NOTIFY F5 erfährt Alice, dass Bob Erscheinung 2 verwendet. Alice versucht dann, Erscheinung 3 durch Veröffentlichen zu reservieren, was akzeptiert wird.
Carol Proxy Alice Appearance Agent Bob
| | | | |
| | | |<----- PUBLISH F1<|
| | | | (appearance=2)
| | |>F2 PUBLISH ->| |
| | | (appearance=2) |
| | | | |
| | | |>F3 200 OK ------>|
| | |<---- F4 400 <| |
| | | | |
| | |<-- NOTIFY F5<| |
| | | | |
| | |>F6 200 OK -->| |
| | | |------- NOTIFY F7>|
| | | | |
| | | |<F8 200 OK ------<|
| | | | |
| |<------------------------------------- INVITE F9<|
| | | | |
| |>F10 100 Trying -------------------------------->|
|<- INVITE F11<| | | |
| | | |<---- PUBLISH F12<|
| | | | (appearance=2)
| | | |>F13 200 OK ----->|
| | |>F14 PUBLISH->| |
| | | (appearance=3) |
| | | | |
| | |<--- F15 200 <| |
| | | | |
| | |<- NOTIFY F16<| |
| | | | |
| | |>F17 200 OK ->| |
Dave | | |------ NOTIFY F18>|
| | | | |
| | | |<F19 200 OK -----<|
| |<-- INVITE F20<| | |
| | | | |
| |>F21 100 ----->| | |
|<- INVITE F22<| | | |
Abbildung 12. Beispiel für eine Wettlaufsituation bei der Belegung einer Erscheinung
11.13. Abonnement der UAs durch den Appearance Agent
In diesem Szenario hat der Appearance Agent keine Möglichkeit, die Dialogzustandsinformationen von Bob zu erfahren, außer über Bob. Dies könnte daran liegen, dass der Appearance Agent nicht Teil eines B2BUA ist, oder Bob registriert sich möglicherweise remote. Wenn Bob sich registriert, erhält der Appearance Agent eine Benachrichtigung des Registrierungsereignispakets vom Registrar. Der Appearance Agent SUBSCRIBEd dann auf den Dialogereigniszustand von Bob unter Verwendung von Event:dialog im SUBSCRIBE. Wann immer sich der Dialogzustand von Bob ändert, sendet der UA von Bob eine NOTIFY an den Appearance Agent, der dann die anderen UAs der Gruppe benachrichtigt.
Carol Proxy Alice Appearance Agent Bob
| | | | |
| |<----------------------------------- REGISTER F1<|
| | | | |
| |>F2 200 OK ------------------------------------->|
| | | | |
| |>F3 NOTIFY ------------------>| |
| | | | |
| |<------------------ 200 OK F4<| |
| | | |---- SUBSCRIBE F5>|
| | | | |
| | | |<F6 200 OK ------<|
| | | | |
| | | |<------ NOTIFY F7<|
| | | | |
| | | |>F8 200 OK ------>|
| | | | |
| | | |<--- SUBSCRIBE F9<|
| | | | |
| | | |>F10 200 OK ----->|
| | | | |
| | | |------ NOTIFY F11>|
| | | | |
| | | |<F12 200 OK -----<|
| | | | |
| |<------------------------------------ INVITE F13<|
| | | | |
| |>F14 100 Trying -------------------------------->|
|<- INVITE F15<| | | |
| | | |<----- NOTIFY F16<|
| | | | |
| | | |>F17 200 OK ----->|
| | |<- NOTIFY F18<| |
| | | | |
| | |>F19 200 OK ->| |
| | | |------ NOTIFY F20>|
| | | | |
| | | |<F21 200 OK -----<|
|>F22 180 --->| | | |
| |>F23 180 Ringing ------------------------------->|
| | | | |
| | | |<----- NOTIFY F24<|
| | | | |
| | | |>F25 200 OK ----->|
| | |<- NOTIFY F26<| |
| | | | |
| | |>F27 200 OK ->| |
| | | |------ NOTIFY F28>|
| | | | |
| | | |<F29 200 OK -----<|
|>F30 200 OK ->| | | |
| |>F31 200 OK ------------------------------------>|
| | | | |
| | | |<----- NOTIFY F32<|
| | | | |
| | | |>F33 200 OK ----->|
| | | | |
| |<--------------------------------------- ACK F34<|
|<---- ACK F35<| | | |
| | | | |
|<================= Both way RTP established ===================>|
| | | | |
| | |<- NOTIFY F36<| |
| | | | |
| | |>F37 200 OK ->| |
| | | |------ NOTIFY F38>|
| | | | |
| | | |<F39 200 OK -----<|
| | | | |
Abbildung 13. Beispiel für das Abonnement der UAs durch den Appearance Agent
11.14. Fehlschlagen der Wettlaufsituation bei der Übernahme einer Erscheinung
In diesem Szenario hat Bob einen etablierten Dialog mit Carol, der unter Verwendung der Anrufverläufe von Abbildung 1 oder Abbildung 2 erstellt wurde. Bob legt Carol dann in die Warteschleife. Alice erhält eine Benachrichtigung darüber und stellt dies in der Benutzeroberfläche von Alice dar. Alice versucht, den Anruf zu übernehmen, aber Carol legt auf, bevor die Übernahme abgeschlossen werden kann. Alice bricht den Übernahmeversuch mit dem PUBLISH F48 ab. Beachten Sie, dass der Anrufverlauf für ein fehlgeschlagenes Join nahezu identisch wäre.
Carol Proxy Alice Appearance Agent Bob
| | | | |
|<================= Both way RTP established ===================>|
| | | | |
| |<------------------------------(hold) INVITE F22<|
|<- INVITE F23<| | | |
| | | | |
|>F24 200 OK ->| | | |
| |>F25 200 OK ------------------------------------>|
| | | | |
| |<--------------------------------------- ACK F26<|
|<---- ACK F27<| | | |
| | | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |<- NOTIFY F28<| |
| | | | |
| | |>F29 200 OK ->| |
| | | |>F30 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F31<|
| | | | |
| | Alice decides to pick up the call |
| | | | |
| | |>F32 PUBLISH->| |
| | | | |
| | |<- 200 OK F33<| |
| | | | |
| | |<- NOTIFY F34<| |
| | | | |
| | |>F35 200 OK ->| |
| | | |>F36 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F37<|
|>F38 BYE ---->| | | |
| |>F39 BYE --------------------------------------->|
| | | | |
| |<------------------------------------ OK 200 F40<|
|<- 200 OK F41<| | | |
| |<-- INVITE F42<| | |
|<- INVITE F43<|(w/ Replaces) | | |
|( w/ Replaces)| | | |
| | | | |
|>F44 481 ---->| | | |
| |>F45 481 ----->| | |
|<---- ACK F46<| | | |
| |<----- ACK F47<| | |
| | |>F48 PUBLISH->| |
| | | | |
| | |<- 200 OK F49<| |
| | | | |
| | |<- NOTIFY F50<| |
| | | | |
| | |>F51 200 OK ->| |
| | | |>F52 NOTIFY ----->|
| | | | |
| | | |<----- 200 OK F53<|
Abbildung 14. Beispiel für das Fehlschlagen der Wettlaufsituation bei der Übernahme einer Erscheinung
F48 Alice ----> Appearance Agent
PUBLISH sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bKa5d6cf61F5FBC05A
From: <sip:[email protected]>;tag=44150CC6-A7B7919D
To: <sip:[email protected]>;tag=428765950880801
CSeq: 11 PUBLISH
Call-ID: 87837Fkw87asfds
Contact: <sip:[email protected]>
Event: dialog;shared
Max-Forwards: 70
Content-Type: application/dialog-info+xml
Content-Length: ...
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
version="10"
state="full"
entity="sip:[email protected]">
<dialog id="id3d4f9c83"
call-id="dc95da63-60db1abd-d5a74b48"
local-tag="605AD957-1F6305C2" >
<sa:appearance>1</sa:appearance>
<sa:exclusive>false</sa:exclusive>
<sa:replaced-dialog
call-id="14-1541707345"
from-tag="44BAD75D-E3128D42"
to-tag="d3b06488-1dd1-11b2-88c5-b03162323164+d3e48f4c" />
<state>terminated</state>
<local>
<target uri="sip:[email protected]">
</target>
</local>
<remote>
<target uri="sip:[email protected]" />
</remote>
</dialog>
</dialog-info>
11.15. Wettlaufsituation bei gleichzeitiger eingehender/ausgehender Belegung einer Erscheinung
Alice versucht, Erscheinung 2 zu belegen, während gleichzeitig Erscheinung 2 einem eingehenden Anruf zugewiesen wird. Der Appearance Agent löst den Konflikt, indem er eine 400 (Bad Request) an Alice sendet. Nach der NOTIFY F6 erfährt Alice, dass der eingehende Anruf Erscheinung 2 verwendet. Alice veröffentlicht erneut für Erscheinung 3, was akzeptiert wird. Beachten Sie, dass dieses Beispiel zeigt, dass die INVITE vor der NOTIFY vom Appearance Agent empfangen wird.
Carol Proxy Alice Appearance Agent Bob
| | | | |
|>-- INVITE F1>| | | |
| |< - - - - - - - - - - - - - ->| |
| | | | |
| | |>F2 PUBLISH ->| |
| | | (appearance=2) |
| | | | |
| |>F3 INVITE (appearance=2) ---------------------->|
| | | | |
| |>F4 INVITE | | |
| |(appearance=2)>| | |
| | |<---- F5 400 <| |
| | | | |
| | |<-- NOTIFY F6<| |
| | | | |
| | |>F7 200 OK -->| |
| | | |------- NOTIFY F8>|
| | | | |
| | | |<F9 200 OK ------<|
| | | | |
| | |>F10 PUBLISH->| |
| | | (appearance=3) |
| | | | |
| | |< F11 200 OK <| |
| | | | |
| | |<- NOTIFY F12<| |
| | | | |
| |>F13 200 OK ->| |
Dave | | |------ NOTIFY F14>|
| | | | |
| | | |<F15 200 OK -----<|
| |<-- INVITE F16<| | |
| | | | |
| |>F17 100 ----->| | |
|<- INVITE F18<| | | |
Abbildung 15. Beispiel für eine Wettlaufsituation bei gleichzeitiger eingehender/ausgehender Belegung einer Erscheinung