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.