Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Make ruby talk to your users - literally

Make ruby talk to your users - literally

My talk at RubyConf India 2014 (http://rubyconfindia.org/2014/) on Adhearsion

Bhavin Javia

March 22, 2014
Tweet

More Decks by Bhavin Javia

Other Decks in Technology

Transcript

  1. Why voice ? ❖ Many more people have phones than

    PCs/ internet! ❖ Many people prefer voice communications over other channels! ❖ Voice provides interesting use-cases that text and images alone can’t! ❖ Integrating computers with phones sounds like magic !
  2. What is Adhearsion ? ❖ Framework for voice apps! ❖

    Business layer of telephony stack! ❖ Adhearsion = “adhesion” + “hear”! ❖ Glues voice layer to rest of the world
  3. <3

  4. What is Adhearsion ? ❖ Written in Ruby! ❖ Open

    Source! ❖ Easy to use DSL! ❖ Powerful eventing! ❖ Plugins for common problems! ❖ Helpful community! ❖ Democratising telephony
  5. Who is it for ? ❖ Voice app developers! ❖

    Voice service providers! ❖ Telephony network providers! ❖ Ruby developers! ❖ Web developers! ❖ Anyone who doesn’t know ABC of telecom Not just for the telecom guys
  6. Where is it used ? ❖ IVRs! ❖ Call Center/Sales

    Force Automation! ❖ Surveys! ❖ Directory/Translation services! ❖ Automated reminders! ❖ Tele-marketing! ❖ Shopify (http://vimeo.com/33038589)! ❖ Your app ?
  7. Adhearsion Features ❖ IVR Menus! ❖ Call answering, transfer, conferencing!

    ❖ Voicemails! ❖ Click-to-call! ❖ TTS or Audio playback! ❖ ASR! ❖ Answering Machine Detection
  8. Connecting Adhearsion ❖ Database - via Sequel! ❖ HTTP client

    - HTTParty, RestClient etc! ❖ Redis - via redis gem! ❖ DRb - via adhearsion-drb! ❖ AMQP and other queues! ❖ HTTP server - Reel, Sinatra! ❖ XMPP - adhearsion-xmpp http://www.confreaks.com/videos/2266-adhearsionconf2012-connecting-adhearsion
  9. Instructions ❖ Everyone, please Switch OFF your WiFi :)! ❖

    4-5 people, please raise your hands to volunteer
  10. Features Demo’ed ❖ Call Routing! ❖ IVR (ASR)! ❖ TTS!

    ❖ Integration! ❖ to external APIs e.g. Twitter API! ❖ via Ruby libraries e.g. twitter gem
  11. Celluloid ❖ OOP + Actor model! ❖ Concurrent objects! ❖

    Adhearsion uses Celluloid! ❖ Sidekiq users Celluloid! ❖ It’s an ecosystem - Celluloid::IO, DCell, Reel https://github.com/celluloid/celluloid
  12. Punchblock ❖ Middleware library for telephony applications! ❖ Similar to

    Rack for Rails/Sinatra! ❖ Consistent API over third-party call control protocols - Rayo, Asterisk, FreeSWITCH! ❖ Frameworks/Apps can leverage Punchblock’s APIs! ❖ Not a framework in itself! ❖ https://github.com/adhearsion/ punchblock
  13. FreeSWITCH with mod_rayo ❖ Calls bridging! ❖ Call rejection/redirection! ❖

    Outbound dialing! ❖ Audio playback! ❖ Audio input! ❖ Audio recording ❖ Fax! ❖ Call Progress Analysis! ❖ Supervisory tone detection! ❖ Answering nachhing detection! ❖ Fax tone detection!
  14. SIP (Session Initiation Protocol) ❖ Communications protocol! ❖ Controls media

    communication sessions! ❖ e.g. Voice/Video calls over IP! ❖ Standardised as RFC 3261 under IETF! ❖ Application layer protocol! ❖ Independent of underlying transport - TCP/UDP/SCTP/ SMTP! ❖ Uses other protocols - SDP/RTP/SRTP! ❖ Similar to HTTP’s request/response model
  15. DID (Direct Inward Dialing) ❖ DID numbers purchased from carrier

    website! ❖ IP Address/FQDN of voice network provided to carrier! ❖ Same or different carrier provides out bound dialling! ❖ Calls are routed to single FS server or OpenSIPS proxy
  16. TTS (Text-To-Speech) ❖ Adhearsion itself does not provide a TTS

    engine! ❖ Works with various TTS engines via VOIP platforms like Asterisk, FreeSWITCH etc! ❖ TTS Engines - Festival, Cepstral, Lumevox, Nuance, AT&T Speech API, Google Translate! ❖ CallController#say
  17. ASR (Automatic Speech Recognition) ❖ Adhearsion supports third-party ASR engines!

    ❖ ASR Engines - PocketSphinx, Lumevox, Nuance, Vestec, AT&T Speech API! ❖ Plugin - https://github.com/adhearsion/adhearsion-asr! ❖ More insights - http://adhearsionconf.com/events/adhearsion-mania/
  18. Finding Help ❖ Documentation - adhearsion.com/docs! ❖ Mailing list -

    groups.google.com/forum/#!forum/adhearsion! ❖ Github Issue Tracker - github.com/adhearsion/adhearsion/issues! ❖ Reusable Plugins - ahnhub.com! ❖ IRC - adhearsion.com/irc! ❖ Talks - adhearsion.com/media! ❖ Conference - adhearsionconf.com
  19. Remember ❖ There is lots of fraud in telephony! ❖

    Be very careful when exposing your server to the public internet! ❖ Use access control lists to reject all SIP / XMPP traffic from untrusted IPs! ❖ Do not use default usernames and passwords in example configuration! ❖ Encrypt traffic between FS and Adhearsion - if not in same LAN! ❖ Be careful about letting customers dial expensive countries! ❖ Block dialing to premium numbers or non-market parts of the world! ❖ RTP is not encrypted if using SIP! ❖ Use SRTP with SSIP for encrypted audio
  20. References ❖ adhearsion.com! ❖ speakerdeck.com/benlangfeld! ❖ slideshare.net/bklang/presentations! ❖ vimeo.com/adhearsion! ❖

    mojolingo.com/blog/2014/adhearsion-survey-results-v2! ❖ github.com/MavenHive/social-feed-talker (demo app)