5.4. Agente di apparizione
Un agente di apparizione definito in questa specifica DEVE implementare un agente di stato del pacchetto di dialogo per gli UA registrati all'AOR. L'agente di apparizione DEVE supportare le estensioni del pacchetto di dialogo di apparizione definite nella sezione 5.2 e utilizzare il parametro del campo di intestazione Event 'shared'. L'agente di apparizione DEVE supportare pubblicazioni e sottoscrizioni per questo pacchetto di eventi.
L'agente di apparizione DEVE avere un modo per scoprire lo stato di tutti i dialoghi associati all'AOR. Se queste informazioni non sono disponibili da un proxy con stato delle chiamate o da un agente utente back-to-back (B2BUA), l'agente di apparizione può utilizzare il pacchetto di eventi di registrazione [RFC3680] per conoscere gli UA associati all'AOR e sottoscrivere il loro stato di evento del dialogo. Un agente di apparizione può anche sottoscrivere lo stato di evento del dialogo di un UA al fine di ricostruire lo stato. Di conseguenza, il registrar DEVE supportare il pacchetto di eventi di registrazione.
Le notifiche del pacchetto di dialogo sono raccomandate dalla RFC 4235 per "contenere solo informazioni sui dialoghi il cui stato o informazioni di partecipazione sono cambiati". Questa specifica estende la RFC 4235 come segue. L'agente di apparizione DOVREBBE inviare notifiche dello stato dell'evento del dialogo ogni volta che i seguenti eventi accadono agli UA nel gruppo AOR:
-
Una chiamata viene ricevuta, effettuata, risposta o terminata.
-
Una chiamata viene messa in attesa o ripresa.
-
Una chiamata viene unita o sostituita.
-
Un numero di apparizione viene riservato o rilasciato.
L'agente di apparizione DEVE allocare un numero di apparizione per tutte le chiamate in arrivo e inviare notifiche immediate agli UA sottoscritti all'AOR di gruppo condiviso. Un nuovo numero di apparizione viene allocato tranne quando una chiamata sostituisce un'altra chiamata, nel qual caso viene utilizzato il numero di apparizione della chiamata sostituita.
L'agente di apparizione DEVE assegnare un numero di apparizione alle chiamate in uscita quando la richiesta viene pubblicata o quando viene inviato un INVITE senza pubblicazione preventiva. Quando un UA pubblica un tentativo di occupare un'apparizione per una chiamata in uscita o quando un UA pubblica una chiamata di consultazione (cioè, la pubblicazione non contiene un numero di apparizione), l'agente di apparizione riserva il numero di apparizione per quell'UA. Se il numero di apparizione riservato non viene utilizzato entro un periodo di tempo (valore raccomandato: 30 secondi), l'agente di apparizione libera il numero di apparizione in modo che possa essere allocato a un altro UA.
Se arriva una chiamata in arrivo per un gruppo e non ci sono numeri di apparizione disponibili, la chiamata in arrivo verrà comunque biforcata a tutti gli UA sottoscritti ma non avrà un numero di apparizione incluso nella notifica. Inoltre, la chiamata non avrà un parametro di apparizione nel campo di intestazione Alert-Info quando arriva a un UA. Se tutti gli UA sottoscritti nel gruppo rifiutano la chiamata in arrivo, si verifica il trattamento normale della chiamata (probabilmente inoltro alla segreteria telefonica o a un altro AOR).
L'allocazione dei numeri di apparizione è gestita dall'agente di apparizione; questo non è direttamente osservabile dagli UA. Tuttavia, gli UA sottoscritti all'AOR di gruppo condiviso verranno notificati ogni volta che un numero di apparizione viene allocato o liberato dall'agente di apparizione.
L'agente di apparizione è responsabile dell'assegnazione di numeri di apparizione ai nuovi dialoghi creati dagli UA e della risoluzione dei conflitti di numeri di apparizione. Il conflitto può verificarsi quando due UA tentano simultaneamente di occupare lo stesso numero di apparizione. L'agente di apparizione rileva il conflitto ricevendo pubblicazioni da UA con lo stesso numero di apparizione entro un breve periodo di tempo. Quando viene rilevato un conflitto, l'agente di apparizione DEVE selezionare solo uno degli UA a cui assegnare il numero di apparizione. Gli altri UA riceveranno una risposta di errore alla loro pubblicazione. I criteri per selezionare quale UA vince il conflitto sono una decisione di politica dell'agente di apparizione. Un approccio consiste nel selezionare la prima pubblicazione arrivata. L'agente di apparizione può determinare quale pubblicazione è arrivata per prima esaminando i timestamp SIP nei campi di intestazione Via o basandosi su altri timestamp di elaborazione locali.