FR 2857479 A1 20050114 FR 0308423 A 20030709 2857479 Domaine technique et art antérieur L'invention concerne les systèmes de gestion de présence, notamment dans les domaines multimédias et Internet. La gestion de présence est une fonction de plus en plus utilisée dans la mise en relation des individus. La présence est un état binaire (présent, absent) indiquant qu'un utilisateur est enregistré et connecté vis à vis d'un système de gestion de présence. Etre présent signifie que, vu du système de gestion de présence, l'utilisateur est enregistré et connecté au moyen d'un ou plusieurs terminaux. Etre présent ne veut pas obligatoirement dire que l'utilisateur est joignable. Par exemple, l'utilisateur d'un téléphone portable allumé sera considéré présent par un système de gestion de présence des mobiles mais sera injoignable dans une zone de non-couverture. La joignabilité (au niveau service) représente la visibilité, vis à vis d'un événement ou d'une personne, qu'un utilisateur souhaite donner de son état de présence et de sa volonté d'être ou de ne pas être joint, en fonction de sa disponibilité. La présence devient un enjeu important dans le développement de nouveaux services de communication. De nombreux acteurs du domaine (éditeurs, constructeurs mobile, équipementiers, opérateurs, startups...) en ont pris conscience et y travaillent activement. En plus des travaux menés sur le sujet dans les instances de normalisation (OMA, Parlay, PAM forum, IETF), on voit poindre de plus en plus de solutions en rapport avec la gestion de présence. La plupart de ces solutions sont associées fortement à la messagerie instantanée. Certains acteurs travaillent plus spécifiquement sur la gestion de présence comme fonction indépendante de la messagerie instantanée: DynamicSoft, Indigo, Hotsip... offrent des serveurs de gestion de présence; - PresenceWorks, Antepo des solutions de médiation. Des industriels du monde mobile comme Ericsson, Motorola, Nokia tiennent compte de la présence dans leur plate-forme et applications. 2857479 2 PresenceWorks fédère les informations de présence issues des services de messagerie instantanée tels que AOL, MSM Messenger, Yahoo Messenger, ICQ et permet ensuite d'être interrogée par des applications clientes. Antepo est une plate-forme multi-protocoles qui permet de s'interfacer avec des clients et/ou serveurs XMPP ou SIMPLE, voire plus. Un autre dispositif intitulé "dispositif pour gérer des informations de présence d'utilisateurs issues d'une pluralité de systèmes de gestion de présence" (FR-02 12471) n'est utilisable qu'en mode consultation. Aucune des solutions existantes n'offre la possibilité d'unifier l'accès à ces systèmes pour la consultation et la modification des données de présence pour un même utilisateur sur plusieurs serveurs en même temps. Elles ne permettent pas non plus d'interfonctionner avec d'autres 15 systèmes de gestion de présence que ceux prévus par leurs interfaces, c'est-à-dire de les adapter facilement à d'autres. Et enfin, ces solutions n'offrent souvent qu'une interface applicative sous forme d'API ou de Web service, complexifiant ou limitant les possibilités d'applications les utilisant. Le dispositif décrit dans FR-02 12471 n'est utilisable qu'en mode consultation et non en mode client, c'est-à-dire qu'il ne permet pas de modifier les états de présence, de gérer une liste de contacts et d'être notifié des modifications d'états de présence des membres de cette liste. Exposé de l'invention L'invention concerne un ddispositif de traitement de données de présence d'appareils d'utilisateurs, comportant: - des premiers moyens d'interface, pour l'accès d'au moins une première application audit dispositif, - des moyens de communication avec au moins une base de données de présence, et des moyens de gestion de cette base de données, des deuxième moyens d'interface pour émettre une requête d'envoi d'informations de modifications de données de présence vers un 2857479 3 deuxième dispositif de traitement de données et pour recevoir lesdites informations de modifications. Un tel dispositif permet d'intégrer facilement, et de façon fiable, des fonctions de gestion de présence à des applications basées sur la mise en relation de personnes. Ce dispositif réalise une fonction de gestion de la base de données. Par ses moyens d'interface, il peut être adapté afin de répondre à l'environnement dans lequel il est intégré. Cette possibilité d'adaptation par les moyens d'interface apporte un gain de temps important dans la conception de nouvelles applications, mais aussi améliore la fiabilité du dispositif puisque les éléments génériques, et notamment de gestion de la base de données, peuvent être développés dans un contexte industriel, éprouvés puis testés. Les moyens de gestion de ladite base de données permettent une mise à jour de cette base en fonction des informations de modifications de données reçues du deuxième dispositif de traitement de données, ou éventuellement de l'application elle-même. Le dispositif selon l'invention peut en outre être relié, non seulement à un deuxième dispositif de traitement de données, mais aussi à un troisième, ou à une pluralité de dispositifs de traitement de données, chacun mémorisant des données de présence d'utilisateurs ou d'appareils ou de médias. Les deuxième moyens d'interface peuvent alors permettre l'émission d'une requête d'envoi d'informations de modifications de données de présence vers ce troisième, ou ces autres, dispositif(s) de traitement de données. Eventuellement, un ou plusieurs connecteurs permettent une adaptation des protocoles du dispositif et des dispositifs de traitement de données. Les moyens de gestion de la base de données permettent alors de mémoriser dans la base les différentes informations, provenant des différents dispositifs de traitement de données, permettant à l'application, ou aux applications, de voir le dispositif comme un unique composant de gestion de présence. Par ailleurs, les premiers moyens d'interface peuvent permettre l'accès d'une ou de plusieurs applications audit dispositif, éventuellement à l'aide de connecteurs d'adaptation de protocoles. 2857479 4 L'interface vers l'application, ou vers les applications, peut être en fait une interface multimodale, offrant plusieurs moyens d'accès et élargissant ainsi le type des applications pouvant utiliser le dispositif. L'interface peut ainsi comprendre un accès HTTP, et/ou Web Service, et/ou VXML, et/ou email, et/ou SMS, et/ou IM, et/ou SIMPLE et/ou d'autres éventuellement. L'invention concerne également un procédé de traitement de données de présence d'appareils d'utilisateurs, comportant: - la réception, par au moins un appareil serveur, de données 10 de présence d'au moins un des appareils d'utilisateurs, - la transmission, à un deuxième appareil serveur, desdites données de présence, - la mise à jour, par ce deuxième appareil serveur, en fonction des données reçues, d'une base de données de présence, et, 15 éventuellement, - l'envoi, à au moins une application, d'informations concernant des modifications de données de présence d'au moins un appareil d'utilisateur. Ce procédé comporte par exemple l'envoi, par le deuxième 20 serveur au premier serveur, d'une requête d'envoi d'informations de modifications de données de présence. Il peut aussi comporter la réception, par le deuxième serveur, d'une requête d'envoi d'informations de modifications de données de présence, cette requête étant émise par une application, ou encore la réception, par le deuxième serveur, d'informations relatives à des modifications des données de présence d'au moins un appareil d'un utilisateur, ces informations étant émises par une des applications. Selon un autre aspect, le procédé selon l'invention peut en outre comporter la transmission, par le deuxième serveur au premier serveur, desdites informations relatives à des modifications des données de présence d'au moins un appareil d'un utilisateur, émises par une des applications. Ce procédé peut aussi comporter la mise à jour ou la modification ou la recherche, dans la base de données, de données relatives à au moins un appareil utilisé par au moins un utilisateur, ou à une caractéristique d'un tel appareil. Brève description des figures - la figure 1 représente un mode de réalisation de l'invention, la figure 2 représente la structure d'un dispositif de 5 traitement de données, la figure 3 représente une configuration générale d'un système selon l'invention. Description détaillée de modes de réalisation de l'invention La figure 1 représente la structure générale d'un dispositif 10 de traitement de données, ou ordinateur (par la suite appelé serveur), pouvant être utilisé dans le cadre de la présente invention. Des moyens de mémorisation 12, qui peuvent ou non être contenus dans le serveur 10, mémorisent des données, par exemple sous forme d'une base de données. La référence 11 symbolise des moyens d'accès à ces moyens de mémorisation et des moyens de gestion de cette base de données. Le serveur peut être relié à des éléments 22-1,... 22-n de différentes applications, par exemple différents ordinateurs ou différents serveurs. Chacun de ces éléments va dialoguer ou échanger des informations avec le serveur 10 selon un protocole d'accès spécifique, mais principalement en tant que client de ce serveur. En particulier, une ou plusieurs de ces applications vont rechercher des informations concernant la présence ou l'état de présence d'utilisateurs. Chacun de ces utilisateurs peut utiliser un ou plusieurs médias différents (par exemple: téléphone fixe, téléphone mobile, PC, PDA communiquant...etc.). Comme déjà indiqué ci-dessus, la présence est par exemple un état binaire indiquant qu'un utilisateur est enregistré et connecté. Chacun de ces éléments va dialoguer ou échanger des informations avec le serveur 10 selon un protocole d'accès spécifique, mais principalement en tant que client . Chaque protocole se caractérise par exemple par une structuration des données (par exemple: structure des données identifiant un utilisateur), une structuration des requêtes, la manière dont sont traitées 2857479 6 données et requêtes, ou des étapes de traitement des données et requêtes, éventuellement la manière de gérer certaines erreurs, ou des étapes de traitement des erreurs. Deux protocoles seront différents, s'ils diffèrent par au moins l'un des éléments ci-dessus, c'est-à-dire s'ils ont des structurations différentes des données (par exemple: structures des données identifiant un utilisateur), et/ou des structurations différentes des requêtes, et/ou des procédés différents et/ou des étapes différentes de traitement des données et/ou requêtes, et/ou des procédés et/ou des étapes différentes de gestion ou de traitement d'erreurs. Différents utilisateurs vont donc pouvoir dialoguer, en tant que clients avec le serveur 10 selon différents protocoles. D'où la présence, sur la figure 1, de différents connecteurs 32-1, 32-2 ou interfaces d'accès. Le serveur 10 peut par ailleurs être relié à un ou plusieurs éléments, par exemple différents ordinateurs ou différents serveurs, appelés encore serveurs de gestion de présence, ou SGP , 24-1,..., 24-n. Ces SGP hébergent des informations, par exemple sous forme de base de données, relatives à des états de présence de différents utilisateurs. Encore une fois, chaque utilisateur peut utiliser différents médias, les données concernant la présence d'un média d'un utilisateur donné étant transmises puis répertoriées dans un SGP unique, celles concernant un autre média du même utilisateur pouvant être, de même, transmises puis répertoriées dans un SGP unique, le même que le précédent ou un autre. Tout changement d'état de présence d'un utilisateur ou d'un média d'un utilisateur est notifié au SGP correspondant, par exemple soit par l'utilisateur ou le média lui-même, soit par un tiers qui peut d'ailleurs être une des applications 22-i. Ces changements d'état sont ensuite transmis ou notifiés au serveur 10, qui met ainsi à jour la base de donnée 12. On notera que, lorsque c'est une application 22-i qui notifie un changement d'état, elle le fait d'abord au serveur 10, qui retransmet ensuite l'information au SGP correspondant qu'il identifie par les informations contenues dans la base de données 12. Le serveur 10 va donc dialoguer ou échanger des informations avec chacun des SGP 24-i mais il agit principalement comme client vis-à 2857479 7 vis de ceux-ci. De préférence, il mémorise, par exemple dans la base de données 12, les données d'identification des SGP (par exemple: adresse du serveur qui l'héberge) à atteindre ou à interroger pour un média donné d'un utilisateur donné et éventuellement le protocole utilisé pour communiquer avec ce SGP. Les références 34-1, 34-2 représentent deux connecteurs ou interfaces d'accès permettant de faire dialoguer le serveur 10 avec des SGP n'exploitant pas les mêmes protocoles, au sens déjà indiqué ci-dessus. La figure 2 représente schématiquement, en bloc, les diverses composantes d'un appareil de traitement de données 40. Un microprocesseur 50 est relié, par un bus 52, à un ensemble de mémoires RAM 54 pour stocker des données, et à une mémoire ROM 56 dans laquelle des instructions de programme peuvent être mémorisées. Ce système peut en outre comporter un dispositif de visualisation 58, ou écran et des moyens périphériques tels que clavier ou souris. La référence 64 désigne des moyens d'interface avec un réseau, par exemple de type modem. Selon un autre exemple, il peut s'agir d'un port Ethernet associé à une ou plusieurs carte(s) réseau. Il peut aussi s'agir d'un (ou de plusieurs) port(s) spécifique(s) pour supporter un ou des protocole(s) particulier(s). Le serveur 10, ainsi que les serveurs 24-1, ...24-n, ont chacun, globalement, une structure du même type, avec un ou plusieurs processeur(s), une ou plusieurs zone(s) de stockage de données et diverses connexions aux réseaux, une ou plusieurs mémoire(s) dans lesquelles des instructions de programme peuvent être mémorisées, et notamment les instructions pour la mise en oeuvre des procédés décrits dans la présente demande. Un mode de réalisation de l'invention va être décrit, en liaison avec la figure 3, sur laquelle les références 100 - 157 désignent des éléments logiciels hébergés sur le serveur 10. Plus précisément, les références 132 136 représentent trois connecteurs pour SGP, et les références 151 157 six connecteurs applicatifs. Ce mode de réalisation comporte donc un module central 100, 35 ainsi que, en outre, une interface de programmation d'application, ou API 130, du côté des systèmes SGP 24-1, 24-2, 24-3 de gestion de 2857479 8 présence, et une interface de programmation d'application, ou API 140 du côté des applications 22-i. Le module central 100 stocke, sous forme de base de données 120, les informations associées aux utilisateurs à partir des notifications transmises par un ou plusieurs SGP à travers l'API SGP 130, ou éventuellement transmises par les applications 22-i à travers l'API 140. Ces informations comportent par exemple l'état de présence d'un utilisateur ou d'un ou de plusieurs de ses médias et, éventuellement, les listes de contacts et états de présence associés, ou encore des données ou caractéristiques techniques relatives aux appareils ou médias utilisés par les utilisateurs. Un système de gestion de base de données est mis en oeuvre, de préférence conçu d'une manière la plus ouverte possible c'est-à-dire présentant une ou plusieurs des caractéristiques suivantes: - le module 100 peut interfonctionner avec différents types de SGP; - un utilisateur peut disposer de plusieurs médias qui peuvent être enregistrés dans différents SGP 24-i; - un utilisateur peut avoir plusieurs listes de contacts; - les contacts peuvent être enregistrés dans différents SGP 24-i; - la gestion est évolutive. Selon un exemple, le système de gestion de base de données permet non seulement d'identifier et de mettre à jour l'état de présence d'un média, mais aussi de notifier automatiquement certaines des applications 22-i, qui ont spécifiquement requis l'envoi, ou souscrit à l'envoi, de telles notifications, lors d'un changement d'état de présence d'un média ou d'un utilisateur donné. A cette fin, les applications utilisatrices peuvent être répertoriées, par exemple dans la base de données 120. Pour pouvoir mémoriser les différentes informations, un modèle de données peut être défini. A titre d'exemple, un tel modèle se compose des sept tables suivantes qui vont être décrites ci-dessous: Média, Utilisateur, Sgp, Presence, Liste, Contact, Application. 1. Table Média Id_local_média Identifant_dans_SGP Identifant_SGP Type_média Cette table permet d'éviter les redondances puisqu'un média est défini d'une façon unique par le couple (Identifiant dans SGP, Identifiant SGP) ; à partir de là un média est défini par un identifiant local. Le champ Type média permet de définir le type de média (téléphone fixe, téléphone mobile...). 2. Table Utilisateur Identifant_Applicatif Id_local_média La table Utilisateur va permettre de faire la correspondance entre un 15 utilisateur défini par son identifiant applicatif et les médias qu'il utilise. 3. Table SGP Identifiant_SGP Adresse_Serveur Port Protocole La table SGP va permettre d'identifier le SGP en stockant les informations correspondantes (adresse du serveur qui héberge le SGP, le port et le protocole utilisé pour communiquer). 4. Table Présence Id_local_média Status Note Expires La table Présence contient l'état de présence de chaque média traduit par le champ status: état binaire caractérisant l'utilisateur vis-à-vis des 2857479 10 moyens de le joindre (pour un PC, s'il est connecté ou non sur le réseau, pour un téléphone mobile s'il est connecté le réseau GSM ou non...). Le champ note est une chaîne de caractère donnant des informations sur l'utilisateur par rapport à un média. Cette information est fournie par le SGP correspondant et peut être saisie par l'utilisateur ou détectée automatiquement. Le champ Expires détermine la date d'expiration des informations. 5. Table Liste Identifiant_Applicatif Id_Buddy_List Nom_Buddy_List Cette table permet d'attribuer une ou plusieurs listes de contacts à un utilisateur. Une liste de contacts est représentée par un identifiant unique et par un nom alphanumérique. 6. Table Contact Id_Buddy_List Identifiant_Applicatif Cette table associe des utilisateurs (contacts) à une liste. 7. Table Application Identifiant_Applicatif Ad rIP Port Protocole Cette table permet d'identifier les applications 22-i utilisatrices du serveur 10 afin, notamment, de les notifier lors de changement d'états de présence. Une application s'enregistre avec un nom d'utilisateur (Identifiant_Applicatif). Lui sont associés une adresse IP, un numéro de port et un protocole par lesquels les notifications lui seront transmises. 2857479 11 L'interface SGP 130 va permettre au module 100 de pouvoir interfonctionner avec différents types de systèmes de gestion de présence 24-i. La plupart des SGPs ayant une interface spécifique, le dialogue ne se fera pas directement mais par l'intermédiaire de modules adaptatifs 132, 134, 136 (ou les connecteurs 34-1 et 34-2 de la figure 1) qui serviront de passerelles entre le module 100 et les SGPs. Le serveur peut envoyer des requêtes à un ou plusieurs des SGP, demandant ainsi de transmettre ou de signaler ou de notifier un ou tout changement d'état d'un utilisateur ou d'un média. Suivant le mode de fonctionnement du SGP, l'information ou toute information de changement d'état disponible sera soit notifiée automatiquement par le SGP, soit obtenue par interrogation du SGP. Ces informations de changement d'état permettent ensuite au serveur 10 de mettre à jour la base de données 120, et éventuellement d'informer les applications 22-i. Selon un exemple de réalisation, voici quelques fonctions de l'interface 130: - Changement de l'état de présence sur un média donné Requête envoyée par l'interface 130 au SGP correspondant au média concerné pour demander le changement d'état. - Enregistrement d'un média d'un utilisateur auprès du SGP Requête envoyée au SGP par l'interface 130 pour demander à recevoir les notifications relatives à l'état de présence d'un média donné pour un utilisateur donné. - Désenregistrement d'un média auprès du SGP Requête envoyée au SGP par l'interface 130 pour supprimer les demandes de notifications concernant ce média. - Mise à jour de l'état de présence d'un média L'interface SGP 130 reçoit des notifications d'un SGP à propos des changements d'état d'un média d'un utilisateur. Selon l'exemple de tables indiqué ci-dessus pour le système de base de données, à partir de l'identifiant du média dans le SGP et l'identifiant du SGP, l'identifiant local du média peut être déterminé, et la table de présence peut être mise à jour en tenant compte des informations reçues. Le module 100 peut être utilisé par de multiples applications 22-i au travers de différents connecteurs (selon le mode d'accès choisi). Une 2857479 12 API 140 a été définie afin de permettre l'accès aux différentes fonctions du module 100. Cette API peut être prévue ou programmée pour assurer, ou pour proposer, une ou plusieurs des fonctions, ou des groupes de fonctions ou interfaces suivantes, éventuellement elles- mêmes implémentées ou mises en oeuvre ou programmées dans le système de gestion de la base de données: - gestion des utilisateurs et/ou des listes dans la base de données (par exemple: ajout ou suppression d'utilisateur et/ou des médias associés et/ou d'une liste), - gestion des médias dans la base de données (vérification qu'un média est enregistré, et/ou création ou suppression d'un média, vérification qu'un média a des capacités données, et/ou associer ou supprimer une capacité pour un média donné) ; - associer médias et utilisateurs dans la base de données (recherche d'une capacité donnée parmi les médias d'un utilisateur et/ou recherche de toutes les capacités d'un utilisateur et/ou de tous les médias d'un utilisateur qui ont une capacité définie, et/ou envoi de l'information concernant tous les médias d'un utilisateur et/ou tous les utilisateurs d'un média, et/ou ajout ou suppression d'un média avec un utilisateur) ; - obtenir et/ou modifier l'état de présence de médias et/ou d'utilisateurs. - enregistrement d'applications pour être notifiées d'évènements; fonction de mise en oeuvre d'applications clientes par le serveur 25 afin que celui-ci soit notifié de certains évènements. On peut n'utiliser que certaines des fonctions ci-dessus. Pour faciliter son intégration et la rendre la plus évolutive possible, l'API 140 se conforme de préférence aux spécifications du PAM forum (Presence and Availability Management). De manière plus détaillée, voici un mode de réalisation de chacune de ces interfaces (I1 I7): Il. Identity Management Interface Cette interface fournit une API pour la gestion des utilisateurs et 35 des listes. 2857479 13 addToGroupO: Ajoute un utilisateur à un groupe ou liste (communément appelé "liste de contacts" ou "listes d'amis"). La liste comme l'utilisateur ont été préalablement créés. createldentity() : Tout utilisateur peut utiliser les facilités du service de gestion de présence. Pour ce faire, il est déclaré par l'application à l'aide de cette fonction en fournissant son identifiant (nom+contexte). createGroup/dentity() : Création d'une nouvelle liste. La liste est associée à un utilisateur. Elle contient un ensemble d'autres utilisateurs préalablement créés. de/eteldentity() : Cette fonction est appelée pour le désenregistrement d'un utilisateur et des médias associés. de/eteGroup/dentity() : Cette fonction supprime une liste préalablement créée. is/dentity() ; Cette fonction teste si l'utilisateur est enregistré ou non. isGroup/dentity() :Cette fonction vérifie que la liste existe. /istMembers() : Cette fonction liste les membres d'une liste. 12. Agent Management Interface Cette interface fournit une API pour la gestion des médias. isAgent() : Cette fonction teste si le média est enregistré ou non. createAgent() : Cette fonction crée un média en ajoutant les entrées dans les tables correspondantes et provoque la déclaration du média auprès du SGP concerné afin de recevoir des notifications le concernant. deleteAgent() : Cette fonction supprime le média des tables puis elle fait appel à la fonction de désenregistrement d'un média de l'interface SGP. isCapab/e OfO: Cette fonction teste si le média a la capacité mentionnée. Une capacité représente une ou plusieurs caractéristiques techniques d'un média traduisant la possibilité de ce dernier de participer aux communications et à l'échange de données (exemple: message instantané, WAP, SMS...). enableCapabi/ities() Cette fonction associe une capacité à un média. 2857479 14 disableCapabi/ities() : Cette fonction supprime une capacité à un média donné. /istA/lCapabi/ities() : Cette fonction liste toutes les capacités d'un média. 13, Agent Assignement Interface Cette interface permet de rattacher les médias aux utilisateurs. isldentityCapab/eOfO: Cette fonction teste si, parmi les médias que l'utilisateur possède, il existe un média qui a la capacité demandée. /istCapabi/itiesOldentity() : Cette fonction liste toutes les capacités d'un utilisateur. /istAssignedAgentsByCapabi/ity( : Cette fonction liste tous les médias d'un utilisateur qui ont une certaine capacité. /istAssignedAgents() : Cette fonction retourne tous les médias associés à un utilisateur. /istAssociated/dentitiesOfAgent() : Cette fonction retourne tous les utilisateurs d'un media. assignAgentO: Cette fonction associe un média à un utilisateur. 20 unassignAgent() : Cette fonction supprime un média à un utilisateur. 14. Agent Presence Interface Cette interface fournit une API pour obtenir ou modifier l'état de 25 présence des médias. getAgentPresence() : Cette fonction retourne la valeur des attributs de présence demandés pour un média donné. getCapabilityPresence() : Cette fonction retourne la valeur des attributs pour une capacité spécifique d'un média. set4gentPresence() : Cette fonction positionne les attributs de présence d'un média donné. setCapabi/ityPresence() : Cette fonction positionne la valeur des attributs d'un ensemble de capacités d'un média donné. 15 Identity Presence Interface Cette interface permet d'obtenir ou de modifier les informations de présence des utilisateurs. 2857479 15 getldent/tyPresenceO: Cette fonction retourne la valeur de tous les attributs demandés pour chaque média utilisé par l'utilisateur. setldentityPresence() : Cette fonction positionne la valeur des attributs d'un utilisateur donné. 16, Event Management Interface Cette interface permet aux applications de s'enregistrer (ou de se désenregistrer) afin d'être notifiées d'évènements. registerApp/nterface() : Enregistrement de l'interface de 10 notification d'une application donnée. deregisterAPP/nterface() : Désenregistrement de l'interface denotification d'une application préalablement enregistrée. registerForEvent/deregisterFromEventt Enregistrement/désenregistrement d'une application cliente pour un événement donné. Les évènements demandés sont par exemple les suivants: - PAM CE AGENT PRESENCE SET: pour être notifié des changements d'état de présence explicite d'un utilisateur sur un média 20 donné, - PAM CE _IDENTITY PRESENCE SET: pour être notifié des changements d'état de présence explicite d'un utilisateur (un utilisateur est déclaré présent si l'un de ses médias est à l'état présent) 17, Application Notification Interface Cette interface est implémentée et proposée par une application cliente afin d'être notifiée de certains évènements. Le serveur 10 fonctionne alors comme client de l'application et celle-ci est serveur. Lorsqu'un changement d'état a lieu, le serveur 10 invoque ou appelle cette fonction ou interface dans l'application, cette fonction ou interface permettant de notifier les changements à l'application. eventNotify() : Cette fonction est utilisée par le module 10 pour notifier une application d'un événement. Les fonctions des connecteurs 132, 134, 136 vont maintenant être décrites. 2857479 16 Le module 100 fournissant une interface standard indépendante des SGPs 24-i, le rôle d'un module connecteur 132 134 est essentiellement l'adaptation protocolaire entre ce module 100 et le SGP 20. Il y a autant de connecteurs que d'interfaces SGP différentes. Il existe plusieurs types de protocoles d'interface avec les systèmes de gestion de présence SGP 24-i. Certains sont standardisés ou en cours de standardisation par l'IETF tels que: - SIMPLE (RFC 3265), qui est utilisé aussi pour transporter les messages échangés entre messageries instantanées. - XMPP (Internet draft), protocole défini par Jabber, qui est utilisé principalement pour la messagerie instantanée; il fournit un ensemble de fonctionnalités qui supportent la notion de présence. En plus de ces standards, il existe de nombreux protocoles propriétaires tels que ceux d'ICQ et d'AOL. Le connecteur SIMPLE (SIP for Instant Messaging and Presence Leveraging Extensions) met en oeuvre un protocole permettant l'interopérabilité entre les services de message instantané et de présence conformément au RFC 2779 et aux spécifications du CPIM (Common Presence and Instant Messaging). SIMPLE permet de proposer une structure générale de notifications d'événements qui a ensuite été instanciée pour SIP, de proposer une extension de SIP pour le transport des IM (Instant Message); et de proposer une extension de SIP pour supporter les messages de souscription et notification utilisés par des serveurs de gestion de présence. Les fonctions de ce connecteur sont principalement les quatre suivantes: Authentification/Identification Le connecteur est vu comme un client ordinaire par le serveur de présence SGP. Lors de son lancement ou lors d'une souscription, il s'identifie auprès de ce serveur par un authentifiant/identifiant. Cet identifiant est propre au module. - Déclaration d'un utilisateur auprès du SGP: Cette demande est envoyée au SGP à partir de son identifiant utilisateur. Le module d'adaptation mémorise tous les utilisateurs qu'il traite avec la date de leur dernière déclaration pour lui permettre de l'actualiser (timeout d'une heure) ou en cas de redémarrage du module. - Mise à jour de l'état de présence d'un média: Le connecteur reçoit des notifications (message NOTIFY) à propos des changements 2857479 17 d'état d'un média d'un utilisateur qu'il filtre et retransmet au module 100. Les notifications sont reçues sous format text/Ipidf . Réciproquement, le connecteur reçoit des demandes de changement d'état d'un média d'un utilisateur des applications 22-i qu'il 5 retransmet au SGP. Désenregistrement d'un utilisateur: Cette fonctionnalité envoie un message SUBSCRIBE au serveur de présence puis supprime l'utilisateur de la base locale. Jabber est un système de messagerie instantanée et de gestion de présence basé sur le protocole XMPP (eXtensible Messaging and Presence Protocol). Il est conçu pour être interopérable avec plusieurs services de messagerie instantanée comme AIM, Yahoo Messenger, MSN Messenger et ICQ via des passerelles. Les fonctions du connecteur associé sont principalement les quatre suivantes: - Authentification/Identification: Le connecteur est en fait un simple client Jabber. Il doit tout d'abord se connecter et s'identifier (comme tout autre client du serveur Jabber) avant de faire appel à des objets lui permettant de communiquer avec le serveur Jabber. - Déclaration d'un utilisateur auprès du SGP: Jabber utilise le terme roster pour les listes de contacts. Dans un roster, il peut y avoir les listes de contacts ainsi que des ressources que l'on veut sauvegarder comme par exemple les noms de salons de discussion. Pour ce connecteur, il est utilisé pour sauvegarder les noms des utilisateurs dont les états de présence sont intéressants. Un utilisateur à déclarer au serveur Jabber est ajouté dans le roster, puis il est souscrit à son état de présence. Pour pouvoir recevoir des notifications, il faut déclarer un état de 30 présence comme available au serveur. Le serveur interroge l'utilisateur en question s'il accepte la demande de souscription. Dans le cas positif, le serveur envoie des notifications chaque fois qu'il y a un changement dans l'état de présence de l'utilisateur concerné. - Désenregistrement d'un utilisateur: Le désenregistrement d'un utilisateur correspond tout simplement à la suppression de cet utilisateur du roster. Si on souhaite juste ne plus recevoir de notification tout en 2857479 18 conservant l'utilisateur dans la liste de contact, il suffit d'envoyer un message de type Presence.UNSUBSCRIBE. Il faut noter que la suppression d'un utilisateur du roster entraîne systématiquement l'annulation de la souscription de présence, par contre l'ajout d'un utilisateur au roster n'entraîne pas automatiquement une souscription. Mise à jour de l'état de présence d'un média: Le connecteur reçoit des réponses du serveur. Afin d'exploiter ces réponses, des écouteurs (ou /isteners) sont mis en place, et notamment pour les notifications sur la présence d'un utilisateur. A chaque fois qu'une notification est reçue, les informations de présence sont mises à jour. Réciproquement, le connecteur reçoit des demandes de mise à jour en provenance des applications qu'il retransmet au SGP via l'API SGP 130. Les connecteurs applicatifs 151 - 157 permettent d'offrir de multiples interfaces d'invocation du module 10. Ils sont supportés par l'API applicative 140 décrite ci-dessus et dialoguent donc avec le module 100 en utilisant les fonctions de cette API. Le système comporte par exemple un ou des connecteurs de consultation et/ou de modifications de données 152 155 et un ou des connecteurs 156, 157 utilisés pour la notification d'informations ou de données du serveur 10 vers une ou des applications 22-1, 22-2. Dans le présent exemple, on identifie 5 connecteurs (Web Service, HTTP, VXML, email et SMS). D'autres connecteurs ou configurations de connecteurs sont bien évidemment envisageables. Un connecteur WebService 151 permet de faire communiquer deux soussystèmes d'architectures semblables ou différentes de manière standard dans le but d'échanger des services ou des traitements applicatifs. Le connecteur de type WebService mis en place permet d'accéder aux fonctions du module 100. La communication avec le connecteur se fait via une interface fournit par ce connecteur: seules les fonctionnalités du module 100 exposées au travers de cette interface sont accessibles par les applications clientes. La communication entre le connecteur et l'application cliente se fait en utilisant le protocole SOAP. 2857479 19 L'interface est fournie aux applications clientes qui souhaitent s'interfacer avec le module 100 soit sous forme de fichier WSDL soit, quand c'est possible, sous forme de code (généré à partir des spécifications de l'interface fournies par le fichier WSDL) permettant l'implémentation au niveau du client d'un proxy SOAP (code permettant le codage / décodage des données à transmettre au format SOAP). L'accès aux fonctionnalités exposées du module 100 est réalisé au niveau du client en deux étapes successives: appel du service soit directement par sa description WSDL, soit en utilisant un proxy SOAP issu du fichier WSDL puis appel de la méthode correspondant à la fonctionnalité à laquelle on souhaite accéder. L'accès au service et aux fonctionnalités qui lui sont associées peut être effectué à partir d'une application cliente implémentée dans tout langage offrant des implémentations de SOAP (Java, PHP, Perl...). Un Connecteur HTTP 152 est en fait un serveur HTTP qui héberge un ensemble de pages HTML offrant une interface Web permettant d'accéder aux fonctions de gestion de présence du module 100. Ce connecteur permet donc d'accéder aux fonctions de ce module à partir d'un. simple navigateur Web. L'interface Web se compose des pages suivantes: - une page d'identification de l'utilisateur une page d'accueil présentant la liste courante de contacts (et l'état de présence de chaque membre de la liste) et les fonctions accessibles (modification état de présence, gestion de la buddy Iist) une page modification de la gestion de présence une page gestion de la liste de contact présentant les fonctions associées (ajout, suppression...) une page par fonction possible au niveau de la liste de contacts. Un Connecteur VXML 153 permet à des applications d'accéder sous forme vocale aux fonctions du module 100. Il suffit pour cela de rendre accessible sur le connecteur des fichiers VXML (fichiers aux formats XML) que l'application récupère selon un protocole établi (souvent HTTP). L'application est en fait un serveur vocal doté d'un interpréteur VXML qui communique avec le connecteur en lui demandant des pages VXML et en fonction des choix faits par l'utilisateur au travers de l'interface vocale. 2857479 20 Le connecteur traduit ces choix en invocation de fonctions du modules 100. Quand une fonction retourne un résultat, comme par exemple de sa liste de contacts, ce retour est alors traduit dynamiquement en fichier VXML afin que l'utilisateur final puisse en prendre connaissance. Un Connecteur email 154 permet à l'application d'invoquer les fonctions du module 100 par envoi de courriers électroniques. Les messages que doit envoyer l'application ont la forme suivante: objet et corps. L'objet contient le nom de la fonction à invoquer, et dans le corps du message les paramètres de la fonction. Selon un exemple: Objet: createGroupldentity Corps: nom de la liste, type de la liste, identifiant du demandeur Le connecteur traduit les messages émis par l'application et les convertit en requête de l'API applicative. Dans l'exemple donné, le connecteur invoque la fonction createGroup/dentityQ. Certaines requêtes peuvent nécessiter un retour comme par exemple getAgentPresenceO. Pour cela le connecteur retourne le résultat 20 en envoyant une réponse au message initiateur. Le message a la forme suivante: Objet: RE: getAgentPresence Corps: Un Connecteur SMS 155 fonctionne un peu comme le connecteur 25 email. L'application envoie des messages SMS pour invoquer une fonction du module 100. Le format des messages SMS est le suivant: nom fct a in voquerlparametrellparametre2/... De la même façon, si une requête nécessite une réponse, un message SMS est envoyé en retour à l'application selon le format: nom fct invoqueelvaleur retourllvaleur retour2l... Un autre type de connecteur, dit de notification, permet au module 100 de notifier les applications utilisatrices d'évènements particuliers. Un connecteur de notification implémente l'interface "Application Notification Interface" et est capable de transmettre les messages de notification reçus, du module 100 aux applications en ayant fait la demande, selon un protocole choisi par ces applications. 2857479 21 Il est aussi capable de prendre en compte les messages d'enregistrement et de désenregistrement envoyés par les applications. Il existe un connecteur par protocole supporté. 22 REVENDICATIONS 1. Dispositif de traitement de données de présence d'appareils d'utilisateurs, comportant: - des premiers moyens d'interface (140), pour l'accès d'au moins une première application (22-1, 22-2) audit dispositif, - des moyens (11) de communication avec au moins une base de données de présence (12, 120), et de gestion de cette base de données, - des deuxième moyens d'interface (130) pour émettre une requête d'envoi d'informations de modifications de données de présence vers un deuxième dispositif de traitement de données (24-1, 24-2, 24-3) et pour recevoir lesdites informations de modifications. 2. Dispositif selon la revendication 1, les moyens (11) de gestion de ladite base de données (12, 120) permettant une mise à jour de cette base en fonction des informations de modifications de données reçues du deuxième dispositif de traitement de données (24-1, 24-2, 24-3). 3. Dispositif selon la revendication 1 ou 2, les premiers moyens d'interface (140) constituant une interface multimodale. 4. Dispositif selon l'une des revendications 1 à 3, les deuxième moyens d'interface (130) permettant l'émission d'une requête d'envoi d'informations de modifications de données de présence vers un troisième dispositif de traitement de données. 5. Dispositif selon l'une des revendications 1 à 4, comportant en outre au moins un connecteur (132, 134, 136) pour adapter un protocole du dispositif à un protocole du deuxième dispositif de traitement de données et éventuellement d'autres dispositifs de traitement de données. 6. Dispositif selon l'une des revendications 1 à 5, comportant en outre des moyens pour envoyer ou notifier ladite première application 2857479 23 (22-1, 22-2) d'un changement dans les données contenues dans la base de données (12, 120). 7. Dispositif selon la revendication 6, l'envoi ou la notification d'un changement étant réalisé en fonction de données d'adressage de l'application contenues dans la base de données (12, 120). 8. Dispositif selon l'une des revendications 1 à 7, comportant en outre des moyens (100, 140) pour recevoir des informations de modification de données de la part de ladite première application (22-1, 22-2), lesdits moyens (11) de gestion de ladite base de données (12, 120) permettant une mise à jour de cette base en fonction de ces informations de modification. 9. Dispositif selon la revendication 8, comportant en outre des moyens (100, 130) pour transmettre lesdites informations de modification de données reçues de la part de ladite première application vers le deuxième ou éventuellement d'autres dispositifs (24-1,...24-n) de traitement de données. 10. Dispositif selon la revendication 9, lesdites informations de modification de données reçues de la part de ladite première application étant transmises en fonction de données d'adressage contenues dans la base de données (12,120). 11. Dispositif selon l'une des revendications 1 à 10, comportant en outre des moyens (100, 140) pour ajouter ou supprimer un utilisateur ou un appareil d'un utilisateur dans la base de données. 12. Dispositif selon l'une des revendications 1 à 11, comportant en outre des moyens (100, 140) pour vérifier, dans la base de données, qu'un appareil est enregistré et/ou a au moins une capacité ou caractéristique donnée et/ou pour créer ou supprimer, dans la base de données, un appareil ou une capacité ou caractéristique d'un appareil dans la base de données. 2857479 24 13. Dispositif selon l'une des revendications 1 à 12, comportant en outre des moyens (100, 140) pour rechercher une capacité donnée parmi les appareils d'un utilisateur et/ou rechercher toutes les capacités d'un utilisateur et/ou rechercher tous les appareils d'un utilisateur qui ont une capacité définie, et/ou envoyer l'information concernant tous les appareils d'un utilisateur et/ou rechercher tous les utilisateurs d'un type d'appareils, et/ou ajouter ou supprimer un appareil en relation avec un utilisateur. 14. Procédé de traitement de données de présence d'appareils d'utilisateurs, reçues par au moins un appareil serveur (24-1,...24-n), ce procédé comportant: - la transmission, à un deuxième appareil serveur (10), desdites données de présence, - la mise à jour, par ce deuxième appareil serveur, en fonction des données reçues, d'une base de données de présence (12, 120). 15. Procédé selon la revendication 14, comportant en outre l'envoi, à au moins une application (22-1, 22-2), d'informations concernant de modifications de données de présence d'au moins un appareil d'utilisateur. 16. Procédé selon la revendication 14 ou 15, comportant l'envoi, par le deuxième serveur au premier serveur, d'une requête d'envoi d'informations de modifications de données de présence. 17. Procédé selon l'une des revendications 14 à 16, comportant la réception, par le deuxième serveur, d'une requête d'envoi d'informations de modifications de données de présence, cette requête étant émise par une application (22-1, 22-2). 18. Procédé selon l'une des revendications 14 à 17, comportant en outre la réception, par le deuxième serveur, d'informations relatives à des modifications des données de présence d'au moins un appareil d'un utilisateur, ces informations étant émises par une des applications (22-1, 22-2). 2857479 25 19. Procédé selon la revendication 18, comportant en outre la transmission, par le deuxième serveur (10) au premier serveur (24-1,...24n), desdites informations relatives à des modifications des données de présence d'au moins un appareil d'un utilisateur, émises par une des applications. 20. Procédé selon l'une des revendications 15 à 19, comportant en outre la mise à jour ou la modification ou la recherche, dans la base de données (12, 120), de données relatives à au moins un appareil utilisé par au moins un utilisateur, ou à une caractéristique d'un tel appareil.