2. A propos
Autodidacte
Sysadmin
Python, C
Asterisk
Freeswitch
Lead dev SVI, solutions téléphoniques
Fondateur Plivo Inc (San Francisco)
YCombinator Summer 2012 (Paul Graham)
3. La problématique
Les APIs téléphoniques ne sont pas
adaptées pour le développement
aujourd’hui.
- VXML, CCXML
- APIs propriétaires : Cisco, Avaya, …
- CSTA
- TAPI
Et autres …
5. Ce qu’on peut faire avec Plivo
Click2Call
Conference
Serveur Vocal Intéractif (menu vocaux, saisie DTMF, …)
Centre d’appel
Boite vocale
IP PBX
Campagnes d’appels sortants/entrants
Spammer votre voisin bruyant avec des appels
6. Les logiciels opensource
utilisés
- Freeswitch est un commutateur téléphonique
gérant les protocoles SIP, Jingle, ISDN, H323, …
- Plivo : Python + gevent + Flask : expose les
fonctionnalités téléphoniques de Freeswitch sous
forme de composants web XML et HTTP .
- Redis : stockage de données
7. Freeswitch
http://freeswitch.org/
- Licence MPL, écrit en C, modulaire
- Module eventsocket : communication avec
une socket depuis un programme externe :
• Récupérer les évènements des appels :
answer, hangup, …
• Exécuter des commandes :
play, record, bridge, conference ,…
• Communication bi-directionnelle
8. Plivo
http://plivo.com/opensource/
- Licence MPL
- Une API utilisable par tous les
développeurs :
python, ruby, perl, php, node.js, java, …
- Python + gevent + Flask
• gevent.socket : communique avec
Freeswitch via eventsocket
• Flask : expose l’API HTTP
9. Plivo XML
Pour chaque appel, Plivo récupère le scénario XML via une
requête HTTP .
La réponse XML peut contenir différents types de blocs XML :
- Record
- Dial
- Play
- GetDigits
- Conference
…
10. Plivo API
Utilise le protocole HTTP .
Intéraction dynamique avec les appels en cours :
- Enregistrer un appel
- Transférer un appel vers un autre scénario
- Raccrocher un appel
- Jouer un son
...
31. Cache des fichiers audio
- Flask + gevent.wsgi : proxy cache entre Plivo et
l’url du fichier audio (wav ou mp3)
- Urllib2 : vérification HTTP HEAD, headers
Etag/Last-Modified
- Redis : stocke les fichiers audio avec :
- Un ID basé sur l’url du fichier audio
- La date de dernière modification
32. Benchmarks
Un serveur dédié avec Freeswitch et Plivo :
• 4 cores Xeon 2.4 Ghz
• 4 GB RAM
• Tests effectués avec sipp
800 appels simultanés
33. Plivo Cloud
• Version hébergée multi serveurs
• Gestion des appels et des numéros pour 50
pays
• Gestion des comptes SIP
• On recrute !