SlideShare une entreprise Scribd logo
1  sur  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!

Contenu connexe

Tendances

End-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John FallowsEnd-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John FallowsHostedbyConfluent
 
OWASP AppSecCali 2015 - Marshalling Pickles
OWASP AppSecCali 2015 - Marshalling PicklesOWASP AppSecCali 2015 - Marshalling Pickles
OWASP AppSecCali 2015 - Marshalling PicklesChristopher Frohoff
 
Microservice Architecture Software Architecture Microservice Design Pattern
Microservice Architecture Software Architecture Microservice Design PatternMicroservice Architecture Software Architecture Microservice Design Pattern
Microservice Architecture Software Architecture Microservice Design Patternjeetendra mandal
 
韓国における FIDO/ eKYC /DID の現状と今後の取り組み - OpenID Summit 2020
韓国における FIDO/ eKYC /DID の現状と今後の取り組み - OpenID Summit 2020韓国における FIDO/ eKYC /DID の現状と今後の取り組み - OpenID Summit 2020
韓国における FIDO/ eKYC /DID の現状と今後の取り組み - OpenID Summit 2020OpenID Foundation Japan
 
법령 온톨로지의 구축 및 검색
법령 온톨로지의 구축 및 검색법령 온톨로지의 구축 및 검색
법령 온톨로지의 구축 및 검색Myungjin Lee
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 
Infrastructure as Code with Ansible
Infrastructure as Code with AnsibleInfrastructure as Code with Ansible
Infrastructure as Code with AnsibleDaniel Bezerra
 
Introduction to Node JS.pdf
Introduction to Node JS.pdfIntroduction to Node JS.pdf
Introduction to Node JS.pdfBareen Shaikh
 
クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割junichi anno
 
How to use ADMT on Windows Server 2022
How to use ADMT on Windows Server 2022How to use ADMT on Windows Server 2022
How to use ADMT on Windows Server 2022Michinari Kobuna
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaEdureka!
 
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)Tatsuo Kudo
 
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020OpenID Foundation Japan
 
JSF2.2で簡単webアプリケーション開発
JSF2.2で簡単webアプリケーション開発JSF2.2で簡単webアプリケーション開発
JSF2.2で簡単webアプリケーション開発Masuji Katoda
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architectureThe Software House
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Hitesh-Java
 

Tendances (20)

End-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John FallowsEnd-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John Fallows
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
OWASP AppSecCali 2015 - Marshalling Pickles
OWASP AppSecCali 2015 - Marshalling PicklesOWASP AppSecCali 2015 - Marshalling Pickles
OWASP AppSecCali 2015 - Marshalling Pickles
 
Microservice Architecture Software Architecture Microservice Design Pattern
Microservice Architecture Software Architecture Microservice Design PatternMicroservice Architecture Software Architecture Microservice Design Pattern
Microservice Architecture Software Architecture Microservice Design Pattern
 
韓国における FIDO/ eKYC /DID の現状と今後の取り組み - OpenID Summit 2020
韓国における FIDO/ eKYC /DID の現状と今後の取り組み - OpenID Summit 2020韓国における FIDO/ eKYC /DID の現状と今後の取り組み - OpenID Summit 2020
韓国における FIDO/ eKYC /DID の現状と今後の取り組み - OpenID Summit 2020
 
법령 온톨로지의 구축 및 검색
법령 온톨로지의 구축 및 검색법령 온톨로지의 구축 및 검색
법령 온톨로지의 구축 및 검색
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
Infrastructure as Code with Ansible
Infrastructure as Code with AnsibleInfrastructure as Code with Ansible
Infrastructure as Code with Ansible
 
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
 
Introduction to Node JS.pdf
Introduction to Node JS.pdfIntroduction to Node JS.pdf
Introduction to Node JS.pdf
 
FAPI 最新情報 - OpenID BizDay #15
FAPI 最新情報 - OpenID BizDay #15FAPI 最新情報 - OpenID BizDay #15
FAPI 最新情報 - OpenID BizDay #15
 
クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割
 
How to use ADMT on Windows Server 2022
How to use ADMT on Windows Server 2022How to use ADMT on Windows Server 2022
How to use ADMT on Windows Server 2022
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
 
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
 
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
 
JSF2.2で簡単webアプリケーション開発
JSF2.2で簡単webアプリケーション開発JSF2.2で簡単webアプリケーション開発
JSF2.2で簡単webアプリケーション開発
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
 
IP Routing on z/OS
IP Routing on z/OSIP Routing on z/OS
IP Routing on z/OS
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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
 

Plus 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
 

Plus 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
 

Dernier

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
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 

Dernier (20)

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
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

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.