SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Integrating Voice
                     through Adhearsion
                               Luca Pradovera
                            Telephony Devroom
                               FOSDEM 2013
                         Brussels, February 3rd, 2013




venerdì 1 marzo 13
Who am I?
                     • Italian computer engineer
                     • No, I didn’t vote for Berlusconi
                     • Voice application developer at Mojo
                       Lingo LLC, Atlanta (GA)

                     • Managed to learn Ruby without doing
                       Rails work!


venerdì 1 marzo 13
What is Adhearsion?
                     • Ruby voice application framework
                     • Provides logic for telephony apps
                     • Open source and managed by a
                       Foundation

                     • Version 2.2.1 released on 06/01
                     • 2.0 was released in April 2012
venerdì 1 marzo 13
ADHEARSION 101



venerdì 1 marzo 13
Supported platforms
                     • Ruby 1.9 only - JRuby working
                     • Asterisk
                     • FreeSWITCH
                     • Voxeo PRISM
                     • Rayo protocol support (http://rayo.org/)

venerdì 1 marzo 13
Rayo sounds tasty.

                     • XMPP-based protocol for 3PCC
                     • Call control
                     • Audio and media control
                     • Telephony primitives

venerdì 1 marzo 13
Why should I use
                        Adhearsion?
                     • Dialplan applications only get you so
                       far

                     • Every platform has its own syntax
                     • Some features are simply impossible to
                       achieve

                     • It’s Ruby. Everybody likes Ruby.
venerdì 1 marzo 13
What can I do?




venerdì 1 marzo 13
How does Ahn talk to
                     platforms?
                     • Asterisk: AsyncAGI (AMI)
                     • FreeSWITCH: Inbound Event Socket
                     • PRISM: Pure Rayo


venerdì 1 marzo 13
Anatomy of an app
                     • Configuration
                     • Call Controllers
                     • Routing
                     • The ahn command: create, daemon,
                       start, stop, restart, generate, help,
                       version


venerdì 1 marzo 13
Call Controllers
                     • Hold the application logic (dialplan)
                     • The #run method is used to invoke the
                        controller

                     class SimpleController < Adhearsion::CallController
                       def run
                         answer
                         play "tt-weasels"
                         hangup
                       end
                     end




venerdì 1 marzo 13
Other features
                     • Playback, menus, user input, recording
                     • Configuration system
                     • Plugin architecture
                     • Routing
                     • Testability

venerdì 1 marzo 13
Sounds great, huh?




venerdì 1 marzo 13
Demo time!
    class DemoController < Adhearsion::CallController                  def enter_number
      def run                                                              number = ask "#{Adhearsion.config.platform[:root]}/sounds/
        answer                                                         please-enter", :limit => 1, :timeout => 5.seconds
        menu "#{Adhearsion.config.platform[:root]}/sounds/demo-            if number
    menu", :timeout => 5.seconds, :tries => 3 do                             play "#{Adhearsion.config.platform[:root]}/sounds/you-
          match 1 do                                                   entered"
            enter_number                                                     play "digits/#{number}"
          end                                                              end
          match 2 do                                                     end
            record_message
          end                                                            def record_message
                                                                           play "#{Adhearsion.config.platform[:root]}/sounds/please-
          timeout do                                                   speak-after"
             play "#{Adhearsion.config.platform[:root]}/sounds/menu-       record_result = record :start_beep => true, :max_duration
    timeout"                                                           => 5_000
          end                                                              logger.info "Recording saved to
          invalid do                                                   #{record_result.recording_uri}"
             play "#{Adhearsion.config.platform[:root]}/sounds/menu-       play record_result.recording_uri.gsub(/file:///,
    invalid"                                                           '').gsub(/.wav/, '')
          end                                                            end
                                                                       end
          failure do
             play "#{Adhearsion.config.platform[:root]}/sounds/menu-
    failure"
             hangup
          end
        end
      end




venerdì 1 marzo 13
Event support

                     • Adhearsion allows you to trace and
                       react to events

                     • Guarded handlers in apps
                     • A specialized block for everything else

venerdì 1 marzo 13
Events over HTTP
           Adhearsion::Events.draw do
             punchblock do |event|
               conn = Faraday.new("http://localhost:3000")
               conn.post "/publish", { :event => event.inspect } if event.respond_to? :name
             end
           end




 A Sinatra app with Faye can then distribute events to
            browsers through Websockets




venerdì 1 marzo 13
Plugins
                     • Virginia provides a Reel interface for
                       Adhearsion

                     • It loads a Reel::App and makes all
                       methods available
                        require 'reel'
                        require 'reel/app'

                        class RequestHandler
                          include Reel::App
                          get('/dial') do
                            Adhearsion::OutboundCall.originate "SIP/100"   do
                              invoke ConnectingController
                            end
                            [200, {}, "200 OK"]
                          end
                        end



venerdì 1 marzo 13
Are you sold now?




venerdì 1 marzo 13
Adhearsion in the
                          wild


venerdì 1 marzo 13
• Mobile wireless provider and enabler
                       (MVNO - MVNE)

                     • OTT applications
                     • In-call apps
                     • Adhearsion powers all call logic, billing,
                       and features


venerdì 1 marzo 13
• Voice conversation automation and
                       metrics

                     • Ad tracking
                     • Hosted IVR
                     • Lead tracking
                     • http://www.ifbyphone.com/
venerdì 1 marzo 13
• House remodeling
                     • Robo-dialing for appointment sign-up
                       and confirmation

                     • Real-time data pushed to mobile CRM
                     • Over 5 million calls in 2012 (one every
                       5 seconds!)


venerdì 1 marzo 13
• Pre-paid translation service for travelers
                     • Billing and credit management
                     • Translator search with AMD detection
                       and adaptive selection

                     • http://www.sostravelcard.it/

venerdì 1 marzo 13
What the future
                           holds...
                     • WebRTC: Adhearsion can perform all
                       3PCC functions

                     • Multiple device tracking and switching
                     • Protocol convergence
                     • Some of these are already
                       implemented in upcoming products

venerdì 1 marzo 13
Adhearsion 3.0

                     • Currently at the planning stage
                     • Unified communication platform
                     • Better ASR support
                     • Revamped component structure

venerdì 1 marzo 13
AdhearsionConf
                            2013
                     • 2012 edition had over 120 attendants
                     • 2 days, 15 presentations, training, beer
                     • http://adhearsionconf.com/



venerdì 1 marzo 13
Thank you!
                     • http://adhearsion.com/
                     • http://mojolingo.com/
                     • @adhearsion, @mojolingo
                     • @lucaprado
                     • Demo source available at https://
                       github.com/polysics/fosdem2013


venerdì 1 marzo 13

Weitere ähnliche Inhalte

Was ist angesagt?

Another world cutscene analysis
Another world cutscene analysisAnother world cutscene analysis
Another world cutscene analysis
amybrockbank
 
Ig1 task 2 analysis work sheet bioshock infinite
Ig1 task 2 analysis work sheet bioshock infiniteIg1 task 2 analysis work sheet bioshock infinite
Ig1 task 2 analysis work sheet bioshock infinite
halo4robo
 
How you think the sound in your chosen example has been produce1 dead space
How you think the sound in your chosen example has been produce1 dead spaceHow you think the sound in your chosen example has been produce1 dead space
How you think the sound in your chosen example has been produce1 dead space
conor0994
 

Was ist angesagt? (10)

Deep dive into Android’s audio latency problem
Deep dive into Android’s audio latency problemDeep dive into Android’s audio latency problem
Deep dive into Android’s audio latency problem
 
Another world cutscene analysis
Another world cutscene analysisAnother world cutscene analysis
Another world cutscene analysis
 
Core Audio in iOS 6 (CocoaConf Portland, Oct. '12)
Core Audio in iOS 6 (CocoaConf Portland, Oct. '12)Core Audio in iOS 6 (CocoaConf Portland, Oct. '12)
Core Audio in iOS 6 (CocoaConf Portland, Oct. '12)
 
Ig1 task 2 analysis work sheet bioshock infinite
Ig1 task 2 analysis work sheet bioshock infiniteIg1 task 2 analysis work sheet bioshock infinite
Ig1 task 2 analysis work sheet bioshock infinite
 
How you think the sound in your chosen example has been produce1 dead space
How you think the sound in your chosen example has been produce1 dead spaceHow you think the sound in your chosen example has been produce1 dead space
How you think the sound in your chosen example has been produce1 dead space
 
Product list 2010
Product list 2010Product list 2010
Product list 2010
 
Camel crushermanual
Camel crushermanualCamel crushermanual
Camel crushermanual
 
Drumwavy VST VST3 Audio Unit: Orchestral and Ethnic Percussion VST, VST3 and ...
Drumwavy VST VST3 Audio Unit: Orchestral and Ethnic Percussion VST, VST3 and ...Drumwavy VST VST3 Audio Unit: Orchestral and Ethnic Percussion VST, VST3 and ...
Drumwavy VST VST3 Audio Unit: Orchestral and Ethnic Percussion VST, VST3 and ...
 
Core Audio in iOS 6 (CocoaConf Chicago, March 2013)
Core Audio in iOS 6 (CocoaConf Chicago, March 2013)Core Audio in iOS 6 (CocoaConf Chicago, March 2013)
Core Audio in iOS 6 (CocoaConf Chicago, March 2013)
 
The secerts to great sounding samples.txt
The secerts to great sounding samples.txtThe secerts to great sounding samples.txt
The secerts to great sounding samples.txt
 

Andere mochten auch

Connecting Adhearsion
Connecting AdhearsionConnecting Adhearsion
Connecting Adhearsion
Ben Langfeld
 

Andere mochten auch (9)

Time to get serious about realtime communication
Time to get serious about realtime communicationTime to get serious about realtime communication
Time to get serious about realtime communication
 
Connecting Adhearsion
Connecting AdhearsionConnecting Adhearsion
Connecting Adhearsion
 
#MoreCrypto
#MoreCrypto #MoreCrypto
#MoreCrypto
 
Migrating to open unified communication
Migrating to open unified communicationMigrating to open unified communication
Migrating to open unified communication
 
Stay Connected - world IPv6 Launch
Stay Connected - world IPv6 LaunchStay Connected - world IPv6 Launch
Stay Connected - world IPv6 Launch
 
SIP :: Half outbound (random notes)
SIP :: Half outbound (random notes)SIP :: Half outbound (random notes)
SIP :: Half outbound (random notes)
 
WebRTC - a quick introduction
WebRTC - a quick introductionWebRTC - a quick introduction
WebRTC - a quick introduction
 
Sip2016 - a talk at VOIP2DAY 2016
Sip2016 - a talk at VOIP2DAY 2016Sip2016 - a talk at VOIP2DAY 2016
Sip2016 - a talk at VOIP2DAY 2016
 
The Realtime Story - part 2
The Realtime Story - part 2The Realtime Story - part 2
The Realtime Story - part 2
 

Ähnlich wie Integrating Voice Through Adhearsion

Core Audio in iOS 6 (CocoaConf DC, March 2013)
Core Audio in iOS 6 (CocoaConf DC, March 2013)Core Audio in iOS 6 (CocoaConf DC, March 2013)
Core Audio in iOS 6 (CocoaConf DC, March 2013)
Chris Adamson
 
Deployment presentation
Deployment presentationDeployment presentation
Deployment presentation
Corey Purcell
 
Ben white ig2 task 1 work sheet
Ben white   ig2 task 1 work sheetBen white   ig2 task 1 work sheet
Ben white ig2 task 1 work sheet
BenWhite101
 
Ig2 task 1 work sheet connor martin
Ig2 task 1 work sheet connor martinIg2 task 1 work sheet connor martin
Ig2 task 1 work sheet connor martin
Kalen612
 
Sound recording glossary tom crook
Sound recording glossary tom crookSound recording glossary tom crook
Sound recording glossary tom crook
TomCrook
 
gegerageSound recording glossary tom crook
gegerageSound recording glossary tom crookgegerageSound recording glossary tom crook
gegerageSound recording glossary tom crook
TomCrook
 

Ähnlich wie Integrating Voice Through Adhearsion (20)

Testing Adhearsion Applications
Testing Adhearsion ApplicationsTesting Adhearsion Applications
Testing Adhearsion Applications
 
Core Audio Cranks It Up
Core Audio Cranks It UpCore Audio Cranks It Up
Core Audio Cranks It Up
 
Core Audio in iOS 6 (CocoaConf DC, March 2013)
Core Audio in iOS 6 (CocoaConf DC, March 2013)Core Audio in iOS 6 (CocoaConf DC, March 2013)
Core Audio in iOS 6 (CocoaConf DC, March 2013)
 
Ruby & Machine Vision - Talk at Sheffield Hallam University Feb 2009
Ruby & Machine Vision - Talk at Sheffield Hallam University Feb 2009Ruby & Machine Vision - Talk at Sheffield Hallam University Feb 2009
Ruby & Machine Vision - Talk at Sheffield Hallam University Feb 2009
 
Node and SocketIO
Node and SocketIONode and SocketIO
Node and SocketIO
 
Deployment presentation
Deployment presentationDeployment presentation
Deployment presentation
 
Introduction to Erlang/(Elixir) at a Webilea Hands-On Session
Introduction to Erlang/(Elixir) at a Webilea Hands-On SessionIntroduction to Erlang/(Elixir) at a Webilea Hands-On Session
Introduction to Erlang/(Elixir) at a Webilea Hands-On Session
 
Introduction to node.js by Ran Mizrahi @ Reversim Summit
Introduction to node.js by Ran Mizrahi @ Reversim SummitIntroduction to node.js by Ran Mizrahi @ Reversim Summit
Introduction to node.js by Ran Mizrahi @ Reversim Summit
 
Enhancing Free PBX with Adhearsion at Fosdem 2012
Enhancing Free PBX with Adhearsion at Fosdem 2012Enhancing Free PBX with Adhearsion at Fosdem 2012
Enhancing Free PBX with Adhearsion at Fosdem 2012
 
Enhancing FreePBX with Adhearsion
Enhancing FreePBX with AdhearsionEnhancing FreePBX with Adhearsion
Enhancing FreePBX with Adhearsion
 
Talking To Rails
Talking To RailsTalking To Rails
Talking To Rails
 
Ruby
RubyRuby
Ruby
 
Concurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple SpacesConcurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple Spaces
 
Ruby voip
Ruby voipRuby voip
Ruby voip
 
Ben white ig2 task 1 work sheet
Ben white   ig2 task 1 work sheetBen white   ig2 task 1 work sheet
Ben white ig2 task 1 work sheet
 
Jenkins pipeline -- Gentle Introduction
Jenkins pipeline -- Gentle IntroductionJenkins pipeline -- Gentle Introduction
Jenkins pipeline -- Gentle Introduction
 
Ig2 task 1 work sheet connor martin
Ig2 task 1 work sheet connor martinIg2 task 1 work sheet connor martin
Ig2 task 1 work sheet connor martin
 
Sound recording glossary tom crook
Sound recording glossary tom crookSound recording glossary tom crook
Sound recording glossary tom crook
 
gegerageSound recording glossary tom crook
gegerageSound recording glossary tom crookgegerageSound recording glossary tom crook
gegerageSound recording glossary tom crook
 
あなたの知らないネットワークプログラミングの世界
あなたの知らないネットワークプログラミングの世界あなたの知らないネットワークプログラミングの世界
あなたの知らないネットワークプログラミングの世界
 

Mehr von Mojo Lingo

Infiltrando Telecoms Usando Ruby
Infiltrando Telecoms Usando RubyInfiltrando Telecoms Usando Ruby
Infiltrando Telecoms Usando Ruby
Mojo Lingo
 

Mehr von Mojo Lingo (20)

ConnectJS 2015: Video Killed the Telephone Star
ConnectJS 2015: Video Killed the Telephone StarConnectJS 2015: Video Killed the Telephone Star
ConnectJS 2015: Video Killed the Telephone Star
 
AstriCon 2015: WebRTC: How it Works, and How it Breaks
AstriCon 2015: WebRTC: How it Works, and How it BreaksAstriCon 2015: WebRTC: How it Works, and How it Breaks
AstriCon 2015: WebRTC: How it Works, and How it Breaks
 
FreeSWITCH, FreeSWITCH Everywhere, and Not A Phone In Sight
FreeSWITCH, FreeSWITCH Everywhere, and Not A Phone In SightFreeSWITCH, FreeSWITCH Everywhere, and Not A Phone In Sight
FreeSWITCH, FreeSWITCH Everywhere, and Not A Phone In Sight
 
Now Hear This! Putting Voice, Video, and Text into Ruby on Rails
Now Hear This! Putting Voice, Video, and Text into Ruby on RailsNow Hear This! Putting Voice, Video, and Text into Ruby on Rails
Now Hear This! Putting Voice, Video, and Text into Ruby on Rails
 
Using Asterisk to Create "Her"
Using Asterisk to Create "Her"Using Asterisk to Create "Her"
Using Asterisk to Create "Her"
 
Tipping the Scales: Measuring and Scaling Asterisk
Tipping the Scales: Measuring and Scaling AsteriskTipping the Scales: Measuring and Scaling Asterisk
Tipping the Scales: Measuring and Scaling Asterisk
 
WebRTC Overview by Dan Burnett
WebRTC Overview by Dan BurnettWebRTC Overview by Dan Burnett
WebRTC Overview by Dan Burnett
 
AdhearsionConf 2013 Keynote
AdhearsionConf 2013 KeynoteAdhearsionConf 2013 Keynote
AdhearsionConf 2013 Keynote
 
Speech-Enabling Web Apps
Speech-Enabling Web AppsSpeech-Enabling Web Apps
Speech-Enabling Web Apps
 
WebRTC: What? How? Why? - ClueCon 2013
WebRTC: What? How? Why? - ClueCon 2013WebRTC: What? How? Why? - ClueCon 2013
WebRTC: What? How? Why? - ClueCon 2013
 
Infiltrando Telecoms Usando Ruby
Infiltrando Telecoms Usando RubyInfiltrando Telecoms Usando Ruby
Infiltrando Telecoms Usando Ruby
 
Connecting Adhearsion
Connecting AdhearsionConnecting Adhearsion
Connecting Adhearsion
 
Testing Telephony: It's Not All Terrible
Testing Telephony: It's Not All TerribleTesting Telephony: It's Not All Terrible
Testing Telephony: It's Not All Terrible
 
Rayo for XMPP Folks
Rayo for XMPP FolksRayo for XMPP Folks
Rayo for XMPP Folks
 
Building Real Life Applications with Adhearsion
Building Real Life Applications with AdhearsionBuilding Real Life Applications with Adhearsion
Building Real Life Applications with Adhearsion
 
Keeping It Realtime!
Keeping It Realtime!Keeping It Realtime!
Keeping It Realtime!
 
Infiltrating Telecoms Using Ruby
Infiltrating Telecoms Using RubyInfiltrating Telecoms Using Ruby
Infiltrating Telecoms Using Ruby
 
Telephony Through Ruby Colored Lenses
Telephony Through Ruby Colored LensesTelephony Through Ruby Colored Lenses
Telephony Through Ruby Colored Lenses
 
Voice Applications for the Modern Open Source Hacker
Voice Applications for the Modern Open Source HackerVoice Applications for the Modern Open Source Hacker
Voice Applications for the Modern Open Source Hacker
 
Multidextrous Voice Application Framework
Multidextrous Voice Application FrameworkMultidextrous Voice Application Framework
Multidextrous Voice Application Framework
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 

Integrating Voice Through Adhearsion

  • 1. Integrating Voice through Adhearsion Luca Pradovera Telephony Devroom FOSDEM 2013 Brussels, February 3rd, 2013 venerdì 1 marzo 13
  • 2. Who am I? • Italian computer engineer • No, I didn’t vote for Berlusconi • Voice application developer at Mojo Lingo LLC, Atlanta (GA) • Managed to learn Ruby without doing Rails work! venerdì 1 marzo 13
  • 3. What is Adhearsion? • Ruby voice application framework • Provides logic for telephony apps • Open source and managed by a Foundation • Version 2.2.1 released on 06/01 • 2.0 was released in April 2012 venerdì 1 marzo 13
  • 5. Supported platforms • Ruby 1.9 only - JRuby working • Asterisk • FreeSWITCH • Voxeo PRISM • Rayo protocol support (http://rayo.org/) venerdì 1 marzo 13
  • 6. Rayo sounds tasty. • XMPP-based protocol for 3PCC • Call control • Audio and media control • Telephony primitives venerdì 1 marzo 13
  • 7. Why should I use Adhearsion? • Dialplan applications only get you so far • Every platform has its own syntax • Some features are simply impossible to achieve • It’s Ruby. Everybody likes Ruby. venerdì 1 marzo 13
  • 8. What can I do? venerdì 1 marzo 13
  • 9. How does Ahn talk to platforms? • Asterisk: AsyncAGI (AMI) • FreeSWITCH: Inbound Event Socket • PRISM: Pure Rayo venerdì 1 marzo 13
  • 10. Anatomy of an app • Configuration • Call Controllers • Routing • The ahn command: create, daemon, start, stop, restart, generate, help, version venerdì 1 marzo 13
  • 11. Call Controllers • Hold the application logic (dialplan) • The #run method is used to invoke the controller class SimpleController < Adhearsion::CallController def run answer play "tt-weasels" hangup end end venerdì 1 marzo 13
  • 12. Other features • Playback, menus, user input, recording • Configuration system • Plugin architecture • Routing • Testability venerdì 1 marzo 13
  • 14. Demo time! class DemoController < Adhearsion::CallController def enter_number def run number = ask "#{Adhearsion.config.platform[:root]}/sounds/ answer please-enter", :limit => 1, :timeout => 5.seconds menu "#{Adhearsion.config.platform[:root]}/sounds/demo- if number menu", :timeout => 5.seconds, :tries => 3 do play "#{Adhearsion.config.platform[:root]}/sounds/you- match 1 do entered" enter_number play "digits/#{number}" end end match 2 do end record_message end def record_message play "#{Adhearsion.config.platform[:root]}/sounds/please- timeout do speak-after" play "#{Adhearsion.config.platform[:root]}/sounds/menu- record_result = record :start_beep => true, :max_duration timeout" => 5_000 end logger.info "Recording saved to invalid do #{record_result.recording_uri}" play "#{Adhearsion.config.platform[:root]}/sounds/menu- play record_result.recording_uri.gsub(/file:///, invalid" '').gsub(/.wav/, '') end end end failure do play "#{Adhearsion.config.platform[:root]}/sounds/menu- failure" hangup end end end venerdì 1 marzo 13
  • 15. Event support • Adhearsion allows you to trace and react to events • Guarded handlers in apps • A specialized block for everything else venerdì 1 marzo 13
  • 16. Events over HTTP Adhearsion::Events.draw do punchblock do |event| conn = Faraday.new("http://localhost:3000") conn.post "/publish", { :event => event.inspect } if event.respond_to? :name end end A Sinatra app with Faye can then distribute events to browsers through Websockets venerdì 1 marzo 13
  • 17. Plugins • Virginia provides a Reel interface for Adhearsion • It loads a Reel::App and makes all methods available require 'reel' require 'reel/app' class RequestHandler include Reel::App get('/dial') do Adhearsion::OutboundCall.originate "SIP/100" do invoke ConnectingController end [200, {}, "200 OK"] end end venerdì 1 marzo 13
  • 18. Are you sold now? venerdì 1 marzo 13
  • 19. Adhearsion in the wild venerdì 1 marzo 13
  • 20. • Mobile wireless provider and enabler (MVNO - MVNE) • OTT applications • In-call apps • Adhearsion powers all call logic, billing, and features venerdì 1 marzo 13
  • 21. • Voice conversation automation and metrics • Ad tracking • Hosted IVR • Lead tracking • http://www.ifbyphone.com/ venerdì 1 marzo 13
  • 22. • House remodeling • Robo-dialing for appointment sign-up and confirmation • Real-time data pushed to mobile CRM • Over 5 million calls in 2012 (one every 5 seconds!) venerdì 1 marzo 13
  • 23. • Pre-paid translation service for travelers • Billing and credit management • Translator search with AMD detection and adaptive selection • http://www.sostravelcard.it/ venerdì 1 marzo 13
  • 24. What the future holds... • WebRTC: Adhearsion can perform all 3PCC functions • Multiple device tracking and switching • Protocol convergence • Some of these are already implemented in upcoming products venerdì 1 marzo 13
  • 25. Adhearsion 3.0 • Currently at the planning stage • Unified communication platform • Better ASR support • Revamped component structure venerdì 1 marzo 13
  • 26. AdhearsionConf 2013 • 2012 edition had over 120 attendants • 2 days, 15 presentations, training, beer • http://adhearsionconf.com/ venerdì 1 marzo 13
  • 27. Thank you! • http://adhearsion.com/ • http://mojolingo.com/ • @adhearsion, @mojolingo • @lucaprado • Demo source available at https:// github.com/polysics/fosdem2013 venerdì 1 marzo 13