SlideShare uma empresa Scribd logo
1 de 35
Créer rapidement des
applications téléphoniques
      http://plivo.org

Par Michaël Ricordeau
@mricordeau / mike@plivo.com
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)
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 …
La problèmatique
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
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
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
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
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
…
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
...
Installation
•   Freeswitch
    •   https://github.com/plivo/plivoframework/raw/master/freeswit
        ch/install.sh
    •   bash install.sh

•   Plivo
    •   https://github.com/plivo/plivoframework/raw/master/scripts/p
        livo_install.sh
    •   bash plivo_install.sh /usr/local/plivo

•   Redis
    •   http://redis.io : download, make, make install
Plivo Configuration

/usr/local/plivo/etc/plivo/default.conf
Freeswitch Configuration : Pour
  faire des appels depuis Plivo
/usr/local/freeswitch/conf/sip_profiles/external/gate
way.xml
Freeswitch Configuration : Pour
    faire des appels vers Plivo
/usr/local/freeswitch/conf/autoload_configs/acl.conf
.xml
Freeswitch Configuration :
               Dialplan
/usr/local/freeswitch/conf/dialplan/default.xml
Freeswitch : créer un compte
                          SIP
/usr/local/freeswitch/conf/directory/default/mike.xml
Freeswitch : plus d’infos

 http://wiki.freeswitch.org/

 IRC Freenode :

       #freeswitch , #freeswitch-fr
Démarrage
   Freeswitch
       /usr/local/freeswitch/bin/freeswitch -nc

   Plivo
       /etc/init.d/plivo start
       /etc/init.d/plivocache start

   Redis
       /etc/init.d/redis-server start
Exemples




Python, PHP et Ruby
Jouer un son
Jouer un son
 en Python
Transférer
 un appel
en Python
Click2Call en PHP
Menu vocale
Menu vocale en Ruby
Démos

 Musique d’attente

 Click2Call

 Click2SIP
XML Call Flow
HTTP API Flow
Core Code : Dialer
Core Code : Event Listener
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
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
Plivo Cloud
•   Version hébergée multi serveurs

•   Gestion des appels et des numéros pour 50
    pays

•   Gestion des comptes SIP

•   On recrute !
Questions ?
Merci !

@mricordeau

Mais conteúdo relacionado

Destaque

PATHS at the eCult dialogue day 2013
PATHS at the eCult dialogue day 2013PATHS at the eCult dialogue day 2013
PATHS at the eCult dialogue day 2013pathsproject
 
IND-2012-243 DAV Public School, Kansbahal -Wonders of Herbs - A journey towar...
IND-2012-243 DAV Public School, Kansbahal -Wonders of Herbs - A journey towar...IND-2012-243 DAV Public School, Kansbahal -Wonders of Herbs - A journey towar...
IND-2012-243 DAV Public School, Kansbahal -Wonders of Herbs - A journey towar...designforchangechallenge
 
PATHS Content processing 2nd prototype-revised.v2
PATHS Content processing 2nd prototype-revised.v2PATHS Content processing 2nd prototype-revised.v2
PATHS Content processing 2nd prototype-revised.v2pathsproject
 
PATHS: User Requirements Analysis v1.0
PATHS: User Requirements Analysis v1.0PATHS: User Requirements Analysis v1.0
PATHS: User Requirements Analysis v1.0pathsproject
 
PATHS Final state of art monitoring report v0_4
PATHS  Final state of art monitoring report v0_4PATHS  Final state of art monitoring report v0_4
PATHS Final state of art monitoring report v0_4pathsproject
 
PATHS Final prototype interface design v1.0
PATHS Final prototype interface design v1.0PATHS Final prototype interface design v1.0
PATHS Final prototype interface design v1.0pathsproject
 
Санкт-Петербургский консенсус. Новая экономическая политика для мира
Санкт-Петербургский консенсус. Новая экономическая политика для мираСанкт-Петербургский консенсус. Новая экономическая политика для мира
Санкт-Петербургский консенсус. Новая экономическая политика для мираmediamera
 
PATHSenrich: A Web Service Prototype for Automatic Cultural Heritage Item Enr...
PATHSenrich: A Web Service Prototype for Automatic Cultural Heritage Item Enr...PATHSenrich: A Web Service Prototype for Automatic Cultural Heritage Item Enr...
PATHSenrich: A Web Service Prototype for Automatic Cultural Heritage Item Enr...pathsproject
 
Exchange clients and their public facing exchange server part 13#36
Exchange clients and their public facing exchange server  part 13#36Exchange clients and their public facing exchange server  part 13#36
Exchange clients and their public facing exchange server part 13#36Eyal Doron
 
Presentatie bibnet
Presentatie bibnetPresentatie bibnet
Presentatie bibnetBramStarckx
 
Outlook test e mail auto configuration autodiscover troubleshooting tools p...
Outlook test e mail auto configuration  autodiscover troubleshooting tools  p...Outlook test e mail auto configuration  autodiscover troubleshooting tools  p...
Outlook test e mail auto configuration autodiscover troubleshooting tools p...Eyal Doron
 
Boletim informativo novembro/dezembro 2015
Boletim informativo novembro/dezembro 2015Boletim informativo novembro/dezembro 2015
Boletim informativo novembro/dezembro 2015bibliotecasjuliomartins
 
WordPressをカスタマイズするなら知っておきたいこと~テンプレート階層~
WordPressをカスタマイズするなら知っておきたいこと~テンプレート階層~WordPressをカスタマイズするなら知っておきたいこと~テンプレート階層~
WordPressをカスタマイズするなら知っておきたいこと~テンプレート階層~Akinori Tateyama
 
IND-2012-254 Vivekanand M S, Mathalamparai -Don’t waste drinking water
IND-2012-254 Vivekanand M S, Mathalamparai -Don’t waste drinking waterIND-2012-254 Vivekanand M S, Mathalamparai -Don’t waste drinking water
IND-2012-254 Vivekanand M S, Mathalamparai -Don’t waste drinking waterdesignforchangechallenge
 
Should i use a single namespace for exchange infrastructure part 1#2 part ...
Should i use a single namespace for exchange infrastructure   part 1#2  part ...Should i use a single namespace for exchange infrastructure   part 1#2  part ...
Should i use a single namespace for exchange infrastructure part 1#2 part ...Eyal Doron
 

Destaque (16)

IND-2012-287 Anando -MILKY IDEA
IND-2012-287 Anando -MILKY IDEAIND-2012-287 Anando -MILKY IDEA
IND-2012-287 Anando -MILKY IDEA
 
PATHS at the eCult dialogue day 2013
PATHS at the eCult dialogue day 2013PATHS at the eCult dialogue day 2013
PATHS at the eCult dialogue day 2013
 
IND-2012-243 DAV Public School, Kansbahal -Wonders of Herbs - A journey towar...
IND-2012-243 DAV Public School, Kansbahal -Wonders of Herbs - A journey towar...IND-2012-243 DAV Public School, Kansbahal -Wonders of Herbs - A journey towar...
IND-2012-243 DAV Public School, Kansbahal -Wonders of Herbs - A journey towar...
 
PATHS Content processing 2nd prototype-revised.v2
PATHS Content processing 2nd prototype-revised.v2PATHS Content processing 2nd prototype-revised.v2
PATHS Content processing 2nd prototype-revised.v2
 
PATHS: User Requirements Analysis v1.0
PATHS: User Requirements Analysis v1.0PATHS: User Requirements Analysis v1.0
PATHS: User Requirements Analysis v1.0
 
PATHS Final state of art monitoring report v0_4
PATHS  Final state of art monitoring report v0_4PATHS  Final state of art monitoring report v0_4
PATHS Final state of art monitoring report v0_4
 
PATHS Final prototype interface design v1.0
PATHS Final prototype interface design v1.0PATHS Final prototype interface design v1.0
PATHS Final prototype interface design v1.0
 
Санкт-Петербургский консенсус. Новая экономическая политика для мира
Санкт-Петербургский консенсус. Новая экономическая политика для мираСанкт-Петербургский консенсус. Новая экономическая политика для мира
Санкт-Петербургский консенсус. Новая экономическая политика для мира
 
PATHSenrich: A Web Service Prototype for Automatic Cultural Heritage Item Enr...
PATHSenrich: A Web Service Prototype for Automatic Cultural Heritage Item Enr...PATHSenrich: A Web Service Prototype for Automatic Cultural Heritage Item Enr...
PATHSenrich: A Web Service Prototype for Automatic Cultural Heritage Item Enr...
 
Exchange clients and their public facing exchange server part 13#36
Exchange clients and their public facing exchange server  part 13#36Exchange clients and their public facing exchange server  part 13#36
Exchange clients and their public facing exchange server part 13#36
 
Presentatie bibnet
Presentatie bibnetPresentatie bibnet
Presentatie bibnet
 
Outlook test e mail auto configuration autodiscover troubleshooting tools p...
Outlook test e mail auto configuration  autodiscover troubleshooting tools  p...Outlook test e mail auto configuration  autodiscover troubleshooting tools  p...
Outlook test e mail auto configuration autodiscover troubleshooting tools p...
 
Boletim informativo novembro/dezembro 2015
Boletim informativo novembro/dezembro 2015Boletim informativo novembro/dezembro 2015
Boletim informativo novembro/dezembro 2015
 
WordPressをカスタマイズするなら知っておきたいこと~テンプレート階層~
WordPressをカスタマイズするなら知っておきたいこと~テンプレート階層~WordPressをカスタマイズするなら知っておきたいこと~テンプレート階層~
WordPressをカスタマイズするなら知っておきたいこと~テンプレート階層~
 
IND-2012-254 Vivekanand M S, Mathalamparai -Don’t waste drinking water
IND-2012-254 Vivekanand M S, Mathalamparai -Don’t waste drinking waterIND-2012-254 Vivekanand M S, Mathalamparai -Don’t waste drinking water
IND-2012-254 Vivekanand M S, Mathalamparai -Don’t waste drinking water
 
Should i use a single namespace for exchange infrastructure part 1#2 part ...
Should i use a single namespace for exchange infrastructure   part 1#2  part ...Should i use a single namespace for exchange infrastructure   part 1#2  part ...
Should i use a single namespace for exchange infrastructure part 1#2 part ...
 

Semelhante a Plivo OSDC FR 2012

Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyHugo Hamon
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
 
Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017AFUP_Limoges
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
ASFWS 2013 - Rump session - Un serveur d'authentification forte pour $35! par...
ASFWS 2013 - Rump session - Un serveur d'authentification forte pour $35! par...ASFWS 2013 - Rump session - Un serveur d'authentification forte pour $35! par...
ASFWS 2013 - Rump session - Un serveur d'authentification forte pour $35! par...Cyber Security Alliance
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Mannuel_Attaque_VoIP
Mannuel_Attaque_VoIPMannuel_Attaque_VoIP
Mannuel_Attaque_VoIPBelkacem KAID
 
LPIC1 10 01 logs
LPIC1 10 01 logsLPIC1 10 01 logs
LPIC1 10 01 logsNoël
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseAntonio Fontes
 
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...Patrick Guimonet
 

Semelhante a Plivo OSDC FR 2012 (20)

Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Symfony à la télé
Symfony à la téléSymfony à la télé
Symfony à la télé
 
Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017
 
Présentation VOIP
Présentation  VOIPPrésentation  VOIP
Présentation VOIP
 
Etude de la VoIP
Etude de la VoIPEtude de la VoIP
Etude de la VoIP
 
Hady bah l3
Hady bah l3Hady bah l3
Hady bah l3
 
Presentation
PresentationPresentation
Presentation
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Sip
SipSip
Sip
 
Soutenance.pptx
Soutenance.pptxSoutenance.pptx
Soutenance.pptx
 
ASFWS 2013 - Rump session - Un serveur d'authentification forte pour $35! par...
ASFWS 2013 - Rump session - Un serveur d'authentification forte pour $35! par...ASFWS 2013 - Rump session - Un serveur d'authentification forte pour $35! par...
ASFWS 2013 - Rump session - Un serveur d'authentification forte pour $35! par...
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Mannuel_Attaque_VoIP
Mannuel_Attaque_VoIPMannuel_Attaque_VoIP
Mannuel_Attaque_VoIP
 
LPIC1 10 01 logs
LPIC1 10 01 logsLPIC1 10 01 logs
LPIC1 10 01 logs
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défense
 
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
 

Plivo OSDC FR 2012

  • 1. Créer rapidement des applications téléphoniques http://plivo.org Par Michaël Ricordeau @mricordeau / mike@plivo.com
  • 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 ...
  • 11. Installation • Freeswitch • https://github.com/plivo/plivoframework/raw/master/freeswit ch/install.sh • bash install.sh • Plivo • https://github.com/plivo/plivoframework/raw/master/scripts/p livo_install.sh • bash plivo_install.sh /usr/local/plivo • Redis • http://redis.io : download, make, make install
  • 13. Freeswitch Configuration : Pour faire des appels depuis Plivo /usr/local/freeswitch/conf/sip_profiles/external/gate way.xml
  • 14. Freeswitch Configuration : Pour faire des appels vers Plivo /usr/local/freeswitch/conf/autoload_configs/acl.conf .xml
  • 15. Freeswitch Configuration : Dialplan /usr/local/freeswitch/conf/dialplan/default.xml
  • 16. Freeswitch : créer un compte SIP /usr/local/freeswitch/conf/directory/default/mike.xml
  • 17. Freeswitch : plus d’infos  http://wiki.freeswitch.org/  IRC Freenode : #freeswitch , #freeswitch-fr
  • 18. Démarrage  Freeswitch  /usr/local/freeswitch/bin/freeswitch -nc  Plivo  /etc/init.d/plivo start  /etc/init.d/plivocache start  Redis  /etc/init.d/redis-server start
  • 21. Jouer un son en Python
  • 26. Démos  Musique d’attente  Click2Call  Click2SIP
  • 29. Core Code : Dialer
  • 30. Core Code : Event Listener
  • 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 !