Archive for the ‘Skype’ Category

Introducing TropoVBX

Wednesday, November 16th, 2011

As you may recall, Disruptive Technologies recently extended the capabilities of OpenVBX (the open source cloud PBX software) to run on our Tropo cloud communications platform. The original blog post announcing this project was entitled, “Jailbreaking OpenVBX“. This title was chosen carefully because at the time of the post, OpenVBX only ran on a single cloud platform. Disruptive Technologies was able to extend the communications layer of this application to not only add support for Tropo but also simplify future efforts involved in adding support for other platforms such as Asterisk, FreeSwitch, and others.

As it turns out, the original repository maintainers declined to accept Disruptive Technologies’ GitHub pull request to merge the code bases and asked that the name of the new project be changed, effectively requesting a formal fork of the open source project. Here is the new GitHub repository for TropoVBX.

The TropoVBX fork still provides support for multiple platforms – including the platform of the original repository maintainer. Disruptive Technologies will also be merging updates from the original fork where possible and continuing to add new features to TropoVBX as time permits. Because TropoVBX now runs on the Tropo platform, there are many new and advanced features only supported Tropo which include:

  1. Speech Recognition in 24 languages
  2. Text-to-Speech in 24 languages with male and females voices for each
  3. Support for biometrics on password resets
  4. Ability to route Skype calls into TropoVBX
  5. Ability to support true SIP VoIP in and out of the platform
  6. Phono web phone integration
  7. International SMS
  8. Phone numbers in 41 countries
  9. Multiple phone numbers supported per callflow
  10. Large conference calls

Please feel free to clone, contribute, and fork the new TropoVBX project and use our logo as you see fit. Our version of this project will remain truly open in every sense of the word and spirit of open source.

Writing and Deploying a Tropo App with an iPad

Tuesday, September 27th, 2011

I recently found myself at a conference without WIFI and i wanted to write and deploy a new Tropo voice application to the cloud. Armed with my 3g iPad, this task was a snap! See for yourself…

Jailbreaking OpenVBX

Wednesday, September 21st, 2011

Remember when the iPhone was only available on AT&T?   That was true until October 11, 2009 when a young coder named geohot (and friends) released the first iPhone/iPod jailbreak.  Suddenly iPhones weren’t tied to to just AT&T…now you could give AT&T the boot and choose Verizon or T-Mobile as your service provider.  Score!

In the spirit of geohot’s jailbreaking efforts, the rapscallions at Disruptive Technologies took on the the task of “jailbreaking” OpenVBX.

OpenVBX is a web-based open source phone system. It’s essentially a virtual PHP/MySQL PBX  and it’s available for download from GitHub.   Users of OpenVBX can make phone calls, send text messages…all very cool.

The catch is…you’re locked into one service provider: Twilio.  There’s no way to choose to use another cloud telephony provider…until now.

Today we’re pleased to announce a new fork of OpenVBX that adds support for Tropo.  For the first time, users of OpenVBX will have a choice of multiple platforms on which to run it, making it REALLY OpenVBX.

The coders at Disruptive Technologies added full support for the the Tropo API and Phono SIP-based VoIP web phone to the communications layer of the OpenVBX project. Of course, when selecting the Tropo API, users will now get access to all of the more advanced features of the Tropo network: speech recognition and text-to-speech in 24 languages, phone numbers in over 40 countries, international SMS, in/outbound SIP VoIP support, inbound Skype support, multiple phone numbers per callflow script, improved conferencing.

Disruptive Technologies also extended OpenVBX with the VoiceVault API to support Voice Biometrics in password resets. After adding VoiceVault credentials on the API Accounts Tab, the password reset dialog will provide an option to request a phone call to reset your OpenVBX account password.

The OpenVBX fork with Tropo can be found on GitHub.  We have sent the maintainer of the OpenVBX project a pull request to merge these updates into the project. The following features and bugfixes have been added to the OpenVBX package:

  • Fixed a redirect bug. OpenVBX no longer incorrectly redirects users to 404 pages.
  • Fixed bug in Twilio client. 60 seconds after the user has been “inactive”, the client is no longer able to be called for that user. This prevents calling the client if the user has closed their browser. (This also works for the Phono Client)
  • Added support for the Tropo API. You can now add a “Tropo API account” on the system settings page, and from the installer. Either a Tropo or Twilio account is required. Included in the new Tropo API additions are:
    1. Support for Tropo domestic and international phone numbers, on the “numbers” page.
    2. All applets in the “flows” page now support Tropo JSON as well as TwiML. Any number can be assigned any flow – so a tropo number and a twilio number can both be assigned the same flow.
    3. Support for existing Tropo numbers & applications. If the user prefers to set up their numbers initially in Tropo.com, the application will see these numbers and they can be assigned a flow within the application.
    4. Recordings, and Voicemail, as well as outbound dialing with Tropo.
  • Several theme changes. The OpenVBX logo has been modified to include both the Tropo and Twilio logo. If only one of the accounts is active, only that logo will show in the VBX logo – so if a user only has a Twilio account, only the Twilio logo will show, and vice versa. Other minor theme changes:
    1. Several pages in the System Settings tabs have been reworked.  Notibly the API accounts page, which now has each API accounts logos.
    2. Step 3 of the installation has been reworked.
    3. Several Twilio-specific content has been changed to be more ambiguous.
  • Added support for “Phono” browser phone, in addition to the Twilio Client. Any non-Twilio based numbers will use the new Phono browser phone.

This project has since been renamed to TropoVBX. Please refer to the updated blog post and new source code repository on GitHub.

Extending GoogeVoice with Tropo

Friday, May 13th, 2011

We are always excited to see developers using Tropo to extend GoogleVoice functionality and features by adding things like SIP and Call Forwarding and Call-In enhancements.  Terry Swanson (@FunnyBoy243) is one of these cool developers who wrote 2 of these extensions and opensourced them for others to share and contribute:

His Call Forwarding Extender Tropo Script includes the following features that extend/add to the current Google Voice feature-set:

  1. Easy forwarding to SIP Numbers (especially compared to IPKall)
  2. Outbound call recoding
  3. Allows forwarding to numbers that cannot be verified through Google Voice (such as numbers with extensions).  You can append “postd=DIGITSp” and/or “pause=WAITTIMEms” in the CALL_DEST variable to allow the script to forward to your extension. For example, “+14155551212;postd=ppppp1234pp56″ would dial (415) 555-1212 wait 5 seconds (1 second for each p) dial 1 2 3 4, wait 2 seconds then dial 5 6. Look enter the Parameters section of the Tropo API for more information.

You can have this script call multiple SIP/Telephone numbers at the same time by using an array for the CALL_DEST variable. All numbers will ring and the first to answer the call will take the call.

Example: $CALL_DEST = array(“sip:2233486745@sip2sip.info”, “sip:2233486712@sip2sip.info”);

For step by step instructions, check out Terry’s original post here.

His Google Voice Call In Extender Tropo Script includes the following features that extend/add to the current Google Voice feature-set:

  1. SIP Address for your Google Voice number.
  2. Skype number for your Google Voice number.
  3. Phone Number Aliases for your Google Voice number – You can have multiple phone numbers from different areas forward to the same Google Voice number so they wont have to pay long distance fees to call your Google Voice number.

Here are some additional tips and tricks with this extension:

  1. You can have this script call multiple Google Voice numbers at the same time by using an array for the GV_NUM variable. All numbers will ring and the first to answer the call will take the call. Example: $GV_NUM = array(“5103364032″, “5103364002″);
  2. You can add International Phone numbers to allow people from other countries to call your Google Voice number without paying International rates.
  3. You can use the Skype number to make free telephone calls using Google Voice.

For step by step instructions, check out Terry’s original post here.

Hats off to you, Terry!  Keep up the good work!

Routing GoogleVoice to Tropo and OpenVoice

Wednesday, April 27th, 2011

Do you have a GoogleVoice phone number?  Would you like to route it to your Tropo application?  

You can permanently port your GoogleVoice phone number to your Tropo application by submitting a ticket to our Provisioning team via the GetHelp link in the Tropo portal but I would like to show you how to temporarily route your GoogleVoice number to Tropo.

In this screencast, I use a few unnecessary (but fun) geeky apps like Skype (to place PSTN calls) and Blink (for receiving SIP calls).  I also route my GoogleVoice number to @Zlu’s OpenVoice application.  OpenVoice is an open source GoogleVoice clone that runs on Tropo and also integrates with our Phono webphone!  It’s built using Ruby on Rails and its source code is available on Github at http://github.com/openvoice.  (OpenVoice also has an Android app available so check it out!)

Tropo-Powered Hamradio Callsign Lookup App

Wednesday, April 6th, 2011

Ham radio or amateur radio communications has been around since the early 1900s.  Ham radio technology has kept pace with traditional communications and may even be the only technology that allows people to communicate in natural disasters.  Ham radio operators can communicate over very far distances using HF (high frequencies) as well as through satellites via AMSAT and even using VoIP over the Internet using EchoLink, IRLP, or D-STAR!

There are nearly 750,000 FCC licensed ham radio operators in the United States and over 3M licensed operators worldwide.  Each operator has federally issued callsign that is used to uniquely identify the station operating on the band.

Using Tropo and Callook (Josh Dick’s W1JDD Callsign API), Chris Matthieu (N7ICE) was able quickly develop a speech recognition and text-to-speech based telephony app that is accessible by any of the following channels:

Voice and SMS: 1-480-374-3234

Skype: +990009369991489376

VoIP / SIP: sip:9991489376@sip.tropo.com

Phono: app:9991489376

Upon calling the application, you are asked to spell a callsign using military phonetics:

A – Alfa, B – Bravo, C – Charlie, D – Delta, E – Echo, F – Foxtrot, G – Golf, H – Hotel, I – India, J – Juliet, K – Kilo, L – Lima, M – Mike,  N – November, O – Oscar, P – Papa, Q – Quebec, R – Romeo, S – Sierra, T – Tango, U – Uniform, V – Victor, W – Whiskey, X – X-Ray, Y – Yankee, Z – Zulu

In addition to these commands, you can say restart to start over or stop if your callsign is entered correctly.  Upon saying stop, the Tropo application does a REST-based call to Callook to get a JSON response of the data related to the callsign inquired.  In addition to the communication channels listed above, Chris Matthieu was able to use his handheld hamradio (like the one featured above) to communicate using VHF (very high frequencies) to connect to a repeater nearly 50 miles away on a mountaintop and connect to Tropo via an auto-patch phone line to perform a callsign lookup.  Here is a screencast and source code for the application!

Here is the source code running on Tropo’s Scripting API:

require 'rest_client'
require 'json'

answer
sleep 2
say "welcome to the tropo ham radio call sign lookup application"

callsign = ""
callsigntext = ""

loop do

  result = ask "spell the callsign phonetically. say stop when done or restart to start over", {
      :choices => "alpha, bravo, charlie, delta, echo, foxtrot, golf, hotel, india, juliette, kilo, lima, mike, november, oscar, papa, quebec, romeo, sierra, tango, uniform, victor, whiskey, xray, yankee, zulu, one, two, three, four, five, six, seven, eight, nine, zero, stop, restart"}

  if result.value == "stop"
    break
  elsif result.value == "restart"
    callsign = ""
    callsigntext = ""
  else
    callsigntext = callsigntext + " " + result.value
    say "so far you entered #{callsigntext}"

    letter = case result.value
     when "alpha" then "a"
     when "bravo" then "b"
     when "charlie" then "c"
     when "delta" then "d"
     when "echo" then "e"
     when "foxtrot" then "f"
     when "golf" then "g"
     when "hotel" then "h"
     when "india" then "i"
     when "juliette" then "j"
     when "kilo" then "k"
     when "lima" then "l"
     when "mike" then "m"
     when "november" then "n"
     when "oscar" then "o"
     when "papa" then "p"
     when "quebec" then "q"
     when "romeo" then "r"
     when "sierra" then "s"
     when "tango" then "t"
     when "uniform" then "u"
     when "victor" then "v"
     when "whiskey" then "w"
     when "xray" then "x"
     when "yankee" then "y"
     when "zulu" then "z"
     when "one" then "1"
     when "two" then "2"
     when "three" then "3"
     when "four" then "4"
     when "five" then "5"
     when "six" then "6"
     when "seven" then "7"
     when "eight" then "8"
     when "nine" then "9"
     when "zero" then "0"
    end

    if letter
      callsign = callsign + letter
    end

  end

end

response = RestClient.get 'http://callook.info/' + callsign + '/json'
data = JSON.parse(response)

say callsigntext + "belongs to "
say data["name"]
say "in " + data["address"]["line2"]
say "and holds a " + data["current"]["operClass"] + " license"

How to Build a VoIP-Based Baby Monitor

Thursday, February 17th, 2011

Two members of the Phono/Tropo team, and soon a third member, have recently added new babies to their families. Congratulations Mark, Justin, and John!

All of this excitement got the hacker in me thinking…  What would a modern Baby Monitor look like today?  Armed with the Phono and Tropo APIs, I started hacking and 2 hours later had the following example application to share with you!  Here’s the link to the demo.  Let us know what you think! http://phonophone.heroku.com/babymonitor.html

Phono, the jQuery WebPhone from the Tropo team, runs in the web browser to monitor activity in the room where it is running.  Tropo is used to manage the baby monitor’s conference room (based on the access code) and the dial-in numbers to listen to the baby monitor via PSTN, Skype, SIP, or iNum.  The Phono side of the conference is unmuted so you can hear activity while the Tropo side of the conference is muted.  You can have many people (Mom, Dad, Grandparents, etc.) dialed in listening to the same baby monitor using any combination of the access channels listed above.

Check out the Phono Blog to learn more about this demo and see the source code!

Heroku and Tropo Like Peanut Butter and Chocolate!

Tuesday, September 28th, 2010

Peanut butter and chocolate!

Who doesn’t love peanut butter and chocolate? By themselves, they are equally delicious but together, they are irresistible!

The same can now be said about Heroku and Tropo.  Heroku is the super simple cloud hosting platform for Ruby and Ruby on Rails web applications.  While Tropo is the super simple cloud hosting platform for communications applications including Voice, SMS, IM, and Twitter.

While Tropo works with any web programming language, we have been seeing more and more Ruby applications being developed using Tropo’s WebAPI. Traditionally deploying an application took just about as much time as actually writing the application.  This is no longer true with Heroku’s cloud hosting platform.

Deploying a Ruby application to Heroku is as simple as issuing the following commands from your terminal window:

> heroku create

> git push heroku master

Equally as simple to deploying your application to Heroku is writing your multi-channel communications application using Tropo like this hello world application that can be accessed via the telephone using Voice or SMS or via Instant Message or Twitter:

answer

say “Yes, Tropo is this easy!”

hangup

Now on to the how-to video and Heroku deployment instructions located at http://tropo.heroku.com!

Heroku & TropoTo demonstrate this yummy combination of technologies (Heroku and Tropo), Mark Silverberg (student and talented freelance Tropo developer) built a powerful Voice and IM application using Ruby and the Sinatra Framework and walks us through his 3.5 minute start-to-finish deployment of this application on the Heroku platform!

Mark’s multi-channel application is a volunteer finder service that provides information on volunteer opportunities in your zipcode.  The application can be accessed by calling +99000936 9991456957 via Skype or by IMing volunteer1234@tropo.im.  Mark’s Ruby code can be found on GitHub along with deployment instructions hosted on Heroku at http://warm-spring-38.heroku.com/

Now follow along with this video at http://tropo.heroku.com to learn how to build and deploy your next billion dollar idea using Heroku and Tropo!  Leveraging Heroku and Tropo gives you the best of advancements in cloud technology available today.  Heroku’s cloud technology allows you to scale your web application while Tropo’s cloud technology allows you to scale your communications applications.  These hybrid cloud technologies provide you, the web developer, with peace of mind and assurance that when your new application goes viral, we can easily scale to meet your demand.  Best of all, both cloud platforms offer free entry points to kick our tires and try us out.

So what are you waiting for?  Taste our peanut butter and chocolate now at Heroku and Tropo!

How-To: Distinguish PSTN, Skype, iNum, and SIP in your Tropo applications

Tuesday, February 23rd, 2010

Here at the secret layers of Tropo Support we often see similar questions raised by our developer base. We pay attention to these trends, since they often indicate that something may be lacking in our documentation.   If we do find something is lacking we of course want to address by expanding on concepts or adding additional examples to help shore up our doc sets and help out our developers.

Recently I have started to notice a trend of developers asking how to determine the source of callers dialing into their applications (Skype, PSTN, SIP, or iNum).  We’ll since we are often asked this question I figured I would provide a nice Ruby example for the ‘class’ =), I do hope this help!

Regards,
John Dyer
Customer Engineer
Voxeo Support

# -----------
# route based on DNIS
# John Dyer
# Voxeo Support
# -----------
log "@"*10 + $currentCall.inspect   # List some headers
log "@"*10  + $currentCall.getHeader("x-voxeo-to")  # log to header

module SipRegex
  def evaluate_sip_header(header)
    case header
      when /^<sip:990/            # SKYPE
        "SKYPE"
      when /<sip:999/              # SIP
        "SIP"
      when /^<sip:883/            # iNUM
        "INUM"
      when /<sip:|[1-9]\d\d/      # PSTN
        "PSTN"
      else
        "OTHER"
    end
  end
end
include SipRegex

toHeader = evaluate_sip_header($currentCall.getHeader("x-voxeo-to"))

if toHeader == 'PSTN'
    answer
    log "@"*10 + toHeader
    hangup
  elsif toHeader == 'SKYPE'
    answer
    log "@"*10 + toHeader
    hangup
  elsif  toHeader == 'SIP'
    answer
    log "@"*10 + toHeader
    hangup
  elsif  toHeader == 'INUM'
    answer
    log "@"*10 + toHeader
    hangup
  elsif toHeader == 'OTHER'
    answer
    log "@"*10 + toHeader
    hangup
  else
    log "@"*10 + "SOMETHING BAD HAPPENED" 
end