VOIP and Ruby. The Convergence of Web and Voice Applications using Open Source Software. Justin Grammens Localtone Interactive justin@localtone.



Similar documents
VOIP and Ruby. The Convergence of Web and Voice Applications using Open Source Software. Justin Grammens Localtone Interactive

Open Source Telephony Projects as an Application Development Platform. Frederic Dickey Director Product Management

and Voice Applications Eyal Wirsansky, Verso Technologies JaxJUG

Overview of Asterisk (*) Jeff Gunther

Micronet VoIP Solution with Asterisk

Introduction. What is DUNDi? Configuring Asterisk for use with DUNDi

Mediatrix 3000 with Asterisk June 22, 2011

Asterisk & ENUM. Extending the Open Source PBX. Michael Haberler, IPA Otmar Lendl, nic.at

Introduction to VOIP. Stephen Okay Abdus Salam Int l Center for Theoretical Physics Trieste, Italy, February 21, 2007

Basic configuration of the GXW410x with Asterisk

Asterisk. Michael Kershaw

Setup Guide: on the MyNetFone Service. Revision History

Asterisk Overview. Berkeley In Munich Tech Talks prepared by. Emil Stoyanov

VOIP with Asterisk & Perl

How To Use An Asterisk Server For A Phone Or Internet Communication

VoIP Workshop PacNOG3

IP Telephony with Asterisk. Sunday A. Folayan

Wildix Management System (WMS) White Paper

Fig. Setting up of a VoIP call. Fig. Experimental setup

Chapter 1 - Introduction

VoIP-PSTN Interoperability by Asterisk and SS7 Signalling

Internet Technology Voice over IP

Configuring a Pure-IP SIP Trunk in Lync 2013

Practical Guide. How to setup VoIP Infrastructure using AsteriskNOW

Specialty Answering Service. All rights reserved.

Open Source VoiceXML Interpreter over Asterisk for Use in IVR Applications

IP-PBX Quick Start Guide

Avaya IP Office 8.1 Configuration Guide

Configuring the Cisco SPA8800 IP Telephony Gateway in an Asterisk Environment

IBM WebSphere Application Server Communications Enabled Applications Setup guide

Application Note. Using a Dialogic Media Gateway Series as a PSTN Gateway with an Asterisk IP-PBX Server

OpenVox GSM Gateway Function Manual

Asterisk: A Non-Technical Overview

VoIP and IP IT Tralee

Leveraging Asterisk to Deliver Large Scale VoIP Services in a Carrier Environment. JR Richardson

NetVanta 7100 Exercise Service Provider SIP Trunk

CVOICE Exam Topics Cisco Voice over IP Exam # /14/2005

Connecting Your Enterprise With Asterisk: IAX to Carriers. Dayton Turner Voxter Communications

VOIP (Voice Over Internet Protocol) Hacking-Fake Calling

Implementing Cisco IOS Unified Communications (IIUC)

Unicorn60x0 IP ANALOG GATEWAY ASTERISK CONFIGURATION

Configuring Positron s V114 as a VoIP gateway for a 3cx system

DUNDi, So Easy A Caveman Could Do It!

TEL 500 WRITE UP WEEK 8 FREE PBX SIP LAB SUBMITTED TO: PROF. RONNY BULL BY: ANUSHA ALIGAPALLY

An introduction to PHP & AGI

Quick Installation Guide

IP Implementation in Private Branch Exchanges From 9:30 a.m until 4:30 p.m (7 hrs./day) 5 days / week

IP Based Voice Server Application With PBX Using Free SWITCH ISSN

VoIP and IP Telephony

Department of Communications and Networking. S /3133 Networking Technology, laboratory course A/B

How to Configure the Allworx 6x, 24x and 48x for use with Integra Telecom SIP Solutions

Enterprise Voice and Online Services with Microsoft Lync Server 2013

Applications between Asotel VoIP and Asterisk

Shared Components PSTN gateways PSTN gateways New IP/PSTN Gateway Define New IP/PSTN Gateway Define the PSTN Gateway FQDN FQDN Next

Stack Num IP Username Password

QUICK START GUIDE RELEASE 7

NOC Workshop VoIP in the NOC labs SANOG10

2N OfficeRoute. 2N OfficeRoute & Siemens HiPath (series 3000) connected via SIP trunk. Quick guide. Version 1.00

2- Technical Training (9 weeks) 3- Applied Project (3 weeks) 4- On Job Training (OJT) (4 weeks)

Ryan Brown October 9, 2004 The Burgh Live, LLC. Voice over IP using Asterisk (*)

How to use IP-0x to connect to Skype

A Guide to Connecting to FreePBX

Configuring an Etherspeak SIP Trunk in Microsoft Lync 2013

Asterisk Business Edition TM Digium Partner Certification

EarthLink Business SIP Trunking. Asterisk 11.2 IP PBX Customer Configuration Guide

ilanga: A Next Generation VoIP-based, TDMenabled

TEL-500 Project Report. Auto-Dialler System. Voice Communications. Done By: - AKASH ANANTHANARAYANAN SANJEEVAKUMAR DEVARAJA

Crash Course in Asterisk

Mediatrix 4404 Step by Step Configuration Guide June 22, 2011

Vulnerability Scan. January 6, 2015

This manual contains product information for the GSM Series cards. The manual is organized in the following manner:

Personalizing Your Individual Phone Line Setup For assistance, please call ext. 102.


Contents. Specialty Answering Service. All rights reserved.

Grandstream Networks, Inc. How to Integrate UCM6100 with Microsoft Lync Server

How to Configure the NEC SV8100 for use with Integra Telecom SIP Solutions

3CX IP PBX Phone System Technical Training Deerfield.com

Integrating Asterisk FreePBX with Lync Server 2010

Configuration Notes 290

How to Configure the Toshiba Strata CIX for use with Integra Telecom SIP Solutions

Avaya Aura SIP Trunking Training

Internet Telephony PBX System

Softswitch & Asterisk Billing System

An Introduction to VoIP Protocols

TEL 500. Voice Communications. Week 1 Write Up. Session Initiation Protocol Lab. Submitted To: Prof Ronny Bull. By: Sai Sharan Korvi

Building an Asterisk Based Call Center. presented by Matt Florell

Integration of GSM Module with PC Mother Board (GSM Trunking) WHITE/Technical PAPER. Author: Srinivasa Rao Bommana

Running Asterisk in a Corporate Environment: a Beginner s Tale

Application Notes Rev. 1.0 Last Updated: January 9, 2015

Quick Start Guide CREATING A NEW SITE

Merging Old and New Telephony with Asterisk

Transcription:

VOIP and Ruby The Convergence of Web and Voice Applications using Open Source Software Justin Grammens Localtone Interactive justin@localtone.com

VOIP is NOT About Cheap Phone Calls Other companies are already doing this cheaper and better.

VOIP Applications! It's about the applications that we can build!

What We Will Cover Why do VOIP now? Asterisk Adhearsion Telegraph Demos

Why Now? Only recently has good Open Source Software been developed ( Rails / Asterisk ) Telecoms are slow to react Few applications merge voice and web Cell phone are everywhere!

Why Now? 2.7 Billion mobile phones. 1.4 Billion fixed-lines. 1/3 of Internet Users access the internet from their mobile phone. iphone has shown consumers why they need the interactive internet on their phone. Others will follow. Most phone users can be identified by a standardized numerical system.

VOIP / Web Analogy Technology Web VOIP Protocol HTTP FTP RTP SIP Industry Standard IAX Asterisk Specific H.323 Obsolete Jingle Gtalk Skype - Proprietary Codec gzip, jpg, gif, mp3, ogg, wma, flv, mpeg, avi g.711 high bandwidth gsm medium bandwidth g.729 low bandwidth Server Apache / Lighttpd Asterisk, Freeswitch Interactivity CGI AGI Asterisk Gateway Interface AMI Asterisk Manager Interface

Asterisk + Open Source Private Branch Exchange (PBX) + Very powerful and flexible + Relatively Stable - Messy to deal with in terms of extending functionality. +++ Free!

Asterisk : Terminology Channel A channel is what can setup and receive calls. Dialplan Script of what to do with a call. Written in the asterisk macro language. AGI Stdin/out TCP method allowing external applications to dynamically write dialplans. AMI Allows sending of commands and listen for stateful events.

Typical Voice System VOIP Clients SIP Rails PSTN Network Origination/ Termination Server SIP / IAX Asterisk Server AGI / AMI / Adhearsion / Telegraph PSTN Network Analog Interface Card Zaptel / Other

Asterisk Dialplan Language [demo] ; Sample from Asterisk configuration extensions.conf file ; ; We start with what to do when a call first comes in. ; exten => s,1,wait(1) ; Wait a second, just for fun exten => s,n,answer ; Answer the line exten => s,n,set(timeout(digit)=5) ; Set Digit Timeout to 5 seconds exten => s,n,set(timeout(response)=10) ; Set Response Timeout to 10 seconds exten => s,n(restart),background(demo-congrats) ; Play a congratulatory message exten => s,n(instruct),background(demo-instruct); Play some instructions exten => s,n,waitexten ; Wait for an extension to be dialed. exten => 2,1,BackGround(demo-moreinfo) exten => 2,n,Goto(s,instruct) ; Give some more information. exten => 3,1,Set(LANGUAGE()=fr) exten => 3,n,Goto(s,restart) ; Set language to french ; Start with the congratulations exten => 1000,1,Goto(default,s,1)

Difficulties in Asterisk Conditional Loops Error Handling Complex Data Structure Date and time handling Database / LDAP Integration RegEx Pattern Matching Extending the language Portability - Asterisk v.s Freeswitch, etc. Variables Object Oriented Design

Ruby / Asterisk Integration Tools RAGI Just for AGI. Not integrated with Rails. No longer active. RAMI Just for Management Interface. No Rails Integration. Not Active. Adhearsion Active. Good for writing pure voice applications. Not tied with Rails (but can be without too much effort). Telegraph Active. Tightly integrated with Rails. Embraces the Voice/Web Analogy.

Adhearsion Standalone server that talks with Asterisk Developed by Jay Phillips of Codemecca Open Source Current version is 0.7.7 Development on 0.8 is nearly complete. Lots of new changes.

Adhearsion Put the line below in extensions.conf Tells Asterisk to process all calls by our Adhearsion server exten => _X.,1,Agi(agi://127.0.0.1) or... when extension 888 is dialed. exten => 888,1,Agi(agi://127.0.0.1)

Adhearsion - dialplan.rb adhearsion { play %w(press-1 for minneapolis press-2 for chicago or press-3 for dallas weather otherwise-press 4) selection = input() w = new_weather case selection when '1' then play w.weather_report("minneapolis, MN") when '2' then play w.weather_report("chicago, IL") when '3' then play w.weather_report("dallas, TX") else simon = new_simon_game simon.start end }

Adhearsion - Demos SIP Phone XLite Asterisk extensions.conf [ adhearsion ] exten => 8000,1, Agi(agi://...) Adhearsion dialplan.rb adhearsion { code.. code.. }

Adhearsion - Demo Notes: Start up Asterisk : sudo asterisk Show asterisk CLI. Start up Adhearsion 0.8 Server : ~/development/adhersion/trunk/bin/ahn start. in the rumadhearsion directory Point Xlite Phone to Localhost dial extension 8000

Adhearsion Weather Demo Demo #1 - Weather - Parses data from Yahoo RSS feed <yweather:forecast day="mon" date="31 Dec 2007" low="6" high="19" text="flurries" code="13" /> rep = %W(weather is-currently #{w.current.temp} degrees today high #{today.high} low #{today.low}) + w.current.desc

Adhearsion Simon Says Demo #2 - Play Simon Says Game def verify_attempt if attempt_correct? call_context.play 'good' else call_context.play %W(#{number.size - 1} times wrong-try-again-smarty) reset end end

Adhearsion Write Ruby in our dial plans! Ability to use any Ruby gems we need (Active Record, etc.) Test and debug our application in isolation. Bring OO practices to VOIP development

Adhearsion It's abstracted and portable across other PBXes It's simple It's extensible It's readable It's maintainable It's fun!

Adhearsion Where's the Rails? Not directly integrated with Rails by choice. Written to stand on it's own, but you can link in your models using ActiveRecord. Looking for VOIP in the MVC framework? Look no further than Telegraph...

Telegraph Written by a company named Idapted. Extracted from production application ( Idapted's distributed voice system for English language learning EnglishQuad ) Started with RAGI / RAMI Tightly Integrated with the Rails/Web Interface They claim it embraces the Voice/Web analogy

Telegraph Installs into any Rails project as a plugin script/plugin install svn://rubyforge.org/var/svn/telegraph/trunk start up the server script/agi_server Interfaces with the gateway (incoming calls) script/ami_server Interfaces with the Asterisk manager

Telegraph Banking Demo SIP Phone XLite Rails Application Asterisk AGI Server

Telegraph Add this to your extensions.conf exten => s, n, AGI(agi://localhost/account) respond_to do wants #r index.html wants.html { render } # Telegraph allows render_voice # which uses the index.voice file wants.voice{ render_voice } end

Banking Demo index.voice: voice.play "welcome-to-demo #{say_amount(@balance)}" voice.link_to_dtmf 'banking-main-menu' do link 1, :action=>'new' link 2, :action=>'list' link :default, :action=>'index' end

Telegraph - Demo Start up telegraph server : telegraph/banking_demo ruby script/asterisk_server ruby script/server Visit http://localhost:3000/account Dial Extension 9000

Real World Application estara Offers a service where a user browsing a site can enter their phone number. The system will dial their number, ask the person to hold and then dial customer service. We'll do this.

Demo Topology Cell Phone PSTN Origination/ Termination Server Internet Asterisk Rails Application AGI Demos: 1. Using the browser to initiate phone call. 2. Who Wants To Be A Billionaire game. AMI

Demo Using PSTN Telegraph Demos - Use the browser to initiate a wakeup call. Use the browser to initiate phone calls to 10 digit phone numbers and bridge the calls Use the browser to initiate a call and verify correct code was entered. Adhearsion Demo - Adhearsion My Who Wants To Be A Billionaire application.

Resources http://rubyhoedown2007.confreaks.com/session03.htm http://www.slideshare.net/jpalley/respondto-voicethe-convergence-of-voice-and-web-interfaceswith-rails-and-asterisk http://adhearsion.com/ http://telegraph.rubyforge.org http://www.voip-info.org