SlideShare una empresa de Scribd logo
1 de 31
VoIP using Groovy


Building a “Click to Call” web service in
 Groovy using Open Source Software.




            Justin Grammens
           Localtone Interactive
          justin@localtone.com
But First



A lot of background on Asterisk,
VoIP, Open Source Telephony...
     and a little of who I am.
About Me
  Interested and developing applications using
          Asterisk for more than a year.

Created screencasts for how to get started with
          Asterisk and Adhearsion.

  Developed an application for GeekSquad to
          handle computer repairs

Currently developing a phone voting interface for
                Localtone Radio
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

    What is Asterisk?
➢




    What is a VoIP application?
➢




    Why build it now?
➢




    Asterisk-Java
➢




    Click to Call Web Service
➢
Asterisk
 + Open Source Private Branch Exchange (PBX).
➢

Handles calls over ethernet or RJ11 (phone line).

  + Very powerful and flexible. I call Asterisk not
➢

just a PBX, but a telephony platform.

    + Relatively stable and scalable.
➢




  - 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.
VOIP / Web Analogy
Technology               Web                 VOIP
                    HTTP
Protocol                             SIP – Industry Standard
                    FTP              IAX – Asterisk Specific
                    RTP              H.323 – Obsolete
                                     Jingle – Gtalk
                                     Skype - Proprietary

                   gzip, jpg, gif,   g.711 – high bandwidth
Codec
                   mp3, ogg, wma,    gsm – medium bandwidth
                   flv, mpeg, avi    g.729 – low bandwidth

                   Apache / Tomcat   Asterisk, Freeswitch
Server

                                     AGI – Asterisk Gateway
Interactivity                        Interface
                   CGI
                                     AMI – Asterisk Manager
                                     Interface
What is a VoIP Application

Same applications we typically develop, but the
 website can interface with voice and phones.

  User's send commands using the dialpad of
                 their phone.

Users see the application change either on their
   phone or on the internet. It's all just data!
Why Now?

 Only recently has good Open Source Software
➢

been developed ( Grails / Groovy / 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.
➢




  Users can access your application by any
➢

standard home phone.

  Still hundreds of millions of phones that don't
➢

have an internet browser.

  Most phone users can be identified by a
➢

standardized numerical system.
Typical Voice System
                VOIP
                Clients      SIP


                                                          Grails

                                                             /
            Origination/
                                                  AGI /
 PSTN       Termination                                   Asterisk
                           SIP / IAX               AMI
                                       Asterisk
Network       Server                                       - Java
                                       Server
                                                            Libs

                                                             /

                                                          Tomcat
              Analog
PSTN                         Zaptel
             Interface
Network                     / Other
               Card
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)        ; Give some more information.
exten => 2,n,Goto(s,instruct)

exten => 3,1,Set(LANGUAGE()=fr)      ; Set language to french
exten => 3,n,Goto(s,restart)    ; Start with the congratulations

exten => 1000,1,Goto(default,s,1)
Difficulties in Asterisk
    Conditional Loops            Error Handling
➢                            ➢


    Complex Data                 Date and time
➢                            ➢

    Structure                    handling
    Database / LDAP              RegEx Pattern
➢                            ➢

    Integration                  Matching
    Extending the                Variables
➢                            ➢

    language                     Object Oriented
                             ➢

    Portability - Asterisk       Design
➢

    v.s Freeswitch, etc.
Java / Asterisk Integration Tools

    Asterisk-Java project
➢




       Started in 2005.
     ➢

     ➢ Provides support for AGI and AMI.

     ➢ Open Source library.

     ➢ Runs in the JVM, so it's accessible via

      Groovy.
     ➢ Have used it via JRuby as well.

     ➢ Cross platform.
Asterisk-Java
 Put the line below in extensions.conf
Tells Asterisk to process all calls by our
         Asterisk-Java process
                 exten =>
  _X.,1,Agi(agi://127.0.0.1/hello.agi)

  or... when extension 888 is dialed.
               exten =>
  888,1,Agi(agi://127.0.0.1/hello.agi)
AGI Topology


 Cell
          Origination/
Phone
                                                          Asterisk
          Termination                             AGI
                                                           Java
            Server                               StdOut
                                     Asterisk
   PSTN                                                   Process
                         Internet
                                    extensions
                                       .conf
                                                 AGI
                                                 StdIn
Asterisk – Groovy AGI

import org.asteriskjava.fastagi.*
public class HelloAgiScript extends BaseAgiScript
{
  public void service(AgiRequest request, AgiChannel
channel) throws AgiException
  {
     answer() // Answer
     streamFile(quot;welcomequot;) // play file
     hangup() //hangup
  }
}
AMI Topology


                                                      Grails
 Cell
          Origination/
Phone
          Termination
            Server
   PSTN
                                    Asterisk
                         Internet

                                               AMI




                                                     Web Request
Asterisk – Groovy AMI
import org.asteriskjava.manager.*
class HelloManager
{
   def void run() throws IOException,
AuthenticationFailedException, TimeoutException
   {
     originateAction = new OriginateAction()
     originateAction.setChannel(quot;SIP/Johnquot;)
     originateAction.setContext(quot;defaultquot;)
     originateAction.setExten(quot;1300quot;)
     originateAction.setPriority(new Integer(1))
     originateAction.setTimeout(new Integer(30000))
}
Asterisk - Java
            Write Groovy in our
        ➢

            dial plans!
            Ability to use
        ➢

            databases,
            frameworks (Grails)
                   rd
            and 3 party Java
            libraries.
            Test and debug our
        ➢

            application in
            isolation.
Asterisk - Java
            It's Java (or Groovy)
        ➢


            It's simpler
        ➢


            It's extensible
        ➢


            It's readable
        ➢


            It's maintainable
        ➢


            Bring OO practices to
        ➢

            VoIP development.
Asterisk Screencast
    Learn more at http://localtone.blogspot.com/
➢




    Downloading Asterisk.
➢




    Configuring Asterisk in extensions.conf
➢




    Download X-Lite or SJ Phone.
➢




 Register to Asterisk two phones using SIP
●

protocol.
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.
Amazon Support – Click to Call
Click to Call Web Service
Problem:

You have a website and want to allow your users
to type their phone number in and have your
business phone ring and then connect the call.
Web service allows you to pass in a source phone
number, a destination phone number and an API
Key.
Web Service Request
Request:
/dial/create?source=${SOURCE}&destination=${D
ESTINATION}&apiKey=${APIKEY}

Result:
<Result xml:ns=quot;urn:localtone:clicktocalljavaquot;
xsi:schemaLocation=quot;http://api.localtoneinteractiv
e.com/ClickToCallJava/V1/DialResponse.xsdquot;>
   <Guid>IQ40M</Guid>
   <Status>100</Status>
   <Description>Call queued</Description>
</Result>
Web Service Status
Request: /clicktocalljava/dial/show/IQ40M
Result:
<Result xml:ns=quot;urn:localtone:clicktocalljavaquot;
xsi:schemaLocation=quot;http://api.localtoneinteractiv
e.com/ClickToCallJava/V1/DialResponse.xsdquot;>
   <Guid>IQ40M</Guid>
   <Status>200</Status>
   <Description>No Answer</Description>
   <Source>SIP/200</Source>
   <Destination>SIP/200</Destination>
   <User>admin</User>
</Result>
GitHub Project

  Current code for the click to call web service
 implemented in Asterisk-Java can be found at:

http://github.com/justingrammens/clicktocalljava/tr
                     ee/master

Working on an implementation in Ruby, using the
            Adhearsion framework.
Questions?




  Thanks!

Más contenido relacionado

La actualidad más candente

EusLispでロボットプログラミング
EusLispでロボットプログラミングEusLispでロボットプログラミング
EusLispでロボットプログラミングHiroaki Yaguchi
 
複数のGTFSを用いた時刻表アプリ
複数のGTFSを用いた時刻表アプリ複数のGTFSを用いた時刻表アプリ
複数のGTFSを用いた時刻表アプリMasaki Ito
 
日本の産業をめぐる現状と課題(経済産業省)
日本の産業をめぐる現状と課題(経済産業省)日本の産業をめぐる現状と課題(経済産業省)
日本の産業をめぐる現状と課題(経済産業省)Hiroyuki Kita
 
CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。Matsushita Satoshi
 
VTC on Unity の 進捗について
VTC on Unity の 進捗についてVTC on Unity の 進捗について
VTC on Unity の 進捗についてRyodo Tanaka
 
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법Yoonseok Pyo
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해Nam Hyeonuk
 
QGISで河川縦断図
QGISで河川縦断図QGISで河川縦断図
QGISで河川縦断図Mayumit
 
웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기
웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기
웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기Kim Hunmin
 
基幹システム RDRAモデル
基幹システム RDRAモデル基幹システム RDRAモデル
基幹システム RDRAモデルZenji Kanzaki
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLangNVISIA
 
從零開始做架構圖
從零開始做架構圖從零開始做架構圖
從零開始做架構圖Philip Zheng
 
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化Lintaro Ina
 
確率ロボティクス第12回
確率ロボティクス第12回確率ロボティクス第12回
確率ロボティクス第12回Ryuichi Ueda
 
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)hyun soomyung
 
3万円台でマイ電子基準点を設置してみよう
3万円台でマイ電子基準点を設置してみよう3万円台でマイ電子基準点を設置してみよう
3万円台でマイ電子基準点を設置してみようKazuhiroTakashima1
 
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略Yasutomo Uemori
 
EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜
EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜
EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜TIS Inc.
 
角速度センサによる 歩行および階段昇降の識別
角速度センサによる 歩行および階段昇降の識別角速度センサによる 歩行および階段昇降の識別
角速度センサによる 歩行および階段昇降の識別Sozo Inoue
 
いかなくてもよい博物館をつくる
いかなくてもよい博物館をつくるいかなくてもよい博物館をつくる
いかなくてもよい博物館をつくるNOGUCHI Atsushi
 

La actualidad más candente (20)

EusLispでロボットプログラミング
EusLispでロボットプログラミングEusLispでロボットプログラミング
EusLispでロボットプログラミング
 
複数のGTFSを用いた時刻表アプリ
複数のGTFSを用いた時刻表アプリ複数のGTFSを用いた時刻表アプリ
複数のGTFSを用いた時刻表アプリ
 
日本の産業をめぐる現状と課題(経済産業省)
日本の産業をめぐる現状と課題(経済産業省)日本の産業をめぐる現状と課題(経済産業省)
日本の産業をめぐる現状と課題(経済産業省)
 
CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。
 
VTC on Unity の 進捗について
VTC on Unity の 進捗についてVTC on Unity の 進捗について
VTC on Unity の 進捗について
 
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법
제3회 오픈 로보틱스 세미나 (제12세션) : 로봇 암 모델링과 MoveIt! 사용법
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해
 
QGISで河川縦断図
QGISで河川縦断図QGISで河川縦断図
QGISで河川縦断図
 
웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기
웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기
웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기
 
基幹システム RDRAモデル
基幹システム RDRAモデル基幹システム RDRAモデル
基幹システム RDRAモデル
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
 
從零開始做架構圖
從零開始做架構圖從零開始做架構圖
從零開始做架構圖
 
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
 
確率ロボティクス第12回
確率ロボティクス第12回確率ロボティクス第12回
確率ロボティクス第12回
 
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
 
3万円台でマイ電子基準点を設置してみよう
3万円台でマイ電子基準点を設置してみよう3万円台でマイ電子基準点を設置してみよう
3万円台でマイ電子基準点を設置してみよう
 
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略
 
EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜
EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜
EventStormingワークショップ 〜かつてない図書館をモデリングしてみよう〜
 
角速度センサによる 歩行および階段昇降の識別
角速度センサによる 歩行および階段昇降の識別角速度センサによる 歩行および階段昇降の識別
角速度センサによる 歩行および階段昇降の識別
 
いかなくてもよい博物館をつくる
いかなくてもよい博物館をつくるいかなくてもよい博物館をつくる
いかなくてもよい博物館をつくる
 

Destacado

Jonny_Martin-Asterisk
Jonny_Martin-AsteriskJonny_Martin-Asterisk
Jonny_Martin-Asterisktutorialsruby
 
Sach asterisk tieng viet full
Sach asterisk tieng viet fullSach asterisk tieng viet full
Sach asterisk tieng viet fullltphong_it
 
02 asterisk - the future of telecommunications
02   asterisk - the future of telecommunications02   asterisk - the future of telecommunications
02 asterisk - the future of telecommunicationsTran Thanh
 
Telephony Service Development on Asterisk Platform
Telephony Service Development on Asterisk PlatformTelephony Service Development on Asterisk Platform
Telephony Service Development on Asterisk PlatformHamid Fadishei
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskMoises Silva
 
Power Management System and Advance Metering with Integrated Renewable Energy...
Power Management System and Advance Metering with Integrated Renewable Energy...Power Management System and Advance Metering with Integrated Renewable Energy...
Power Management System and Advance Metering with Integrated Renewable Energy...LALIT SEHRAWAT
 
The 12 tasks of Asterisk
The 12 tasks of AsteriskThe 12 tasks of Asterisk
The 12 tasks of AsteriskElio Rojano
 
Home Automation with Asterisk - Astricon 2015 - Alberto Sagredo Castro
Home Automation with Asterisk - Astricon 2015 - Alberto Sagredo CastroHome Automation with Asterisk - Astricon 2015 - Alberto Sagredo Castro
Home Automation with Asterisk - Astricon 2015 - Alberto Sagredo CastroAlberto Sagredo Castro
 
Voice over Internet Protocol (VoIP) using Asterisk
Voice over Internet Protocol (VoIP) using AsteriskVoice over Internet Protocol (VoIP) using Asterisk
Voice over Internet Protocol (VoIP) using AsteriskSameer Verma
 
Advance Metering Infrastructure: Smart Meter
Advance Metering Infrastructure: Smart MeterAdvance Metering Infrastructure: Smart Meter
Advance Metering Infrastructure: Smart MeterMD NAWAZ
 

Destacado (14)

How did the public find that out?
How did the public find that out?How did the public find that out?
How did the public find that out?
 
Integração Java EE e VoIP
Integração Java EE e VoIPIntegração Java EE e VoIP
Integração Java EE e VoIP
 
Jonny_Martin-Asterisk
Jonny_Martin-AsteriskJonny_Martin-Asterisk
Jonny_Martin-Asterisk
 
Sach asterisk tieng viet full
Sach asterisk tieng viet fullSach asterisk tieng viet full
Sach asterisk tieng viet full
 
02 asterisk - the future of telecommunications
02   asterisk - the future of telecommunications02   asterisk - the future of telecommunications
02 asterisk - the future of telecommunications
 
Telephony Service Development on Asterisk Platform
Telephony Service Development on Asterisk PlatformTelephony Service Development on Asterisk Platform
Telephony Service Development on Asterisk Platform
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in Asterisk
 
Power Management System and Advance Metering with Integrated Renewable Energy...
Power Management System and Advance Metering with Integrated Renewable Energy...Power Management System and Advance Metering with Integrated Renewable Energy...
Power Management System and Advance Metering with Integrated Renewable Energy...
 
The 12 tasks of Asterisk
The 12 tasks of AsteriskThe 12 tasks of Asterisk
The 12 tasks of Asterisk
 
Home Automation with Asterisk - Astricon 2015 - Alberto Sagredo Castro
Home Automation with Asterisk - Astricon 2015 - Alberto Sagredo CastroHome Automation with Asterisk - Astricon 2015 - Alberto Sagredo Castro
Home Automation with Asterisk - Astricon 2015 - Alberto Sagredo Castro
 
Voice over Internet Protocol (VoIP) using Asterisk
Voice over Internet Protocol (VoIP) using AsteriskVoice over Internet Protocol (VoIP) using Asterisk
Voice over Internet Protocol (VoIP) using Asterisk
 
Asterisk, IM and Presence: how?
Asterisk, IM and Presence: how?Asterisk, IM and Presence: how?
Asterisk, IM and Presence: how?
 
Smart metering infrastructure Architecture and analytics
Smart metering infrastructure Architecture and analyticsSmart metering infrastructure Architecture and analytics
Smart metering infrastructure Architecture and analytics
 
Advance Metering Infrastructure: Smart Meter
Advance Metering Infrastructure: Smart MeterAdvance Metering Infrastructure: Smart Meter
Advance Metering Infrastructure: Smart Meter
 

Similar a Asterisk-Java Framework Presentation

Adhearsion and Telegraph Framework Presentation
Adhearsion and Telegraph Framework PresentationAdhearsion and Telegraph Framework Presentation
Adhearsion and Telegraph Framework PresentationJustin Grammens
 
respond_to :voice - the convergence of voice and web interfaces with Rails an...
respond_to :voice - the convergence of voice and web interfaces with Rails an...respond_to :voice - the convergence of voice and web interfaces with Rails an...
respond_to :voice - the convergence of voice and web interfaces with Rails an...jpalley
 
Stuff we noticed while building "Asterisk in the cloud"
Stuff we noticed while building "Asterisk in the cloud"Stuff we noticed while building "Asterisk in the cloud"
Stuff we noticed while building "Asterisk in the cloud"troyd
 
Using Asterisk in a SIP softswitch
Using Asterisk in a SIP softswitchUsing Asterisk in a SIP softswitch
Using Asterisk in a SIP softswitchMonica McArthur
 
Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Guillaume Laforge
 
RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009Roland Tritsch
 
Pwning Your Phone with Adhearsion and Asterisk
Pwning Your Phone with Adhearsion and AsteriskPwning Your Phone with Adhearsion and Asterisk
Pwning Your Phone with Adhearsion and Asteriskjicksta
 
Quick Intro To JRuby
Quick Intro To JRubyQuick Intro To JRuby
Quick Intro To JRubyFrederic Jean
 
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019Jöran Vinzens
 
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume LaforgeGroovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume LaforgeGuillaume Laforge
 
Tuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on MobicentsTuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on MobicentsJean Deruelle
 
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGI
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGIPhpconf 2013 - Agile Telephony Applications with PAMI and PAGI
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGIMarcelo Gornstein
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScriptOleg Podsechin
 
Managing large and distributed Eclipse server applications.
Managing large and distributed Eclipse server applications.Managing large and distributed Eclipse server applications.
Managing large and distributed Eclipse server applications.Gunnar Wagenknecht
 
Supporting Asterisk AGI apps (ClueCon 2010)
Supporting Asterisk AGI apps (ClueCon 2010)Supporting Asterisk AGI apps (ClueCon 2010)
Supporting Asterisk AGI apps (ClueCon 2010)troyd
 
My speech at AstriCon 2007
My speech at AstriCon 2007My speech at AstriCon 2007
My speech at AstriCon 2007stefanocarlini
 
Real-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.ioReal-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.ioRick Copeland
 

Similar a Asterisk-Java Framework Presentation (20)

Adhearsion and Telegraph Framework Presentation
Adhearsion and Telegraph Framework PresentationAdhearsion and Telegraph Framework Presentation
Adhearsion and Telegraph Framework Presentation
 
Ruby voip
Ruby voipRuby voip
Ruby voip
 
respond_to :voice - the convergence of voice and web interfaces with Rails an...
respond_to :voice - the convergence of voice and web interfaces with Rails an...respond_to :voice - the convergence of voice and web interfaces with Rails an...
respond_to :voice - the convergence of voice and web interfaces with Rails an...
 
Stuff we noticed while building "Asterisk in the cloud"
Stuff we noticed while building "Asterisk in the cloud"Stuff we noticed while building "Asterisk in the cloud"
Stuff we noticed while building "Asterisk in the cloud"
 
Using Asterisk in a SIP softswitch
Using Asterisk in a SIP softswitchUsing Asterisk in a SIP softswitch
Using Asterisk in a SIP softswitch
 
Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007
 
RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009
 
Pwning Your Phone with Adhearsion and Asterisk
Pwning Your Phone with Adhearsion and AsteriskPwning Your Phone with Adhearsion and Asterisk
Pwning Your Phone with Adhearsion and Asterisk
 
Quick Intro To JRuby
Quick Intro To JRubyQuick Intro To JRuby
Quick Intro To JRuby
 
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019
 
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume LaforgeGroovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
 
Tuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on MobicentsTuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on Mobicents
 
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGI
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGIPhpconf 2013 - Agile Telephony Applications with PAMI and PAGI
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGI
 
GlassFish v3 Prelude Aquarium Paris
GlassFish v3 Prelude Aquarium ParisGlassFish v3 Prelude Aquarium Paris
GlassFish v3 Prelude Aquarium Paris
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
 
Managing large and distributed Eclipse server applications.
Managing large and distributed Eclipse server applications.Managing large and distributed Eclipse server applications.
Managing large and distributed Eclipse server applications.
 
GlassFish v3 : En Route Java EE 6
GlassFish v3 : En Route Java EE 6GlassFish v3 : En Route Java EE 6
GlassFish v3 : En Route Java EE 6
 
Supporting Asterisk AGI apps (ClueCon 2010)
Supporting Asterisk AGI apps (ClueCon 2010)Supporting Asterisk AGI apps (ClueCon 2010)
Supporting Asterisk AGI apps (ClueCon 2010)
 
My speech at AstriCon 2007
My speech at AstriCon 2007My speech at AstriCon 2007
My speech at AstriCon 2007
 
Real-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.ioReal-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.io
 

Más de Justin Grammens

Scope Creep - Damned if I Do, Damned if I Don't
Scope Creep - Damned if I Do, Damned if I Don'tScope Creep - Damned if I Do, Damned if I Don't
Scope Creep - Damned if I Do, Damned if I Don'tJustin Grammens
 
Deep Learning with TensorFlow
Deep Learning with TensorFlowDeep Learning with TensorFlow
Deep Learning with TensorFlowJustin Grammens
 
Speaking at John Carrol University on the Internet of Things
Speaking at John Carrol University on the Internet of ThingsSpeaking at John Carrol University on the Internet of Things
Speaking at John Carrol University on the Internet of ThingsJustin Grammens
 
NDC Minnesota 2019 - Fundamentals of Azure IoT
NDC Minnesota 2019 - Fundamentals of Azure IoTNDC Minnesota 2019 - Fundamentals of Azure IoT
NDC Minnesota 2019 - Fundamentals of Azure IoTJustin Grammens
 
This Time, It’s Personal: Why Security and the IoT Is Different
This Time, It’s Personal: Why Security and the IoT Is DifferentThis Time, It’s Personal: Why Security and the IoT Is Different
This Time, It’s Personal: Why Security and the IoT Is DifferentJustin Grammens
 
Looking into the Future: Using Google's Prediction API
Looking into the Future: Using Google's Prediction APILooking into the Future: Using Google's Prediction API
Looking into the Future: Using Google's Prediction APIJustin Grammens
 
The Internet of Things - What It Is, Where Its Headed and Its Applications
The Internet of Things - What It Is, Where Its Headed and Its ApplicationsThe Internet of Things - What It Is, Where Its Headed and Its Applications
The Internet of Things - What It Is, Where Its Headed and Its ApplicationsJustin Grammens
 
Internet of Things: What It Is, Where's Headed and Its Applications
Internet of Things: What It Is, Where's Headed and Its ApplicationsInternet of Things: What It Is, Where's Headed and Its Applications
Internet of Things: What It Is, Where's Headed and Its ApplicationsJustin Grammens
 
Collaborative Learning - The Role Communities Play in IoT
Collaborative Learning - The Role Communities Play in IoTCollaborative Learning - The Role Communities Play in IoT
Collaborative Learning - The Role Communities Play in IoTJustin Grammens
 
Internet of Things: What it is, where it is going and how it is being applied.
Internet of Things: What it is, where it is going and how it is being applied.Internet of Things: What it is, where it is going and how it is being applied.
Internet of Things: What it is, where it is going and how it is being applied.Justin Grammens
 
Arduino, Open Source and The Internet of Things Landscape
Arduino, Open Source and The Internet of Things LandscapeArduino, Open Source and The Internet of Things Landscape
Arduino, Open Source and The Internet of Things LandscapeJustin Grammens
 
Gobot Meets IoT : Using the Go Programming Language to Control The “Things” A...
Gobot Meets IoT : Using the Go Programming Language to Control The “Things” A...Gobot Meets IoT : Using the Go Programming Language to Control The “Things” A...
Gobot Meets IoT : Using the Go Programming Language to Control The “Things” A...Justin Grammens
 
Physical Computing Using Go and Arduino
Physical Computing Using Go and ArduinoPhysical Computing Using Go and Arduino
Physical Computing Using Go and ArduinoJustin Grammens
 
The State of Arduino and IoT
The State of Arduino and IoTThe State of Arduino and IoT
The State of Arduino and IoTJustin Grammens
 
Voice Enabled Applications
Voice Enabled ApplicationsVoice Enabled Applications
Voice Enabled ApplicationsJustin Grammens
 

Más de Justin Grammens (18)

Scope Creep - Damned if I Do, Damned if I Don't
Scope Creep - Damned if I Do, Damned if I Don'tScope Creep - Damned if I Do, Damned if I Don't
Scope Creep - Damned if I Do, Damned if I Don't
 
Deep Learning with TensorFlow
Deep Learning with TensorFlowDeep Learning with TensorFlow
Deep Learning with TensorFlow
 
Speaking at John Carrol University on the Internet of Things
Speaking at John Carrol University on the Internet of ThingsSpeaking at John Carrol University on the Internet of Things
Speaking at John Carrol University on the Internet of Things
 
NDC Minnesota 2019 - Fundamentals of Azure IoT
NDC Minnesota 2019 - Fundamentals of Azure IoTNDC Minnesota 2019 - Fundamentals of Azure IoT
NDC Minnesota 2019 - Fundamentals of Azure IoT
 
This Time, It’s Personal: Why Security and the IoT Is Different
This Time, It’s Personal: Why Security and the IoT Is DifferentThis Time, It’s Personal: Why Security and the IoT Is Different
This Time, It’s Personal: Why Security and the IoT Is Different
 
Looking into the Future: Using Google's Prediction API
Looking into the Future: Using Google's Prediction APILooking into the Future: Using Google's Prediction API
Looking into the Future: Using Google's Prediction API
 
The Internet of Things - What It Is, Where Its Headed and Its Applications
The Internet of Things - What It Is, Where Its Headed and Its ApplicationsThe Internet of Things - What It Is, Where Its Headed and Its Applications
The Internet of Things - What It Is, Where Its Headed and Its Applications
 
Internet of Things: What It Is, Where's Headed and Its Applications
Internet of Things: What It Is, Where's Headed and Its ApplicationsInternet of Things: What It Is, Where's Headed and Its Applications
Internet of Things: What It Is, Where's Headed and Its Applications
 
Collaborative Learning - The Role Communities Play in IoT
Collaborative Learning - The Role Communities Play in IoTCollaborative Learning - The Role Communities Play in IoT
Collaborative Learning - The Role Communities Play in IoT
 
Internet of Things: What it is, where it is going and how it is being applied.
Internet of Things: What it is, where it is going and how it is being applied.Internet of Things: What it is, where it is going and how it is being applied.
Internet of Things: What it is, where it is going and how it is being applied.
 
Arduino, Open Source and The Internet of Things Landscape
Arduino, Open Source and The Internet of Things LandscapeArduino, Open Source and The Internet of Things Landscape
Arduino, Open Source and The Internet of Things Landscape
 
Gobot Meets IoT : Using the Go Programming Language to Control The “Things” A...
Gobot Meets IoT : Using the Go Programming Language to Control The “Things” A...Gobot Meets IoT : Using the Go Programming Language to Control The “Things” A...
Gobot Meets IoT : Using the Go Programming Language to Control The “Things” A...
 
Physical Computing Using Go and Arduino
Physical Computing Using Go and ArduinoPhysical Computing Using Go and Arduino
Physical Computing Using Go and Arduino
 
The State of Arduino and IoT
The State of Arduino and IoTThe State of Arduino and IoT
The State of Arduino and IoT
 
Android Minnebar
Android MinnebarAndroid Minnebar
Android Minnebar
 
Android TCJUG
Android TCJUGAndroid TCJUG
Android TCJUG
 
Voice Enabled Applications
Voice Enabled ApplicationsVoice Enabled Applications
Voice Enabled Applications
 
Android Intro
Android IntroAndroid Intro
Android Intro
 

Último

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 

Último (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 

Asterisk-Java Framework Presentation

  • 1. VoIP using Groovy Building a “Click to Call” web service in Groovy using Open Source Software. Justin Grammens Localtone Interactive justin@localtone.com
  • 2. But First A lot of background on Asterisk, VoIP, Open Source Telephony... and a little of who I am.
  • 3. About Me Interested and developing applications using Asterisk for more than a year. Created screencasts for how to get started with Asterisk and Adhearsion. Developed an application for GeekSquad to handle computer repairs Currently developing a phone voting interface for Localtone Radio
  • 4. VoIP is NOT About Cheap Phone Calls Other companies are already doing this cheaper and better.
  • 5. VoIP Applications! It's about the applications that we can build!
  • 6. What We Will Cover What is Asterisk? ➢ What is a VoIP application? ➢ Why build it now? ➢ Asterisk-Java ➢ Click to Call Web Service ➢
  • 7. Asterisk + Open Source Private Branch Exchange (PBX). ➢ Handles calls over ethernet or RJ11 (phone line). + Very powerful and flexible. I call Asterisk not ➢ just a PBX, but a telephony platform. + Relatively stable and scalable. ➢ - Messy to deal with in terms of extending ➢ functionality. +++ Free! ➢
  • 8. 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.
  • 9. VOIP / Web Analogy Technology Web VOIP HTTP Protocol SIP – Industry Standard FTP IAX – Asterisk Specific RTP H.323 – Obsolete Jingle – Gtalk Skype - Proprietary gzip, jpg, gif, g.711 – high bandwidth Codec mp3, ogg, wma, gsm – medium bandwidth flv, mpeg, avi g.729 – low bandwidth Apache / Tomcat Asterisk, Freeswitch Server AGI – Asterisk Gateway Interactivity Interface CGI AMI – Asterisk Manager Interface
  • 10. What is a VoIP Application Same applications we typically develop, but the website can interface with voice and phones. User's send commands using the dialpad of their phone. Users see the application change either on their phone or on the internet. It's all just data!
  • 11. Why Now? Only recently has good Open Source Software ➢ been developed ( Grails / Groovy / Asterisk ). Telecoms are slow to react. ➢ Few applications merge voice and web. ➢ Cell phone are everywhere! ➢
  • 12. Why Now? 2.7 Billion mobile phones. 1.4 Billion fixed-lines. ➢ Users can access your application by any ➢ standard home phone. Still hundreds of millions of phones that don't ➢ have an internet browser. Most phone users can be identified by a ➢ standardized numerical system.
  • 13. Typical Voice System VOIP Clients SIP Grails / Origination/ AGI / PSTN Termination Asterisk SIP / IAX AMI Asterisk Network Server - Java Server Libs / Tomcat Analog PSTN Zaptel Interface Network / Other Card
  • 14. 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) ; Give some more information. exten => 2,n,Goto(s,instruct) exten => 3,1,Set(LANGUAGE()=fr) ; Set language to french exten => 3,n,Goto(s,restart) ; Start with the congratulations exten => 1000,1,Goto(default,s,1)
  • 15. Difficulties in Asterisk Conditional Loops Error Handling ➢ ➢ Complex Data Date and time ➢ ➢ Structure handling Database / LDAP RegEx Pattern ➢ ➢ Integration Matching Extending the Variables ➢ ➢ language Object Oriented ➢ Portability - Asterisk Design ➢ v.s Freeswitch, etc.
  • 16. Java / Asterisk Integration Tools Asterisk-Java project ➢ Started in 2005. ➢ ➢ Provides support for AGI and AMI. ➢ Open Source library. ➢ Runs in the JVM, so it's accessible via Groovy. ➢ Have used it via JRuby as well. ➢ Cross platform.
  • 17. Asterisk-Java Put the line below in extensions.conf Tells Asterisk to process all calls by our Asterisk-Java process exten => _X.,1,Agi(agi://127.0.0.1/hello.agi) or... when extension 888 is dialed. exten => 888,1,Agi(agi://127.0.0.1/hello.agi)
  • 18. AGI Topology Cell Origination/ Phone Asterisk Termination AGI Java Server StdOut Asterisk PSTN Process Internet extensions .conf AGI StdIn
  • 19. Asterisk – Groovy AGI import org.asteriskjava.fastagi.* public class HelloAgiScript extends BaseAgiScript { public void service(AgiRequest request, AgiChannel channel) throws AgiException { answer() // Answer streamFile(quot;welcomequot;) // play file hangup() //hangup } }
  • 20. AMI Topology Grails Cell Origination/ Phone Termination Server PSTN Asterisk Internet AMI Web Request
  • 21. Asterisk – Groovy AMI import org.asteriskjava.manager.* class HelloManager { def void run() throws IOException, AuthenticationFailedException, TimeoutException { originateAction = new OriginateAction() originateAction.setChannel(quot;SIP/Johnquot;) originateAction.setContext(quot;defaultquot;) originateAction.setExten(quot;1300quot;) originateAction.setPriority(new Integer(1)) originateAction.setTimeout(new Integer(30000)) }
  • 22. Asterisk - Java Write Groovy in our ➢ dial plans! Ability to use ➢ databases, frameworks (Grails) rd and 3 party Java libraries. Test and debug our ➢ application in isolation.
  • 23. Asterisk - Java It's Java (or Groovy) ➢ It's simpler ➢ It's extensible ➢ It's readable ➢ It's maintainable ➢ Bring OO practices to ➢ VoIP development.
  • 24. Asterisk Screencast Learn more at http://localtone.blogspot.com/ ➢ Downloading Asterisk. ➢ Configuring Asterisk in extensions.conf ➢ Download X-Lite or SJ Phone. ➢ Register to Asterisk two phones using SIP ● protocol.
  • 25. 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.
  • 26. Amazon Support – Click to Call
  • 27. Click to Call Web Service Problem: You have a website and want to allow your users to type their phone number in and have your business phone ring and then connect the call. Web service allows you to pass in a source phone number, a destination phone number and an API Key.
  • 28. Web Service Request Request: /dial/create?source=${SOURCE}&destination=${D ESTINATION}&apiKey=${APIKEY} Result: <Result xml:ns=quot;urn:localtone:clicktocalljavaquot; xsi:schemaLocation=quot;http://api.localtoneinteractiv e.com/ClickToCallJava/V1/DialResponse.xsdquot;> <Guid>IQ40M</Guid> <Status>100</Status> <Description>Call queued</Description> </Result>
  • 29. Web Service Status Request: /clicktocalljava/dial/show/IQ40M Result: <Result xml:ns=quot;urn:localtone:clicktocalljavaquot; xsi:schemaLocation=quot;http://api.localtoneinteractiv e.com/ClickToCallJava/V1/DialResponse.xsdquot;> <Guid>IQ40M</Guid> <Status>200</Status> <Description>No Answer</Description> <Source>SIP/200</Source> <Destination>SIP/200</Destination> <User>admin</User> </Result>
  • 30. GitHub Project Current code for the click to call web service implemented in Asterisk-Java can be found at: http://github.com/justingrammens/clicktocalljava/tr ee/master Working on an implementation in Ruby, using the Adhearsion framework.