11. Esempi di flussi di messaggi
La sezione successiva mostra esempi di flussi di chiamata e di messaggi. I flussi e le descrizioni non sono normativi. Si noti che, in questi esempi, tutti gli INVITE inviati da un UA nel gruppo avranno come From l'AOR condivisa (sip:[email protected] in questo caso), e tutti gli INVITE inviati al gruppo avranno un Request-URI dell'AOR condivisa. Qualsiasi altra richiesta non si applicherebbe a questa funzionalità e sarebbe gestita utilizzando i normali meccanismi SIP.
Si noti che i primi 12 esempi presuppongono che l'agente di apparizione sia a conoscenza degli eventi di stato del dialogo. L'esempio nella sezione 11.13 mostra il caso in cui ciò non avviene e, di conseguenza, l'agente di apparizione avvia una sottoscrizione agli utenti dell'AOR condivisa. Ognuno degli altri esempi di flusso di chiamata avrebbe potuto mostrare questa modalità di funzionamento, poiché è ugualmente valida.
11.1. Registrazione e sottoscrizione
Bob e Alice si trovano in un gruppo di apparizioni condivise identificato dall'AOR di apparizione condivisa sip:[email protected]. Bob effettua il REGISTER utilizzando il contatto sip:[email protected]. Alice effettua il REGISTER con il contatto sip:[email protected].
Gli UA di Alice e Bob si sottoscrivono al pacchetto di dialogo per l'AOR di apparizione e pubblicano lo stato del dialogo all'agente di apparizione. Gli scambi di messaggi tra il registrar, l'agente di apparizione, Alice e Bob sono mostrati di seguito. Gli esempi di flusso di chiamata riportati di seguito non mostrano l'autenticazione di sottoscrizioni, pubblicazioni e notifiche. Va notato che, per motivi di sicurezza, tutte le pubblicazioni e le sottoscrizioni devono essere autorizzate prima di essere accettate.
Si noti inoltre che le registrazioni e le sottoscrizioni devono essere tutte rinnovate da Alice a intervalli determinati dagli intervalli di scadenza restituiti dal registrar o dall'agente di apparizione.
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<|
| | | |
Figura 1. Esempio di registrazione e sottoscrizione
F1-F2: Alice registra l'AOR con il contatto: <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 si sottoscrive anche agli eventi associati all'AOR di apparizione. L'agente di apparizione notifica ad Alice lo stato.
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. Selezione dell'apparizione per una chiamata in arrivo
Nel flusso di chiamata seguente, Bob e Alice si trovano in un gruppo di apparizioni condivise. Carol effettua una chiamata all'AOR del gruppo di apparizioni condivise. L'agente di apparizione invia NOTIFY ad Alice e Bob indicando quale apparizione sta utilizzando la chiamata. I dispositivi sia di Alice che di Bob vengono avvisati della chiamata in arrivo. Bob risponde alla chiamata.
Si noti che è possibile che sia Alice che Bob rispondano alla chiamata e inviino risposte 200 (OK) a Carol. Sta a Carol risolvere questa situazione. Tipicamente, Carol invierà ACK a entrambe le 200 OK ma invierà un BYE per terminare uno dei dialoghi. Di conseguenza, Alice o Bob riceverà il BYE e pubblicherà che il proprio dialogo è terminato. Tuttavia, se Carol risponde sia ad Alice che a Bob e mantiene entrambi i dialoghi attivi, allora l'agente di apparizione dovrà risolvere la situazione spostando il dialogo di Alice o di Bob su un'apparizione diversa.
Tutti i messaggi NOTIFY nel flusso di chiamata seguente trasportano eventi di dialogo e, per semplicità, vengono menzionati solo gli stati del dialogo. Per brevità, i dettagli di alcuni messaggi non sono mostrati di seguito. Si noti che l'ordine di F2 - F5 e F7 - F8 potrebbe essere invertito.
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 ----------<|
| | | |
Figura 2. Esempio di selezione dell'apparizione per una chiamata in arrivo
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. Chiamata in uscita senza occupazione di apparizione
In questo scenario, l'UA di Bob effettua una chiamata senza prima selezionare/occupare un numero di apparizione. Dopo che Bob ha inviato l'INVITE, l'apparizione assegna un numero di apparizione per essa e notifica sia Alice che 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 -----<|
| | | | |
Figura 3. Esempio di chiamata in uscita senza occupazione di apparizione
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. Chiamata in uscita con occupazione di apparizione
In questo scenario, l'UA di Bob invia un PUBLISH di evento di dialogo con stato (trying) selezionando/occupando un numero di apparizione prima di inviare l'INVITE. Dopo aver ricevuto la 200 (OK) dall'agente di apparizione che conferma il numero di apparizione, l'UA di Bob invia l'INVITE a Carol e stabilisce una sessione. Per brevità, i dettagli di alcuni messaggi non sono inclusi nei flussi di messaggi. L'UA di Bob inserisce quante più informazioni di dialogo da F7 possano essere determinate in anticipo. In questo caso, è incluso il minimo dell'URI Contact, il che consente all'agente di apparizione di correlare l'INVITE con il PUBLISH.
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 -----<|
| | | | |
Figura 4. Esempio di chiamata in uscita con occupazione di apparizione
F1 to F4: Bob utilizza l'apparizione condivisa dell'Help Desk sul suo UA per effettuare una chiamata in uscita (ad esempio, solleva il microtelefono). Prima di inviare la richiesta INVITE in uscita, Bob pubblica all'agente di apparizione riservando il numero di apparizione 1. L'agente di apparizione notifica ad Alice (e a tutti gli altri UA, incluso Bob) l'evento inviando NOTIFY.
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 non mostrato)
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. Chiamata in uscita senza utilizzare un numero di apparizione
In questo scenario, l'UA di Bob invia un PUBLISH di evento di dialogo con stato (trying) che indica che non desidera utilizzare un numero di apparizione per questo dialogo. Il PUBLISH non ha un elemento appearance ma ha il parametro del campo di intestazione Event 'shared'. Di conseguenza, l'agente di apparizione sa che l'UA non desidera utilizzare un numero di apparizione per questa chiamata. Se l'agente di apparizione non desidera consentirlo, rifiuterebbe il PUBLISH con una risposta 400 (Bad Request) e l'UA saprebbe di dover ripubblicare selezionando/occupando un numero di apparizione.
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 -----<|
| | | | |
Figura 5. Esempio di chiamata in uscita senza utilizzare un numero di apparizione
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>
Si noti che F7 sarebbe identico all'esempio precedente.
11.6. Rilascio dell'apparizione
Bob e Carol sono in un dialogo, creato, ad esempio, come nella sezione 11.3. Carol invia un BYE a Bob per terminare il dialogo e l'agente di apparizione dealloca il numero di apparizione utilizzato, inviando notifiche agli UA nel gruppo condiviso.
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 -----<|
Figura 6. Esempio di rilascio dell'apparizione
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. Ripresa dell'apparizione
In questo scenario, Bob ha un dialogo stabilito con Carol creato utilizzando i flussi di chiamata delle figure 1 o 2. Bob mette quindi Carol in attesa. Alice riceve una notifica di ciò e la visualizza nell'interfaccia utente di Alice. Successivamente Alice riprende la chiamata in attesa e ha una sessione stabilita con Carol. Infine, Carol riattacca. Alice deve inviare PUBLISH F32 per indicare che l'INVITE F38 sarà un tentativo di riprendere il dialogo tra Carol e Bob e, quindi, può utilizzare lo stesso numero di apparizione. Questo esempio mostra anche l'uso di 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<|
Figura 7. Esempio di ripresa dell'apparizione
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. Chiamata tra UA all'interno del gruppo
In questo scenario, Bob chiama Alice, che appartiene anch'essa al gruppo di apparizioni condivise. Per questo dialogo viene utilizzato un solo numero di apparizione. Questo esempio mostra anche l'uso del tag 'exclusive' per indicare che altri UA nel gruppo non possono unirsi a questo dialogo né prenderlo.
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<|
| | | | |
Figura 8. Esempio di chiamata tra UA all'interno del gruppo
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. Attesa per consultazione con apparizioni
In questo scenario, Bob ha una chiamata con Carol. Bob effettua una chiamata di consultazione ad Alice mettendo Carol in attesa e chiamando Alice. L'UA di Bob sceglie di non avere un numero di apparizione per la chiamata ad Alice, poiché la considera parte della chiamata a Carol. Lo indica nel PUBLISH F32, che contiene il parametro del campo di intestazione Event 'shared' ma nessun elemento <appearance>. Il PUBLISH viene inviato prima dell'INVITE ad Alice per garantire che nessun numero di apparizione venga assegnato dall'agente di apparizione. Infine, Bob riattacca con Alice e riprende la chiamata con Carol. Le notifiche di dialogo della chiamata di consultazione non sono mostrate, poiché non vengono utilizzate.
Si noti che se Carol riattacca mentre Bob è in consultazione con Alice, Bob può decidere se desidera riutilizzare il numero di apparizione utilizzato con Carol per la chiamata con Alice. In caso negativo, Bob pubblica la terminazione del dialogo con Carol e l'agente di apparizione riallocherà l'apparizione. Se desidera mantenere l'apparizione, Bob pubblicherà la terminazione del dialogo con Carol e pubblicherà anche l'apparizione con il dialogo con Alice. Ciò comporterà che Bob mantenga il numero di apparizione fino a quando non segnala il dialogo con Alice come terminato.
Si noti che il flusso di chiamata sarebbe simile se Bob chiamasse un server di musica d'attesa invece di Alice per implementare un servizio di musica d'attesa come descritto in [RFC7088].
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 ===================>|
| | | | |
Figura 9. Esempio di attesa per consultazione con apparizioni
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. Unione o bridging di un'apparizione
In questo flusso di chiamata, una chiamata risposta da Bob viene unita da Alice o "bridged". Il campo di intestazione Join viene utilizzato da Alice per richiedere questo bridging. Se Bob non supportasse la miscelazione dei media, Bob potrebbe ottenere risorse di conferenza come descritto in [RFC4579].
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 ----------<|
| | | | |
Figura 10. Esempio di unione o bridging di un'apparizione
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. Perdita dell'apparizione durante l'allocazione
Bob riserva un'apparizione con un PUBLISH, invia un INVITE a Carol, poi diventa irraggiungibile. Quando non riesce a rinnovare la sua pubblicazione all'agente di apparizione, l'agente di apparizione dichiara il dialogo terminato e libera l'apparizione utilizzando le NOTIFY F14 e F16. Dopo aver ritrasmesso la NOTIFY a Bob (in messaggi non mostrati F17, F18, ecc.), la sottoscrizione viene terminata.
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 |
Figura 11. Esempio di perdita dell'apparizione durante l'allocazione
11.12. Condizione di gara sulla contesa per l'occupazione dell'apparizione
Bob e Alice tentano entrambi di riservare l'apparizione 2 pubblicando contemporaneamente. L'agente di apparizione assegna l'apparizione a Bob inviando una 200 OK e la nega ad Alice inviando una risposta 400 (Bad Request). Dopo la NOTIFY F5, Alice apprende che Bob sta utilizzando l'apparizione 2. Alice tenta quindi di riservare l'apparizione 3 pubblicando, cosa che viene poi accettata.
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<| | | |
Figura 12. Esempio di condizione di gara sulla contesa per l'occupazione dell'apparizione
11.13. Sottoscrizione dell'agente di apparizione agli UA
In questo scenario, l'agente di apparizione non ha alcun modo di conoscere le informazioni sullo stato del dialogo di Bob, se non tramite Bob. Ciò potrebbe essere dovuto al fatto che l'agente di apparizione non fa parte di un B2BUA, o forse Bob si registra da remoto. Quando Bob si registra, l'agente di apparizione riceve una notifica del pacchetto di eventi di registrazione dal registrar. L'agente di apparizione effettua quindi SUBSCRIBE allo stato dell'evento di dialogo di Bob utilizzando Event:dialog nel SUBSCRIBE. Ogni volta che lo stato del dialogo di Bob cambia, l'UA di Bob invia una NOTIFY all'agente di apparizione che poi notifica gli altri UA nel gruppo.
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 -----<|
| | | | |
Figura 13. Esempio di sottoscrizione dell'agente di apparizione agli UA
11.14. Fallimento della condizione di gara sulla ripresa dell'apparizione
In questo scenario, Bob ha un dialogo stabilito con Carol creato utilizzando i flussi di chiamata della figura 1 o della figura 2. Bob mette quindi Carol in attesa. Alice riceve una notifica di ciò e la visualizza nell'interfaccia utente di Alice. Alice tenta di riprendere la chiamata ma Carol riattacca prima che la ripresa possa essere completata. Alice annulla il tentativo di ripresa con il PUBLISH F48. Si noti che il flusso di chiamata per un Join fallito sarebbe quasi identico.
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<|
Figura 14. Esempio di fallimento della condizione di gara sulla ripresa dell'apparizione
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. Condizione di gara sulla contesa in entrata/uscita per l'occupazione dell'apparizione
Alice tenta di occupare l'apparizione 2 nello stesso momento in cui l'apparizione 2 viene assegnata a una chiamata in arrivo. L'agente di apparizione risolve il conflitto inviando una 400 (Bad Request) ad Alice. Dopo la NOTIFY F6, Alice apprende che la chiamata in arrivo sta utilizzando l'apparizione 2. Alice ripubblica per l'apparizione 3, che viene accettata. Si noti che questo esempio mostra l'INVITE ricevuto prima della NOTIFY dall'agente di apparizione.
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<| | | |
Figura 15. Esempio di condizione di gara sulla contesa in entrata/uscita per l'occupazione dell'apparizione