SlideShare une entreprise Scribd logo
1  sur  27
Building Tropo Apps
with Grails
Christopher Bartling
Summary                                   2




■ What is Tropo?
■ How do I integrate Tropo with Grails?
■ Tropo WebAPI overview
■ Lessons learned
Terminology                         3




■ IVR: Interactive Voice Response
■ VoiceXML or VXML:
■ CCXML: Call Control XML
■ TTS: Text to Speech
What is Tropo?                                       4



■ Cloud-based services for telephony and messaging
  ■ Make and receive phone calls
  ■ Use voice recognition
  ■ Messaging via SMS, IM, or Twitter
■ Backed by Voxeo.com
  ■ Industry leader in IVR and VoIP solutions
Why should I care?                                        5



■ Many applications benefit from voice and messaging
   user interfaces

■ Tropo provides telephony and messaging infrastructure
   and APIs for integrating these services into your
   applications

   ■ Traditionally this was hosted in-house
■ APIs insulate developers from needing to write in
   VoiceXML, CCXML, and other markups
How do I use it with Grails?                              6




■ Install the Tropo WebAPI Grails plugin (version 0.21)
   ■ tropo-webapi-grails
   ■ Provides the TropoBuilder object for building
      standard Tropo JSON documents

   ■ TropoService for provisioning and servicing
      Tropo applications
TropoBuilder                                            7




■ Builds Tropo JSON response documents
■ Provides an array of JSON objects to control the
   Tropo-based applications hosted in the cloud

  ■ ask, call, conference, hangup, message, on,
      record, redirect, reject, result, say, session,
      startRecording, stopRecording, transfer
TropoService                                            8




■ Grails service for administering Tropo applications
   ■ Abstraction around Tropo’s REST API
   ■ Create, update, and delete Tropo applications
   ■ Provision phone numbers, IM addresses, tokens
   ■ Retrieve information about applications
Tropo.com                                                  9



■ Web-based administration UI
  ■ Create, update, and delete Tropo applications in the
     cloud

  ■ Provision telephone numbers (both local and toll-
     free) and IM accounts for your applications

  ■ Application debugging tool
  ■ Billing profile
Tropo Development                                           10


■ Create your Grails application
■ Add tropo-webapi-grails Grails plugin
■ Create your starting endpoint in your Grails app
■ Create application on tropo.com
   ■ Need externally available starting endpoint for your
      Grails app

   ■ Provision local phone number
Tropo WebAPI                                                 11




■ Use the TropoBuilder object to create Tropo-compliant
   JSON objects

■ Tropo calls back to your application for instructions on
   how to power the IVR infrastructure in the Tropo cloud

■ You application is a collection of interconnected
   endpoints, rendering Tropo JSON objects to control
   the IVR infrastructure in the Tropo cloud
Tropo WebAPI JSON objects   12
session                                                     13




■ Sent to your application in the first Tropo request
■ The callId field identifies this request body to a unique
   call in Tropo

   ■ You will use the callId as the correlation identifier
      for all requests

■ https://www.tropo.com/docs/webapi/session.htm
result                                                      14



■ Sent to your application in all subsequent requests
   from Tropo

■ The callId field identifies this request body to a unique
   call in Tropo

   ■ You will use the callId as the correlation identifier
      for all requests

■ https://www.tropo.com/docs/webapi/result.htm
say                                           15




■ Say something to the caller
  ■ Can be TTS or pre-recorded audio
  ■ Does not wait for user response
■ https://www.tropo.com/docs/webapi/say.htm
ask                                                     16


■ Say something to the caller and wait for a response
   from the caller

  ■ Can be TTS or audio file for say
  ■ Response can be collected speech or touch-tone
      keypad (DTMF)

  ■ The choices object specifies how Tropo handles
      user input

■ https://www.tropo.com/docs/webapi/ask.htm
on                                           17



■ Specifies event handling
  ■ continue
  ■ error
  ■ incomplete
  ■ hangup
■ https://www.tropo.com/docs/webapi/on.htm
hangup                                           18




■ Hangs up the current call.
■ https://www.tropo.com/docs/webapi/hangup.htm
record                                                      19




■ Plays a prompt and then waits for a response from the
   caller, which it records

■ Responses may be speech recognition or touch-tone
   keypresses (DTMF)

■ At the conclusion of the recording, the collected audio
   file is sent to FTP or HTTP POST/Multipart Form
   endpoint
transfer                                                   20




■ Transfer an in-progress call to another destination or
   phone number

   ■ Can be a phone number or a SIP address
■ https://www.tropo.com/docs/webapi/transfer.htm
startRecording
stopRecording                                            21



■ Start and stop recording a call session
■ Resultant recording can be sent via FTP or HTTP
   POST/Multipart form to a URL

■ You have to provide an endpoint or FTP server to
   receive the binary file

■ https://www.tropo.com/docs/webapi/startrecording.htm

■ https://www.tropo.com/docs/webapi/stoprecording.htm
Lessons Learned                                            22




■ Testing
  ■ Test call flow in isolation by using a testing Tropo
     application and a testing endpoint to bootstrap the
     call session appropriately

  ■ In the future, look to building an automated test
     runner that can be scripted and exercise the Grails
     app through HTTP calls
Lessons Learned                                             23




■ The ask noinput and timeout APIs don’t work well
  ■ Issues with audio getting played out of sequence
  ■ Build this functionality into our call flow explicitly
     using on events
Lessons Learned                                        24




■ Call recording is all or nothing
   ■ Unable to start and stop recording to allow for
      omission of sensitive data recording

   ■ We toggle recording for debugging call flow
   ■ Keep it off for production usage
Lessons Learned                                         25




■ Call duration can be difficult to determine
   ■ Maintain a last Tropo callback timestamp on call
      session domain object

   ■ Update the timestamp on each Tropo callback
      invocation

   ■ Allows approximation of the call duration
Lessons Learned                                     26




■ Abandoned calls can be difficult to determine
  ■ We used a Quartz job in Grails
  ■ Periodically inspect in-progress calls
  ■ If last Tropo callback timestamp is beyond a
      specified threshold, set the call session to
      abandoned
Contact Information                                      27




■ Twitter: @cbartling
■ Blog: http://bartling.blogspot.com
■ https://bitbucket.org/cebartling/tropo-presentations

Contenu connexe

Tendances

AWS Customer Presentation - Twilio
AWS Customer Presentation - TwilioAWS Customer Presentation - Twilio
AWS Customer Presentation - TwilioAmazon Web Services
 
Interfaces de Voz avanzadas con VoiceXML - Iván Sixto | VoIP2DAY 2015
Interfaces de Voz avanzadas con VoiceXML - Iván Sixto | VoIP2DAY 2015Interfaces de Voz avanzadas con VoiceXML - Iván Sixto | VoIP2DAY 2015
Interfaces de Voz avanzadas con VoiceXML - Iván Sixto | VoIP2DAY 2015VOIP2DAY
 
Twilio Signal 2016 Build Your Own Cloud Enterprise VoIP
Twilio Signal 2016 Build Your Own Cloud Enterprise VoIPTwilio Signal 2016 Build Your Own Cloud Enterprise VoIP
Twilio Signal 2016 Build Your Own Cloud Enterprise VoIPTwilio Inc
 
What is cloud telephony
What is cloud telephonyWhat is cloud telephony
What is cloud telephonyAbhay kumar
 
TADS Developer Summit Tropo Jose de Castro
TADS Developer Summit Tropo Jose de CastroTADS Developer Summit Tropo Jose de Castro
TADS Developer Summit Tropo Jose de CastroAlan Quayle
 
TADS Developer Summit Apidaze Philippe Sultan
TADS Developer Summit Apidaze Philippe SultanTADS Developer Summit Apidaze Philippe Sultan
TADS Developer Summit Apidaze Philippe SultanAlan Quayle
 
Irv Shapiro's Presentation at eComm 2009
Irv Shapiro's Presentation at eComm 2009Irv Shapiro's Presentation at eComm 2009
Irv Shapiro's Presentation at eComm 2009eCommConf
 
Final Twilio Under the Radar 2009 Cloud
Final Twilio Under the Radar 2009 CloudFinal Twilio Under the Radar 2009 Cloud
Final Twilio Under the Radar 2009 CloudDealmaker Media
 
Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010Twilio Inc
 
Building Blocks for Next Generation Contact Centers
Building Blocks for Next Generation Contact CentersBuilding Blocks for Next Generation Contact Centers
Building Blocks for Next Generation Contact CentersTwilio Inc
 
Lync 2010 Top New Features
Lync 2010 Top New FeaturesLync 2010 Top New Features
Lync 2010 Top New FeaturesTimur Bayazitov
 
Hacking with Nexmo - at EmojiCon Hackathon
Hacking with Nexmo - at EmojiCon HackathonHacking with Nexmo - at EmojiCon Hackathon
Hacking with Nexmo - at EmojiCon HackathonTomomi Imura
 
Asterisk - Glen Bastes
Asterisk - Glen BastesAsterisk - Glen Bastes
Asterisk - Glen Bastessoss
 
Twilio Signal 2016 Serverless Contact Center
Twilio Signal 2016 Serverless Contact CenterTwilio Signal 2016 Serverless Contact Center
Twilio Signal 2016 Serverless Contact CenterTwilio Inc
 
TringMe Overview
TringMe OverviewTringMe Overview
TringMe Overviewguest14cb45
 

Tendances (20)

AWS Customer Presentation - Twilio
AWS Customer Presentation - TwilioAWS Customer Presentation - Twilio
AWS Customer Presentation - Twilio
 
Interfaces de Voz avanzadas con VoiceXML - Iván Sixto | VoIP2DAY 2015
Interfaces de Voz avanzadas con VoiceXML - Iván Sixto | VoIP2DAY 2015Interfaces de Voz avanzadas con VoiceXML - Iván Sixto | VoIP2DAY 2015
Interfaces de Voz avanzadas con VoiceXML - Iván Sixto | VoIP2DAY 2015
 
Twilio Signal 2016 Build Your Own Cloud Enterprise VoIP
Twilio Signal 2016 Build Your Own Cloud Enterprise VoIPTwilio Signal 2016 Build Your Own Cloud Enterprise VoIP
Twilio Signal 2016 Build Your Own Cloud Enterprise VoIP
 
What is cloud telephony
What is cloud telephonyWhat is cloud telephony
What is cloud telephony
 
3 cx phonesystem
3 cx phonesystem3 cx phonesystem
3 cx phonesystem
 
Twilio
TwilioTwilio
Twilio
 
TADS Developer Summit Tropo Jose de Castro
TADS Developer Summit Tropo Jose de CastroTADS Developer Summit Tropo Jose de Castro
TADS Developer Summit Tropo Jose de Castro
 
TADS Developer Summit Apidaze Philippe Sultan
TADS Developer Summit Apidaze Philippe SultanTADS Developer Summit Apidaze Philippe Sultan
TADS Developer Summit Apidaze Philippe Sultan
 
Irv Shapiro's Presentation at eComm 2009
Irv Shapiro's Presentation at eComm 2009Irv Shapiro's Presentation at eComm 2009
Irv Shapiro's Presentation at eComm 2009
 
Supermondays twilio
Supermondays twilioSupermondays twilio
Supermondays twilio
 
Final Twilio Under the Radar 2009 Cloud
Final Twilio Under the Radar 2009 CloudFinal Twilio Under the Radar 2009 Cloud
Final Twilio Under the Radar 2009 Cloud
 
Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010
 
Building Blocks for Next Generation Contact Centers
Building Blocks for Next Generation Contact CentersBuilding Blocks for Next Generation Contact Centers
Building Blocks for Next Generation Contact Centers
 
Lync 2010 Top New Features
Lync 2010 Top New FeaturesLync 2010 Top New Features
Lync 2010 Top New Features
 
Hacking with Nexmo - at EmojiCon Hackathon
Hacking with Nexmo - at EmojiCon HackathonHacking with Nexmo - at EmojiCon Hackathon
Hacking with Nexmo - at EmojiCon Hackathon
 
Asterisk - Glen Bastes
Asterisk - Glen BastesAsterisk - Glen Bastes
Asterisk - Glen Bastes
 
Twilio Signal 2016 Serverless Contact Center
Twilio Signal 2016 Serverless Contact CenterTwilio Signal 2016 Serverless Contact Center
Twilio Signal 2016 Serverless Contact Center
 
TringMe Overview
TringMe OverviewTringMe Overview
TringMe Overview
 
Cloud telephony
Cloud telephonyCloud telephony
Cloud telephony
 
Asterisk Phone Systems
Asterisk Phone SystemsAsterisk Phone Systems
Asterisk Phone Systems
 

Similaire à Building Tropo Apps with Grails

Basic VoIP Drupal Intro - for BioRAFT
Basic VoIP Drupal Intro - for BioRAFTBasic VoIP Drupal Intro - for BioRAFT
Basic VoIP Drupal Intro - for BioRAFTMicky Metts
 
Greach 2011 - Building Telephony Apps with Groovy and Grails
Greach 2011 - Building Telephony Apps with Groovy and GrailsGreach 2011 - Building Telephony Apps with Groovy and Grails
Greach 2011 - Building Telephony Apps with Groovy and Grailsgreach_es
 
#1 Basic VoIP Drupal Hands On Experience Webinar
#1 Basic VoIP Drupal Hands On Experience Webinar#1 Basic VoIP Drupal Hands On Experience Webinar
#1 Basic VoIP Drupal Hands On Experience WebinarMicky Metts
 
The Nexmo Voice API - AAT 2016
The Nexmo Voice API - AAT 2016The Nexmo Voice API - AAT 2016
The Nexmo Voice API - AAT 2016Roland Selmer
 
Tropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API WorkshopTropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API WorkshopAlan Quayle
 
P4+ONOS SRv6 tutorial.pptx
P4+ONOS SRv6 tutorial.pptxP4+ONOS SRv6 tutorial.pptx
P4+ONOS SRv6 tutorial.pptxtampham61268
 
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 2012Luca Pradovera
 
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016Cisco DevNet
 
Flashmedia gateway docs_quickstart
Flashmedia gateway docs_quickstartFlashmedia gateway docs_quickstart
Flashmedia gateway docs_quickstartSerge Florov
 
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...Paolo Saviano
 
APIdaze presentation at TADHack 2014
APIdaze presentation at TADHack 2014APIdaze presentation at TADHack 2014
APIdaze presentation at TADHack 2014Alan Quayle
 
Detecting Spoofing at IXPs
Detecting Spoofing at IXPsDetecting Spoofing at IXPs
Detecting Spoofing at IXPsAPNIC
 
Detecting spoofing at IxP's
Detecting spoofing at IxP'sDetecting spoofing at IxP's
Detecting spoofing at IxP'sTom Paseka
 
Implementing Telematic Services
Implementing Telematic ServicesImplementing Telematic Services
Implementing Telematic ServicesIvan Ortega
 
20170925 onos and p4
20170925 onos and p420170925 onos and p4
20170925 onos and p4Yi Tseng
 
N2Y4 Mobile Challenge May 2009 San Jose
N2Y4 Mobile Challenge May 2009   San JoseN2Y4 Mobile Challenge May 2009   San Jose
N2Y4 Mobile Challenge May 2009 San JoseAdhearsion Foundation
 

Similaire à Building Tropo Apps with Grails (20)

Basic VoIP Drupal Intro - for BioRAFT
Basic VoIP Drupal Intro - for BioRAFTBasic VoIP Drupal Intro - for BioRAFT
Basic VoIP Drupal Intro - for BioRAFT
 
Greach 2011 - Building Telephony Apps with Groovy and Grails
Greach 2011 - Building Telephony Apps with Groovy and GrailsGreach 2011 - Building Telephony Apps with Groovy and Grails
Greach 2011 - Building Telephony Apps with Groovy and Grails
 
#1 Basic VoIP Drupal Hands On Experience Webinar
#1 Basic VoIP Drupal Hands On Experience Webinar#1 Basic VoIP Drupal Hands On Experience Webinar
#1 Basic VoIP Drupal Hands On Experience Webinar
 
The Nexmo Voice API - AAT 2016
The Nexmo Voice API - AAT 2016The Nexmo Voice API - AAT 2016
The Nexmo Voice API - AAT 2016
 
Tropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API WorkshopTropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API Workshop
 
Doc_VOIP_Xivo
Doc_VOIP_XivoDoc_VOIP_Xivo
Doc_VOIP_Xivo
 
P4+ONOS SRv6 tutorial.pptx
P4+ONOS SRv6 tutorial.pptxP4+ONOS SRv6 tutorial.pptx
P4+ONOS SRv6 tutorial.pptx
 
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
 
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
 
Flashmedia gateway docs_quickstart
Flashmedia gateway docs_quickstartFlashmedia gateway docs_quickstart
Flashmedia gateway docs_quickstart
 
Kamailio World 2014 - Kamailio - The Platform for Interoperable WebRTC
Kamailio World 2014 - Kamailio - The Platform for Interoperable WebRTCKamailio World 2014 - Kamailio - The Platform for Interoperable WebRTC
Kamailio World 2014 - Kamailio - The Platform for Interoperable WebRTC
 
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
 
EuroDIG 2015 - 2015/06/04
EuroDIG 2015 - 2015/06/04EuroDIG 2015 - 2015/06/04
EuroDIG 2015 - 2015/06/04
 
APIdaze presentation at TADHack 2014
APIdaze presentation at TADHack 2014APIdaze presentation at TADHack 2014
APIdaze presentation at TADHack 2014
 
Detecting Spoofing at IXPs
Detecting Spoofing at IXPsDetecting Spoofing at IXPs
Detecting Spoofing at IXPs
 
Detecting spoofing at IxP's
Detecting spoofing at IxP'sDetecting spoofing at IxP's
Detecting spoofing at IxP's
 
Implementing Telematic Services
Implementing Telematic ServicesImplementing Telematic Services
Implementing Telematic Services
 
Phone gap development, testing, and debugging
Phone gap development, testing, and debuggingPhone gap development, testing, and debugging
Phone gap development, testing, and debugging
 
20170925 onos and p4
20170925 onos and p420170925 onos and p4
20170925 onos and p4
 
N2Y4 Mobile Challenge May 2009 San Jose
N2Y4 Mobile Challenge May 2009   San JoseN2Y4 Mobile Challenge May 2009   San Jose
N2Y4 Mobile Challenge May 2009 San Jose
 

Plus de Christopher Bartling

Plus de Christopher Bartling (12)

JavaScript Test-Driven Development with Jasmine 2.0 and Karma
JavaScript Test-Driven Development with Jasmine 2.0 and Karma JavaScript Test-Driven Development with Jasmine 2.0 and Karma
JavaScript Test-Driven Development with Jasmine 2.0 and Karma
 
Acceptance Test-driven Development with Cucumber-jvm
Acceptance Test-driven Development with Cucumber-jvmAcceptance Test-driven Development with Cucumber-jvm
Acceptance Test-driven Development with Cucumber-jvm
 
JavaScript TDD with Jasmine and Karma
JavaScript TDD with Jasmine and KarmaJavaScript TDD with Jasmine and Karma
JavaScript TDD with Jasmine and Karma
 
CoffeeScript By Example
CoffeeScript By ExampleCoffeeScript By Example
CoffeeScript By Example
 
Acceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And FriendsAcceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And Friends
 
Introduction To Grails
Introduction To GrailsIntroduction To Grails
Introduction To Grails
 
Cucumber, Cuke4Duke, and Groovy
Cucumber, Cuke4Duke, and GroovyCucumber, Cuke4Duke, and Groovy
Cucumber, Cuke4Duke, and Groovy
 
Test Driven In Groovy
Test Driven In GroovyTest Driven In Groovy
Test Driven In Groovy
 
iPhone OS: The Next Killer Platform
iPhone OS: The Next Killer PlatformiPhone OS: The Next Killer Platform
iPhone OS: The Next Killer Platform
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
Grails Overview
Grails OverviewGrails Overview
Grails Overview
 
Rich Web Clients 20081118
Rich Web Clients 20081118Rich Web Clients 20081118
Rich Web Clients 20081118
 

Dernier

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 Takeoffsammart93
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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...Miguel Araújo
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
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 FresherRemote DBA Services
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 

Dernier (20)

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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced 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...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

Building Tropo Apps with Grails

  • 1. Building Tropo Apps with Grails Christopher Bartling
  • 2. Summary 2 ■ What is Tropo? ■ How do I integrate Tropo with Grails? ■ Tropo WebAPI overview ■ Lessons learned
  • 3. Terminology 3 ■ IVR: Interactive Voice Response ■ VoiceXML or VXML: ■ CCXML: Call Control XML ■ TTS: Text to Speech
  • 4. What is Tropo? 4 ■ Cloud-based services for telephony and messaging ■ Make and receive phone calls ■ Use voice recognition ■ Messaging via SMS, IM, or Twitter ■ Backed by Voxeo.com ■ Industry leader in IVR and VoIP solutions
  • 5. Why should I care? 5 ■ Many applications benefit from voice and messaging user interfaces ■ Tropo provides telephony and messaging infrastructure and APIs for integrating these services into your applications ■ Traditionally this was hosted in-house ■ APIs insulate developers from needing to write in VoiceXML, CCXML, and other markups
  • 6. How do I use it with Grails? 6 ■ Install the Tropo WebAPI Grails plugin (version 0.21) ■ tropo-webapi-grails ■ Provides the TropoBuilder object for building standard Tropo JSON documents ■ TropoService for provisioning and servicing Tropo applications
  • 7. TropoBuilder 7 ■ Builds Tropo JSON response documents ■ Provides an array of JSON objects to control the Tropo-based applications hosted in the cloud ■ ask, call, conference, hangup, message, on, record, redirect, reject, result, say, session, startRecording, stopRecording, transfer
  • 8. TropoService 8 ■ Grails service for administering Tropo applications ■ Abstraction around Tropo’s REST API ■ Create, update, and delete Tropo applications ■ Provision phone numbers, IM addresses, tokens ■ Retrieve information about applications
  • 9. Tropo.com 9 ■ Web-based administration UI ■ Create, update, and delete Tropo applications in the cloud ■ Provision telephone numbers (both local and toll- free) and IM accounts for your applications ■ Application debugging tool ■ Billing profile
  • 10. Tropo Development 10 ■ Create your Grails application ■ Add tropo-webapi-grails Grails plugin ■ Create your starting endpoint in your Grails app ■ Create application on tropo.com ■ Need externally available starting endpoint for your Grails app ■ Provision local phone number
  • 11. Tropo WebAPI 11 ■ Use the TropoBuilder object to create Tropo-compliant JSON objects ■ Tropo calls back to your application for instructions on how to power the IVR infrastructure in the Tropo cloud ■ You application is a collection of interconnected endpoints, rendering Tropo JSON objects to control the IVR infrastructure in the Tropo cloud
  • 12. Tropo WebAPI JSON objects 12
  • 13. session 13 ■ Sent to your application in the first Tropo request ■ The callId field identifies this request body to a unique call in Tropo ■ You will use the callId as the correlation identifier for all requests ■ https://www.tropo.com/docs/webapi/session.htm
  • 14. result 14 ■ Sent to your application in all subsequent requests from Tropo ■ The callId field identifies this request body to a unique call in Tropo ■ You will use the callId as the correlation identifier for all requests ■ https://www.tropo.com/docs/webapi/result.htm
  • 15. say 15 ■ Say something to the caller ■ Can be TTS or pre-recorded audio ■ Does not wait for user response ■ https://www.tropo.com/docs/webapi/say.htm
  • 16. ask 16 ■ Say something to the caller and wait for a response from the caller ■ Can be TTS or audio file for say ■ Response can be collected speech or touch-tone keypad (DTMF) ■ The choices object specifies how Tropo handles user input ■ https://www.tropo.com/docs/webapi/ask.htm
  • 17. on 17 ■ Specifies event handling ■ continue ■ error ■ incomplete ■ hangup ■ https://www.tropo.com/docs/webapi/on.htm
  • 18. hangup 18 ■ Hangs up the current call. ■ https://www.tropo.com/docs/webapi/hangup.htm
  • 19. record 19 ■ Plays a prompt and then waits for a response from the caller, which it records ■ Responses may be speech recognition or touch-tone keypresses (DTMF) ■ At the conclusion of the recording, the collected audio file is sent to FTP or HTTP POST/Multipart Form endpoint
  • 20. transfer 20 ■ Transfer an in-progress call to another destination or phone number ■ Can be a phone number or a SIP address ■ https://www.tropo.com/docs/webapi/transfer.htm
  • 21. startRecording stopRecording 21 ■ Start and stop recording a call session ■ Resultant recording can be sent via FTP or HTTP POST/Multipart form to a URL ■ You have to provide an endpoint or FTP server to receive the binary file ■ https://www.tropo.com/docs/webapi/startrecording.htm ■ https://www.tropo.com/docs/webapi/stoprecording.htm
  • 22. Lessons Learned 22 ■ Testing ■ Test call flow in isolation by using a testing Tropo application and a testing endpoint to bootstrap the call session appropriately ■ In the future, look to building an automated test runner that can be scripted and exercise the Grails app through HTTP calls
  • 23. Lessons Learned 23 ■ The ask noinput and timeout APIs don’t work well ■ Issues with audio getting played out of sequence ■ Build this functionality into our call flow explicitly using on events
  • 24. Lessons Learned 24 ■ Call recording is all or nothing ■ Unable to start and stop recording to allow for omission of sensitive data recording ■ We toggle recording for debugging call flow ■ Keep it off for production usage
  • 25. Lessons Learned 25 ■ Call duration can be difficult to determine ■ Maintain a last Tropo callback timestamp on call session domain object ■ Update the timestamp on each Tropo callback invocation ■ Allows approximation of the call duration
  • 26. Lessons Learned 26 ■ Abandoned calls can be difficult to determine ■ We used a Quartz job in Grails ■ Periodically inspect in-progress calls ■ If last Tropo callback timestamp is beyond a specified threshold, set the call session to abandoned
  • 27. Contact Information 27 ■ Twitter: @cbartling ■ Blog: http://bartling.blogspot.com ■ https://bitbucket.org/cebartling/tropo-presentations

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n