joignables depuis l`internet, via sip.
Transcription
joignables depuis l`internet, via sip.
1 SIP.edu, XMPP : d'autres usages en ToIP Philippe Sultan @ JTR 2 Le projet SIP.edu Projet académique initié par l'organisation Internet2 But : proposer une architecture cible visant à rendre les téléphones (IP ou non) joignables depuis l'Internet, via SIP • Identification par adresse email Réalisable à l'aide de logiciels libres • OpenSER/Kamailio pour le proxying et l'interrogation de l'annuaire • Asterisk comme interface vers l'IPBX 3 SIP.edu : pourquoi faire? Appeler des collaborateurs depuis un softphone en composant une adresse email SIP.edu propose une architecture cible pour être joignable • Ne sert pas à appeler des personnes externes 4 SIP.edu : exemple d'appel 5 SIP.edu : où en est-on? Peu d'activité dans le projet depuis trois ans Les softphones sont relativement peu répandus Le click-to-call s'est imposé • • Utilisable par le web ou depuis des applicatifs Facilement installable par des logiciels libres (Asterisk, FreeSWITCH, Kamailio, etc.) 6 SIP.edu : retour d'expérience SIP nous est plus familier • Problèmes de NAT Les logiciels libres montrent leur agilité • • Interconnexion avec du matériel propriétaire Intégration dans le système d'information (LDAP, DB, etc.) XMPP (Extensible Messaging and Presence Protocol) Autrefois appelé Jabber • Protocole client - serveur Un protocole de gestion de présence et de messagerie instantanée (IM pour Instant Messaging) • • • • Une liste de contacts Des informations en temps réel La possibilité de communiquer avec ses contacts Equivalent des systèmes propriétaires (MSN, Yahoo Messenger, etc.) Des spécifications et des logiciels libres • • • Les XEPs (XMPP Extension Protocols) forment le standard (l'équivalent des RFC publiées par l'IETF) Idéal pour déployer un système d'IM simple et fiable Le système d'IM de Google repose sur XMPP 7 8 Implémentations Serveurs • • • • Jabberd2 Ejabberd OpenFire Etc. Clients • • • • • Pidgin (thank you again Mark Spencer!) Psi Adium Empathy Etc. 9 XMPP et Asterisk Disponible depuis la série 1.4 • • Le module d'interface XMPP : res_jabber.so Les protocoles de ToIP associés : chan_gtalk.so et chan_jingle.so Asterisk est un client XMPP 10 Exemple : connexion à un serveur XMPP Fichier de configuration par défaut : /etc/asterisk/jabber.conf [asterisk] type=client serverhost=jabber.example.org [email protected] secret=tressecret 11 type=client vs type=component Utiliser le mode « client » de préférence Le mode « composant » ne permet rien de mieux que le mode « client » • La XEP 0114 est malheureusement très pauvre • A l'avenir, on peut envisager d'implémenter des commandes ad-hoc (XEP 0050) • Certains serveurs XMPP autorisent des connexions via une API interne – Exemple : OpenFire et son plugin Asterisk 12 Exemples de fonctionnalités (Asterisk 1.4) Notification d'appels en absence exten => • • • h,1,JabberSend(asterisk,[email protected],Appel reçu de ${CALLERID(all)}) asterisk : le compte configuré dans le fichier /etc/asterisk/jabber.conf [email protected] : l'identifiant du destinataire du message Le troisième argument est le message lui-même Etat XMPP d'un contact exten • • • => s,1,Set(USERSTATUS=${JABBER_STATUS(asterisk,[email protected])}) 1 : disponible … 6 : non connecté Exemples de fonctionnalités (Asterisk 1.6) : conférences XMPP et audioconférences 13 JabberJoin, JabberLeave, JabberSendGroup • • Interaction avec les salons de conférence (XEP 0045) Couplage MeetMe <=> Salons XMPP – Notification d'entrée/sortie en conférence téléphonique dans le salon XMPP Exemples de fonctionnalités : assistant personnel JABBER_RECEIVE • Nécessite un canal voix ouvert exten => 5555,1,Answer exten => 5555,n,JabberSend(asterisk,[email protected],Appel de $CALLERID(num) – choisissez une option) exten => 5555,n,JabberSend(asterisk,[email protected],1 : renvoi vers mobile) exten => 5555,n,JabberSend(asterisk,[email protected],2 : renvoi mevo) exten => 5555,n,JabberSend(asterisk,[email protected],Défaut : renvoi vers le poste professionnel) exten => 5555,n,Set(OPTION=${JABBER_RECEIVE(asterisk,[email protected],20)}) exten => 5555,n,GotoIf($[ “${OPTION}“ = “1“ ]?mobile) exten => 5555,n,GotoIf($[ “${OPTION}“ = “2“ ]?mevo) exten => 5555,n,Dial(SIP/${EXTEN}) exten => 5555,n,Hangup exten => 5555,n(mobile),JabberSend(asterisk,[email protected],Poste mobile...) exten => 5555,n,Dial(SIP/987654321@pstn-gateway) exten => 5555,n,Hangup exten => 5555,n(mevo),JabberSend(asterisk,[email protected],Messagerie vocale...) exten => 5555,n,Voicemail(${EXTEN},u) exten => 5555,n,Hangup 14 15 Téléphoner avec XMPP Pourquoi? • Faire du client XMPP un softphone Comment? • • • Le serveur XMPP n'est pas impliqué (ou si peu)! Sélectionner un contact et passer l'appel via une commande d'un menu Utiliser une passerelle (Asterisk) – Appeler la passerelle – Dialoguer en tchat pour transmettre un numéro de téléphone – Laisser la passerelle faire le travail 16 GoogleTalk (l'ancêtre de Jingle) Le système de messagerie instantanée et de gestion de présence de Google repose sur XMPP Google a développé un sous protocole pour les flux media • • Signalisation via XMPP Transport media via RTP Ce protocole est implémenté dans Asterisk exten => s,1,Dial(GTALK/asterisk/[email protected]) • • • asterisk : le compte configuré dans /etc/asterisk/jabber.conf [email protected] : l'utilisateur appelé Le module : chan_gtalk.so Implémenté aussi dans certains clients (Empathy, Pidgin, etc.) 17 GoogleVoice : le nouveau GoogleTalk Le softphone multiplateforme (MAC, Windows) de Google • Intègre un clavier numérique Permet de passer des appels téléphoniques classiques • A coût nul aux USA et au Canada Désormais intégré dans les logiciels libres • • FreeSWITCH Asterisk (1.8) 18 Jingle : le standard XMPP pour la voix Finalement standardisé (mi-2009) Des implémentations libres commencent à être disponibles • • • PSI (>= 0.13) Empathy (>= 2.28.1) Pidgin (>= 2.6.2) 19 Jingle et Asterisk En cours de développement • chan_jingle.so • Espéré pour la version 1.8 • Une branche de développement existe – Validée avec Empathy et Pidgin, toujours des problèmes avec PSI – Besoin d'aide pour l'inclure définitivement dans Asterisk : https://issues.asterisk.org/view.php?id=15634 exten => s,1,Dial(JINGLE/asterisk/[email protected]) 20 Merci! [email protected]