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]