Jason Goecke
Summarized using AI

Tropo

by Jason Goecke

Overview of Tropo

In this presentation at the LoneStarRuby Conf 2010, Jason Goecke discusses Tropo, an open-source cloud platform designed to simplify telecommunications development by providing a robust API that developers can integrate without the complexities of setting up their own infrastructure.

Key Points Discussed

  • Background on Incursion and Asterisk: Jason starts by referencing his experiences with the Asterisk project and the challenges developers face when transitioning from development to production environments.
  • Development of Tropo: He explains that Tropo allows developers to utilize cloud services, while the underlying technology remains open-source to avoid vendor lock-in. Tropo extends the Mobile Sense library and integrates smoothly with various telephony services.
  • Moho Library: Jason introduces Moho, a Java library that unifies various telephony APIs, simplifying interactions for developers by focusing on common telecommunication concepts like conferencing and speech synthesis.
  • Functionality of Tropo: Tropo provides a straightforward interface that allows developers to perform tasks such as making phone calls and sending messages using only 15 commands. It also supports multi-channel capabilities, including SMS and Twitter integration.
  • Speech Recognition: Tropo includes speech recognition support for nine languages, with plans to expand to twenty. This includes features for both guided and freeform speech recognition that enhance user interaction.
  • API Overview: Tropo's architecture includes a web API that allows developers to handle calls and messages through familiar RESTful patterns. Jason highlights the ease of integration with platforms like Google Talk and Yahoo, enabling seamless communication management.
  • Ruby Gem Development: A Ruby gem was developed to simplify interactions with Tropo’s API, facilitating easier usage for Ruby developers.
  • Hosting and Scripting: Hosting Tropo services on platforms like Heroku and Google App Engine allows for reliable application deployment. Tropo also permits the execution of scripts in various languages, enhancing flexibility for developers.
  • Innovative Applications: He shares an example of creating an interactive media billboard that leverages Tropo's capabilities for real-time user engagement.
  • Live Demonstration: Jason conducts a demonstration showcasing Tropo’s features in action, particularly focusing on voice synthesis and recognition capabilities.

Conclusions and Takeaways

  • Focus on Open Source: Tropo strives to provide developers with maximum flexibility without vendor lock-in by maintaining open-source principles.
  • Developer Experience: The platform aims to streamline the development process for telecommunications applications, allowing for rapid deployment and easy scaling of services.
  • Community-Driven Development: Feedback from the developer community is encouraged as Tropo continues to refine its offerings, aligning with user needs and practical applications in the tech landscape.
00:00:09.410 Hello everyone, my name is Jason Gehrke. I have some details up on GitHub and Twitter, and I will share my email address again later.
00:00:15.360 How many people here have actually heard of Incursion? That's a good number. And how many have heard of Asterisk? Okay, the same number. I was curious if that would be the case.
00:00:21.289 I worked closely with Jay Phillips before on the Harrison project. We actually started a company where we provided consulting and hosting services around Asterisk. One of the things we found was that while everything works well in development, getting it set up in a production environment can be somewhat difficult.
00:00:36.840 Developers were actually put off by the need to set up Asterisk, so we created a sandbox where you can download it and connect to a running environment hosted by us. We continue to actively support this project. Just recently at the Harrison conference, we discussed moving to version 10 since it is now running in enough production places and has become fairly feature stable. We are going to push it out soon.
00:01:11.760 The company we formed was actually acquired, and we have been working on other open-source projects. Some of you may or may not know that Jay is now at Pivotal Labs in San Francisco, where he is doing quite well. I have taken on a project where we are running an open-source project called Tropo.
00:01:42.210 Essentially, we have created a cloud platform that allows you to avoid setting up your own infrastructure. Instead, you can use our cloud services. To prevent vendor lock-in, even though this uses a proprietary API, we've made the underpinnings open source. This means you can build a SIP solution on your own servers or in a cloud environment. The underlying technology includes a common library that runs on Mobile Sense, which is another library we work with, and Tropo extends this API.
00:02:22.140 You can take this code, download it, and install it on platforms like Asterisk or Mobile Sense. It even integrates with media servers, allowing you to run the API on your own servers anywhere. However, as previously mentioned, attempting to scale telecom services is not trivial.
00:02:42.840 A little about Moho: This is the foundation of our telephony platform. In the telephony world, you have many APIs, but they were never really created with a unified design. For example, you have SIP for voice over IP applications implemented in Java, and MRCP for interacting with media resources for functionalities like conferencing and speech recognition.
00:03:10.260 What we have done is create Moho, a Java library that simplifies these interactions. It allows developers to focus on common concepts like conferencing and speech synthesis without worrying about the underlying complexities. Troppo then sits on top of Moho to provide an open-source API that you can consume from your own servers.
00:03:46.050 Using Troppo is very straightforward; you can make phone calls using just 15 commands. Troppo isn't limited to just making calls. As indicated in the graphics presented, you can send messages, integrate with Twitter, and send SMS, maintaining multi-channel capabilities across your applications.
00:04:05.930 Additionally, Troppo supports speech recognition in nine languages, with plans to expand to twenty. The speech recognition is driven by grammars or through transcription services, allowing voicemail messages to be converted to text for easy emailing.
00:04:40.080 This distinguishes between real-time guided speech recognition, which provides a fixed set of expected responses, and freeform speech recognition, which is significantly more challenging. Troppo is designed to minimize complexity while maximizing functionality for developers.
00:05:04.500 Now, the platform actually divides capabilities into two different APIs. We have a web API that gives you a traditional REST JSON interface into our network, allowing you to utilize common request-response patterns. Many examples utilize Sinatra to interact with our JSON session API.
00:05:30.000 Every time a phone call occurs with your application, a JSON object is posted, including caller ID, the origin of the call, and the destination number. In cases of instant messages, you can also see which network they came from, providing a seamless integration experience.
00:05:56.200 For example, we have integrated Google Talk, Yahoo, and other networks into our system, allowing you to manage incoming communications through the same API. This means you have a series of resources you can interact with, making the development experience straightforward, especially with REST APIs being familiar to web developers.
00:06:18.800 I have developed a Ruby gem that facilitates interaction with our web API, abstracting away many complexities so that developers can simply use Ruby to interface with it directly, without additional overhead.
00:06:41.120 We have hosted this up on Heroku and Google App Engine to provide a reliable serving option. As I progress, I will give more details on how we're integrating with other APIs and present some demos.
00:07:02.470 The scripting environment we provide is similar to what one might use with Google App Engine, allowing users to run their scripts on our infrastructure. Java serves as the backbone for this, with everything operating inside a SIP servlet container. We have implementations supporting various languages including Ruby, PHP, Groovy, and JavaScript, among others.
00:07:20.260 The beauty of this system is that developers can quickly write scripts that get up and running without needing to set up their own web services. You just provide straightforward logic, such as processing requests and responses, which runs directly on our platform without significant setup.
00:07:40.820 We have seen other innovative applications, one that comes to mind involves creating an interactive media billboard that users can engage with via mobile phones. The challenge was maintaining low-latency interactions, which led us to establish a persistent connection between the mobile application and our backend.
00:08:10.460 This architecture minimizes the overhead of multiple HTTP requests, allowing for real-time streaming of interactions with the billboard.
00:08:33.960 Next, I'd like to provide a glimpse into the various languages we support through our platform. Harnessing JRuby among others, we have developed bridges into the Ruby community, offering developers native threading and seamless operational efficiency.
00:09:25.260 We expose our underlying Java API within these languages, so when you're doing operations like speech recognition, the interface feels native despite being powered by Java under the hood. Our goal has always been to simplify the development experience for users, enabling swift onboarding and immediate functionality using their language of choice.
00:10:07.600 To facilitate easy entry, we provide adherence scripts compatible with Tropo, effectively making it behave like an Asterisk server. As a demonstration, I intend to undertake a live demo showcasing the core features of Tropo.
00:10:47.800 This live demo will illustrate the Tropo capabilities in action. Excuse me for a moment while I set this up.
00:12:51.030 Once ready, the first demonstration will showcase the integration of our technologies, allowing for voice synthesis and recognition as part of the call. The application organically merges simple commands into a coherent voice interaction.
00:16:03.760 Moreover, the integration is flexible, allowing for languages, accents, and a variety of voice types. Our goal was to provide a versatile platform that adapts to the user's needs and preferences.
00:22:25.320 Thank you for your attention. I appreciate your engagement during this demonstration. If you have any questions or insights, feel free to share your thoughts now. Your feedback is beneficial as we continue our efforts in refining the system.
00:24:42.080 We've focused heavily on open-source capabilities, ensuring users do not face vendor lock-in and can choose their development environments comfortably. We provide a comprehensive set of APIs for various channels while encouraging community-driven development.
00:27:17.200 Let's explore further any inquiries you might have about our strategies, technologies, or practical applications. Thank you once again for being here.
Explore all talks recorded at LoneStarRuby Conf 2010
+20