Posts tagged "phoneml"

Processing Recorded Audio Files

We have received several inquiries lately on how to receive and process audio files recorded on Teleku using the phoneml <record> audio tag like in the following example:

<phoneml>
<speak>please record a message</speak>
<record>http://web1.tunnlr.com:yourkey/upload/uploadTeleku</record>
</phoneml>

I was able to build a simple Rails application today that allows you to upload a file from the browser as well as receive a recorded file from Teleku.  The source code is available at: http://github.com/chrismatthieu/teleku-record-sample

This code was heavily inspired by a blog post located at http://www.tutorialspoint.com/ruby-on-rails/rails-file-uploading.htm and you must comment out protect_from_forgery line in application controller to avoid the token error caused by the data coming from another application (Teleku).  You could probably just override/disable forgery protection on this one controller or action.

I am using tunnlr to test it with extension 388 (http://teleku.com/extensions/388) over SIP using my Blink SIP client for the Mac.  The data gets stored in the public/data directory but you could redirect the files to either your own database or S3.

I hope this example helps!

Team Teleku

New Feature: EMail Recordings

PhoneML has just made handling phone message recordings easier.   You can now have your phone messages emailed to any email address immediately after the person leaves the message (without any programming)!  The PhoneML Record tag now supports a mailto:email address syntax in the target of the command (instead of a URL).  Here is an example:

<?xml version="1.0" encoding="UTF-8"?> 

<phoneml>

<record beep="true" playback="true">mailto:chris@getvocal.com</record>

</phoneml>

The script above records a message, plays it back to the caller, and emails to me.  How cool and simple is that?

1

Teleku Architecture

Many people are interested in how Teleku’s cloud communications platform is built so we’ll explain.  There are two parts to Teleku’s cloud services (Web and Voice/SMS):

Our Web Architecture:

Both the Teleku.com web site and its RESTful phone web service APIs are built 100% on Ruby on Rails.  Our Web application is hosted on Heroku which is essentially Amazon EC2 cloud hosting for Ruby/Rails applications.  The website and its APIs are designed to scale as demand fluctuates. We are using NimbleNodes to monitor our Heroku Dynos to help us scale automagically with demand.

Our Voice/SMS Architecture consists of two platforms (Ninja and Samurai Warrior).  Ninja is a stack of open source telephony technologies running directly in the Amazon EC2 cloud.  The Ninja stack consists of Asterisk, OpenVXI, VoiceGlue, Flite TTS, and a little custom Sinatra/Ruby glue written by us. 

Ninja relies entirely on SIP-based communications to handle its inbound and outbound communications. We have recently integrated GoogleVoice and Gizmo into our platform for both voice and SMS functionality.  More details about this integration can be found here.  You can also route any PSTN phone number (local or toll free) into Teleku using a SIP Gateway Service Provider.  SMS services are provided via direct carrier SMTP traffic and, in GoogleVoice’s instance, RESTful Google APIs.  Outbound calls are also supported on the Ninja platform via SIP.  SIP Gateways can translate SIP addresses to outbound PSTN phone numbers for as low as $.01 per minute via Gizmo and others.

We offer upgraded telephony hosting services under our Samurai Warrior label through a number of VoiceXML Gateway hosting providers including: Voxeo, Plum Voice, I6NET, XO Communications, TellMe, Genesys Lab, and others.  These services offer improved text-to-speech and speech recognition capabilities as well as other services such as: Skype integration, SLAs, and managed phone numbers. 

Since our Samurai Warrior offering basically translates Teleku PhoneML to VoiceXML, enterprise customers can also take advantage of this service to run Teleku-based phone applications with their on-premise VoiceXML Gateway infrastructures.  Our cloud communications service allows calls to originate and/or terminate on the enterprise’s own VoiceXML Gateway platform.  Only our PhoneML web service translations to VoiceXML occur on our SaaS cloud platform.  All call traffic, web applications, VoiceXML hosting services, and databases can reside behind a customer’s firewall on-site.   We believe that our solution uniquely caters to enterprise customers by allowing them to leverage their existing VoiceXML infrastructure investments, security of data on-site, and engaging their Web developers in building and maintaining enterprise phone application portfolios.

Teleku allows enterprises to take a baby-step into cloud services without the perceived risks that enterprises typically associate with the cloud. 

PhoneML can now support multiple speech and touch tone caller inputs within the same web service response! 

The URL is now optional in an <input> tag.  You can now only add the URL to the <input> tag when you are ready to send all of the caller input responses back to your application for processing.  Use the CallerInputHistory variable in the Form Post query to retrieve your last few parameters.  The CallerInput variable will always contain the last <input> tag’s response.

PhoneML | TwiML | VoiceXML

Teleku offers RESTful phone web services for building Voice and SMS applications with any Web programming language. Your app receives a Form POST from Teleku when your phone number receives a phone call or an SMS message.  You simply respond with XML or JSON text using PhoneML, TwiML, or VoiceXML to control the application. 

PhoneML is the simplest of the three scripting languages because there is no nesting of commands or rules.  It is simply based on order of operation and only includes 7 verbs or commands (speak, play, input, record, transfer, goto, and hangup).  PhoneML also supports speech recognition (ASR) and text-to-speech (TTS) for capturing voice instructions and speaking text to a caller. 

PhoneML also allows you to write a voice application once and have the same application work with your SMS customers as a dialog-based texting application!

Teleku allows you to build voice and sms applets using any combination of PhoneML, Twilio’s TwiML, or even more powerful VoiceXML responses even mixed throughout the duration of your phone call or SMS session.  This gives you more flexibility on mixing best-in-class voice applications throughout your caller’s experience. 

Get started today at http://teleku.com - use ‘pwnthephone’ as your private beta invitation code and start building your IVR and SMS web apps today in minutes!

A Caveman Could Build an IVR!

Check out Teleku’s new PhoneML Wizard!  It’s so easy a caveman could build an IVR system - I couldn’t resist.

Teleku :: Phone Web Services - Cloud-based Communications | Wizards Index
Uploaded with plasq’s Skitch!

The PhoneML Wizard allows non-developers to build PhoneML voice and sms phone applications by clicking and dragging their way through a call flow script!  Try it out by logging into your Teleku account and clicking on Extensions and then create a new extension.  After giving your extension a name, simply click on the blue PhoneML Wizard button!

Check out our video below:

More features on the way!

1

PhoneML Speak + Google Translator

Chris Matthieu demonstrates the addition of the Google Translator API to Teleku’s PhoneML Speak tag!  Now you can translate English to Spanish text-to-speech on the fly like so:

<phoneml>

<speak translate=”en|es”>Hello world!</speak>

</phoneml>

All of Google’s translation languages are supported by Teleku!  For a full list, goto http://translate.google.com.

Thanks RubyAZ!

We would like to thank everyone that attended the RubyAZ meetup last night for the Teleku Phreaker Party!  The conversation was lively and our feature wishlist was extended to include your suggestions!

Your positive feedback on the power and simplicity of PhoneML for Voice and SMS phone application development was fantastic!  I think that we are really on to something here!

Outbound Dial Now Asynchronous!

You may have noticed some strange behavior in Teleku Video #7 when Chris demonstrated Teleku’s outbound dialing.  This was caused by our dial method being deployed as a synchronous (blocking) call waiting to return the results of the call back to your application.

We have modified the dial method behavior to be asynchronous now by default allowing you to spawn one or more outbound dials without waiting for a response from our API.  Now it works on the first try every time!  This change should also allow you to develop find me services where you ring multiple phone numbers at the same time.

You can still use the dial method in synchronous mode if you want to wait for the status of the call by simply appending &wait=true to the end of the URL query string.

Chris Matthieu does some live coding in Ruby and PhoneML to demonstrate an outbound Teleku dialing and call transfer application.  Here is the sample code from the video:

require ‘rubygems’
require ‘sinatra’
require ‘rest_client’
require ‘builder’

get ‘/’ do
‘Enter a number to dial <form action=”/dial”><input type=”text” name=”number”></form>’
end

get ‘/dial’ do
RestClient.get ‘http://teleku.com/dial/’ + params[:number] + ‘/37?callerid=4808611000’
end

post ‘/’ do
builder do |xml|
xml.instruct!
xml.phoneml do
xml.speak “teleku at your service”
xml.transfer “6232523425”
end
end
end

More information about our outbound dialing API can be found at http://teleku.com/outbound.