Roster Management¶
Il Roster dovrà essere suddiviso in due gruppi OTHERS(“others”) e VERIFIED(“verified”) e ogni elemento del Roster dovrà necessariamente contenere l’attributo name e il jid di riferimento.
Esempio:
<item subscription="both" name="Mario Rossi" jid="00393471111111@domain">
<group>verified</group>
</item>
Il gruppo OTHERS rappresenta tutti i membri che non sono ancora registrati nella chat.
Il gruppo VERIFIED rappresenta tutti i membri registrati nella chat e visibili nella rubrica dell’applicazione.
Per prima cosa il client richiede il Roster e carica la rubrica del telefono per effettuare una diff tra Roster e Rubrica; il client invierà un messaggio XMPP al buddy xmpp_service dopo l’esito della diff.
Il messaggio Add To Roster avrà nel payload la lista dei membri:
Senza un gruppo
Senza name
Con un name diverso da quello presente nel Roster
Presenti in Rubrica ma non presenti nel Roster
Con gruppo OTHERS sul Roster ma subscription diversa da none
<message to="xmpp_service@monksoftware.it" id="1486028547270039399072925" type="chat">
<body />
<x xmlns="jabber:x:oob">
<type>cmd_add_to_roster</type>
<payload>
{
"channelUsers": [
{
"name": "Mario Rossi",
"address": "00393471111111"
},
{
"name": "Luca Rossi",
"address": "00393472222222"
}
]
}
</payload>
</x>
</message>
Add Roster¶
Alla ricezione del messaggio Add To Roster il buddy farà queste operazioni per ogni membro ricevuto:
Se non esiste nel Roster lo aggiunge e lo assegna al gruppo VERIFIED se è registrato alla chat oppure al gruppo OTHERS impostando come name il nome ricevuto
Se esiste già nel Roster verifica se ha un gruppo o meno, in entrambi i casi lo assegna al gruppo VERIFIED se è registrato alla chat oppure al gruppo OTHERS
Se esiste già nel Roster verifica se il nome ricevuto è diverso da quello presente nel Roster, se dovesse essere diverso aggiorna il name
Subscription¶
Il client per tutti i membri del Roster presenti nel gruppo VERIFIED con subscription diversa da both e da remove e con nessuna subscription in pending (ask=’subscribe’) manda una presence subscribe.