SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Asterisk, Instant Messaging and
        Presence, how?
    Saúl Ibarra Corretgé <saghul@gmail.com>

                  http://www.saghul.net

                  http://www.sipdoc.net

                  saghul



                        http://www.irontec.com
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                  About me



●   saghul
       – VoIP enthusiast, playing around with Asterisk since 2k5
       – GNU/Linux lover likes everything “Software Libre”
       – Co-founder of http://sipdoc.net
       – Highly involved in spanish VoIP comunities




                                                                                2
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                            This presentation

●   http://www.saghul.net/blog/downloads/astricon2k9/
●   http://www.slideshare.net/saghul/
      –   Slides
      –   Complete configuration files
      –   Database example data




                                                                                  3
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                       Index

1. Asterisk and presence status
2. SIP SIMPLE or XMPP?
3. The XMPP solution
     1. OpenFire setup
4. The SIMPLE solution
     1. Kamailio + Asterisk setup
5. Conclusions




                                                                               4
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                       What we do have now

●   Asterisk SIP support (chan_sip)
      –   In-dialog MESSAGE :-(
      –   SUBSCRIBE and NOTIFY support
            ●   For Event: dialog
            ●   What about Event: Presence? :-(
      –   No PUBLISH support :-(
●   Asterisk XMPP support
      –   res_jabber
            ●   JabberSend, JABBER_RECEIVE, JABBER_STATUS
      –   chan_gtalk, chan_jingle
●   Am I missing something?


                                                                                    5
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                            Do we need presence and IM?

●   “I want to talk to you, not to your phone”
●   Are you available?
      –   For an audio conference?
      –   Just for IM?
      –   For whom?
●   Where are you?
      –   Mobile
      –   Office
      –   Home
      –   ...

We need to know if a user is available
       and what his status is
                                                                                   6
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                           What we need

●   A presence server
●   Users may publish their status
●   Users may subscribe to other users status
●   Instant Messaging between users

              Is it possible only with Asterisk?



                             NO

                                                                               7
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?




SIMPLE or XMPP?
                                                                   8
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                              SIMPLE vs XMPP

●   Did SIMPLE reinvent the wheel?
●   Large companies started adopting SIMPLE (Microsoft,
    …)
       –   Propietary extensions :-(
●   XMPP does not provide voice capabilities
       –   Well, there is Jingle...
●   If SIP is the VoIP protocol: why not use it also for
    presence and IM?




                                                                                    9
The XMPP solution
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                      The XMPP solution

●   Integrate Asterisk with a XMPP server




                                                                           11
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                  OpenFire

●   Open Source
●   Java based
●   Multiplatform
●   Asterisk integration plugin
●   SIP softphone plugin
●   Gateways to multiple mi services: MSN, Yahoo, …
●   Easy installation!




                                                                           12
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                   OpenFire (II)
●   Download deb package
●   dpkg -i openfire_3.6.4_all.deb




                                                                                13
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                               OpenFire (III)

●   Web based configuration
●   Clustering architecture
●   Connection to the Asterisk Manager Interface
      –   Multiple connections
●   Mapping between Asterisk SIP users and OpenFire
    XMPP users
●   Multiplatform Java client: Spark
●   Flash based web client: SparkWeb




                                                                             14
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                              OpenFire (IV)




                                                            15
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                              OpenFire (V)

●   When a user is talking OpenFire puts it “On the phone”




                                                                           16
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                              OpenFire (VI)




                                                            17
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                OpenFire (VI)

●   What we get
      –   Instant Messaging
      –   Presence
      –   Gateways to other mi services
      –   Text conferencing
●   Problems
      –   Duplicated users (we could partially fix it with LDAP)
      –   Need to handle 2 protocols
      –   Not many softphones support SIP and XMPP
      –   Do any hardphones support XMPP?




                                                                              18
The SIP solution
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                          A complex protocol

●   SIMPLE IETF working group
      –   Presence RFCs
            ●   3856, 3857, 3858, 3863, 4479, 4480, 4482, ...
      –   XCAP
            ●   4825, 4826, 4827, 5025, …
      –   Instant Messaging
            ●   3428, 3994, 4975, …




     SIMPLE is NOT simple!

                                                                                20
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                             The SIP solution

●   Integrate Asterisk and Kamailio to provide IM and
    presence.
●   Users are registered to Kamailio.
●   INVITE requests are routed through the Asterisk server.
      –   Asterisk RealTime user integration with Kamailio's
            subscriber table.
●   PUBLISH, SUBSCRIBE and MESSAGE requests are
    handled by Kamailio.




                                                                              21
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                           Registration




REGISTER



                 Store location            Asterisk does
                                             nothing!



                                                                       22
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                             Kamailio – Asterisk RealTime integration

●   Asterisk peers are Kamailio's subscribers.
●   MySQL view so that Asterisk 'sees' the users as his own.
●   Peers IP → Kamailio IP.
●   Calls between users go through Kamailio and Asterisk.
●   We need to call to alphanumeric users → DB Alias




                                                                            23
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                             Kamailio – Asterisk RealTime integration (2)

CREATE VIEW sip_peers AS
SELECT subscriber.username AS name,
subscriber.username AS defaultuser,
'friend' AS type,
NULL AS secret,
subscriber.domain AS host,
concat(subscriber.rpid,' ','<',subscriber.username,'>') AS callerid,
'from-users' AS context,
subscriber.username AS mailbox,
'yes' AS nat,
'no' AS qualify,
'info' AS dtmfmode,
subscriber.username AS fromuser,

                                                                                24
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                           Kamailio – Asterisk RealTime integration (3)

NULL AS authuser,
subscriber.domain AS fromdomain,
NULL AS insecure,
'no' AS canreinvite,
NULL AS disallow,
'all' AS allow,
NULL AS restrictcid,
subscriber.domain AS defaultip,
subscriber.domain AS ipaddr,
subscriber.domain AS outboundproxy,
'5060' AS port,
NULL AS regseconds
FROM kamailio_1.subscriber;

                                                                              25
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                       Invitation

                    2. Find numeric Alias                  5. Dial to the X-
                    3. Add X-Subscriber                    Subscriber user
                    header
          1. INVITE
Alice       (Bob)
                                              4. INVITE
                                               (2001)

                                            6. INVITE (Bob)

        8. INVITE          7. Lookup
Bob       (Bob)           user location



                                                                                26
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                              Invitation (2)

# Route all INVITE requests to Asterisk
if (is_method("INVITE")) {
     # Remove X-Subscriber header so that no one sees it...
     remove_hf("X-Subscriber");


     # We don't have to route the requests coming FROM Asterisk
     # back to Asterisk. We would make a loop!
     if (!($si == "AST_IP" && $sp == "AST_PORT")) {
          route(ASTERISK_USERS_ROUTE);
     }
}




                                                                           27
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                  Invitation (3)

# Send INVITE requests to the Asterisk server
route[ASTERISK_USERS_ROUTE] {
     # Call to the numeric alias
     avp_db_query("SELECT alias_username FROM dbaliases WHERE username
= '$rU' AND domain = '$avp(AVP_ORIGDOMAIN)'LIMIT 1",
"$avp(AVP_NUMALIAS)”);
     if (is_avp_set("$avp(AVP_NUMALIAS)")) {
          # Save the subscriber in a header so we can use it in Asterisk
          append_hf("X-Subscriber: $rUrn");
          $rU = $avp(s:numalias);
     }


     $rd = "AST_IP";
     $rp = "AST_PORT";
     route(RELAY_ROUTE);
}                                                                              28
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                              Invitation (4)


[from-users]
exten => _X.,1,NoOp()
exten => _X.,n,Set(SUBSCRIBER=${SIP_HEADER(X-Subscriber)})
exten => _X.,n,GotoIf($[${LEN(${SUBSCRIBER})} = 0]?hang)
exten => _X.,n,Dial(SIP/${SUBSCRIBER})
exten => _X.,n(hang),Hangup




                                                                           29
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                               SIMPLE presence



        1. SUBSCRIBE
            (Bob)              2. handle_subscribe

Alice

         5. NOTIFY



        3. PUBLISH                4. handle_publish             Asterisk does
Bob                                                               nothing!



                                                                                 30
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                      SIMPLE presence (2)
# Handle presence requests
    if(is_method("PUBLISH|SUBSCRIBE")) {
            route(PRESENCE_ROUTE);
    }


# Handle presence
route[PRESENCE_ROUTE] {
    if (is_method("PUBLISH")) {
            handle_publish();
            t_release();
    } else if (is_method("SUBSCRIBE")) {
            handle_subscribe();
            t_release();
    }
    exit;
}                                                                            31
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                     Messaging



        1. MESSAGE (Bob)
                                2. Lookup location
Alice




           3. MESSAGE
                                                              Asterisk does
Bob                                                             nothing!



                                                                               32
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                NAT handling

●   We just need to fix the NAT in signalling.
●   Our Asterisk 'peers' are configured with nat=yes
      –   COMEDIA mode
      –   Audio will go through Asterisk




                                                                              33
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                 Further improvements...




                                                            34
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                          Further improvements... (2)




What about mixing both?
   –   OpenFire's Asterisk plugin still works! (regardless
        of the integration with Kamailio)




                                                                         35
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?




SIMPLE or XMPP?
                                                               36
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                    Thanks!

BYE sip:astricon@astricon.net SIP/2.0
Via: SIP/2.0/UDP guest.astricon.net:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
From: saghul <sip:saghul@sipdoc.net>;tag=8321234356
To: AstriCon <sip:astricon@astricon.net>;tag=9fxced76sl
Call-ID: 3848276298220188511@astricon.net
CSeq: 1 BYE
Content-Length: 0


    Thanks for watching!


                                                                           37
Any questions?
AstriCon 2009: Asterisk, Instant Messaging and Presence, how?

                                                                 License




  http://creativecommons.org/licenses/by-sa/3.0/




All images are property of their respective authors.
                                                                       39

Weitere ähnliche Inhalte

Ähnlich wie Asterisk presence-im-091015103222-phpapp02

Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.Cisco DevNet
 
OpenStack Swiftの最新機能とStorlets
OpenStack Swiftの最新機能とStorletsOpenStack Swiftの最新機能とStorlets
OpenStack Swiftの最新機能とStorletsKota Tsuyuzaki
 
OpenStackユーザ会資料 - Masakari
OpenStackユーザ会資料 - MasakariOpenStackユーザ会資料 - Masakari
OpenStackユーザ会資料 - Masakarimasahito12
 
Astricon 2010: Scaling Asterisk installations
Astricon 2010: Scaling Asterisk installationsAstricon 2010: Scaling Asterisk installations
Astricon 2010: Scaling Asterisk installationsOlle E Johansson
 
Rome 2017: Building advanced voice assistants and chat bots
Rome 2017: Building advanced voice assistants and chat botsRome 2017: Building advanced voice assistants and chat bots
Rome 2017: Building advanced voice assistants and chat botsCisco DevNet
 
S3 Server Hackathon Presented by S3 Server, a Scality Product, Seagate and Ho...
S3 Server Hackathon Presented by S3 Server, a Scality Product, Seagate and Ho...S3 Server Hackathon Presented by S3 Server, a Scality Product, Seagate and Ho...
S3 Server Hackathon Presented by S3 Server, a Scality Product, Seagate and Ho...Scality
 
Hackathon scality holberton seagate 2016 v5
Hackathon scality holberton seagate 2016 v5Hackathon scality holberton seagate 2016 v5
Hackathon scality holberton seagate 2016 v5Scality
 
20110924 kansai kinect_vol1
20110924 kansai kinect_vol120110924 kansai kinect_vol1
20110924 kansai kinect_vol1Kaoru NAKAMURA
 
Mixing reality with mobile AR, Дмитрий Щербина
Mixing reality with mobile AR, Дмитрий ЩербинаMixing reality with mobile AR, Дмитрий Щербина
Mixing reality with mobile AR, Дмитрий ЩербинаSigma Software
 
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...Codemotion
 
Log everything!
Log everything!Log everything!
Log everything!ICANS GmbH
 
OpenStack Overview and History
OpenStack Overview and HistoryOpenStack Overview and History
OpenStack Overview and HistoryMirantis
 
Raspberry pi 3
Raspberry pi 3Raspberry pi 3
Raspberry pi 3Vipin V
 

Ähnlich wie Asterisk presence-im-091015103222-phpapp02 (20)

IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.
 
OpenStack Swiftの最新機能とStorlets
OpenStack Swiftの最新機能とStorletsOpenStack Swiftの最新機能とStorlets
OpenStack Swiftの最新機能とStorlets
 
Advanced Topics in IP Multicast Deployment
Advanced Topics in IP Multicast DeploymentAdvanced Topics in IP Multicast Deployment
Advanced Topics in IP Multicast Deployment
 
OpenStackユーザ会資料 - Masakari
OpenStackユーザ会資料 - MasakariOpenStackユーザ会資料 - Masakari
OpenStackユーザ会資料 - Masakari
 
Astricon 2010: Scaling Asterisk installations
Astricon 2010: Scaling Asterisk installationsAstricon 2010: Scaling Asterisk installations
Astricon 2010: Scaling Asterisk installations
 
Ironic - Vietnam OpenStack Technical Meetup #12
Ironic - Vietnam OpenStack Technical Meetup #12Ironic - Vietnam OpenStack Technical Meetup #12
Ironic - Vietnam OpenStack Technical Meetup #12
 
Snappy Kamailio
Snappy KamailioSnappy Kamailio
Snappy Kamailio
 
Rome 2017: Building advanced voice assistants and chat bots
Rome 2017: Building advanced voice assistants and chat botsRome 2017: Building advanced voice assistants and chat bots
Rome 2017: Building advanced voice assistants and chat bots
 
S3 Server Hackathon Presented by S3 Server, a Scality Product, Seagate and Ho...
S3 Server Hackathon Presented by S3 Server, a Scality Product, Seagate and Ho...S3 Server Hackathon Presented by S3 Server, a Scality Product, Seagate and Ho...
S3 Server Hackathon Presented by S3 Server, a Scality Product, Seagate and Ho...
 
Hackathon scality holberton seagate 2016 v5
Hackathon scality holberton seagate 2016 v5Hackathon scality holberton seagate 2016 v5
Hackathon scality holberton seagate 2016 v5
 
20110924 kansai kinect_vol1
20110924 kansai kinect_vol120110924 kansai kinect_vol1
20110924 kansai kinect_vol1
 
Mixing reality with mobile AR, Дмитрий Щербина
Mixing reality with mobile AR, Дмитрий ЩербинаMixing reality with mobile AR, Дмитрий Щербина
Mixing reality with mobile AR, Дмитрий Щербина
 
Connected TIZEN
Connected TIZENConnected TIZEN
Connected TIZEN
 
Tizen Connected with IoTivity
Tizen Connected with IoTivityTizen Connected with IoTivity
Tizen Connected with IoTivity
 
Content-Centric Embedded
Content-Centric EmbeddedContent-Centric Embedded
Content-Centric Embedded
 
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
 
Log everything!
Log everything!Log everything!
Log everything!
 
OpenStack Overview and History
OpenStack Overview and HistoryOpenStack Overview and History
OpenStack Overview and History
 
Raspberry pi 3
Raspberry pi 3Raspberry pi 3
Raspberry pi 3
 

Mehr von LLC NewLink

Content Delivery Network
Content Delivery NetworkContent Delivery Network
Content Delivery NetworkLLC NewLink
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640LLC NewLink
 
Video 111127013709-phpapp02
Video 111127013709-phpapp02Video 111127013709-phpapp02
Video 111127013709-phpapp02LLC NewLink
 
Microsoft cloud-services-architecture-1226619291360503-8
Microsoft cloud-services-architecture-1226619291360503-8Microsoft cloud-services-architecture-1226619291360503-8
Microsoft cloud-services-architecture-1226619291360503-8LLC NewLink
 
Cloud computing-1224001671523233-9
Cloud computing-1224001671523233-9Cloud computing-1224001671523233-9
Cloud computing-1224001671523233-9LLC NewLink
 
Carrier ethernet-services-the-future-public-multivendor1976
Carrier ethernet-services-the-future-public-multivendor1976Carrier ethernet-services-the-future-public-multivendor1976
Carrier ethernet-services-the-future-public-multivendor1976LLC NewLink
 
Apc 091016024613-phpapp01
Apc 091016024613-phpapp01Apc 091016024613-phpapp01
Apc 091016024613-phpapp01LLC NewLink
 
Amazonwhitepaper 110511144038-phpapp01
Amazonwhitepaper 110511144038-phpapp01Amazonwhitepaper 110511144038-phpapp01
Amazonwhitepaper 110511144038-phpapp01LLC NewLink
 
2011 06-29- sp-seminar- cisco cdn solution-1
2011 06-29- sp-seminar- cisco cdn solution-12011 06-29- sp-seminar- cisco cdn solution-1
2011 06-29- sp-seminar- cisco cdn solution-1LLC NewLink
 

Mehr von LLC NewLink (12)

Cristmas
CristmasCristmas
Cristmas
 
Newlink
NewlinkNewlink
Newlink
 
Content Delivery Network
Content Delivery NetworkContent Delivery Network
Content Delivery Network
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640
 
Video 111127013709-phpapp02
Video 111127013709-phpapp02Video 111127013709-phpapp02
Video 111127013709-phpapp02
 
Microsoft cloud-services-architecture-1226619291360503-8
Microsoft cloud-services-architecture-1226619291360503-8Microsoft cloud-services-architecture-1226619291360503-8
Microsoft cloud-services-architecture-1226619291360503-8
 
Cloud computing-1224001671523233-9
Cloud computing-1224001671523233-9Cloud computing-1224001671523233-9
Cloud computing-1224001671523233-9
 
Carrier ethernet-services-the-future-public-multivendor1976
Carrier ethernet-services-the-future-public-multivendor1976Carrier ethernet-services-the-future-public-multivendor1976
Carrier ethernet-services-the-future-public-multivendor1976
 
Apc 091016024613-phpapp01
Apc 091016024613-phpapp01Apc 091016024613-phpapp01
Apc 091016024613-phpapp01
 
Amazonwhitepaper 110511144038-phpapp01
Amazonwhitepaper 110511144038-phpapp01Amazonwhitepaper 110511144038-phpapp01
Amazonwhitepaper 110511144038-phpapp01
 
2011 06-29- sp-seminar- cisco cdn solution-1
2011 06-29- sp-seminar- cisco cdn solution-12011 06-29- sp-seminar- cisco cdn solution-1
2011 06-29- sp-seminar- cisco cdn solution-1
 
Newlink
Newlink Newlink
Newlink
 

Kürzlich hochgeladen

Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
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
 
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
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 

Kürzlich hochgeladen (20)

Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
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, ...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
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
 
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
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 

Asterisk presence-im-091015103222-phpapp02

  • 1. Asterisk, Instant Messaging and Presence, how? Saúl Ibarra Corretgé <saghul@gmail.com> http://www.saghul.net http://www.sipdoc.net saghul http://www.irontec.com
  • 2. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? About me ● saghul – VoIP enthusiast, playing around with Asterisk since 2k5 – GNU/Linux lover likes everything “Software Libre” – Co-founder of http://sipdoc.net – Highly involved in spanish VoIP comunities 2
  • 3. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? This presentation ● http://www.saghul.net/blog/downloads/astricon2k9/ ● http://www.slideshare.net/saghul/ – Slides – Complete configuration files – Database example data 3
  • 4. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Index 1. Asterisk and presence status 2. SIP SIMPLE or XMPP? 3. The XMPP solution 1. OpenFire setup 4. The SIMPLE solution 1. Kamailio + Asterisk setup 5. Conclusions 4
  • 5. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? What we do have now ● Asterisk SIP support (chan_sip) – In-dialog MESSAGE :-( – SUBSCRIBE and NOTIFY support ● For Event: dialog ● What about Event: Presence? :-( – No PUBLISH support :-( ● Asterisk XMPP support – res_jabber ● JabberSend, JABBER_RECEIVE, JABBER_STATUS – chan_gtalk, chan_jingle ● Am I missing something? 5
  • 6. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Do we need presence and IM? ● “I want to talk to you, not to your phone” ● Are you available? – For an audio conference? – Just for IM? – For whom? ● Where are you? – Mobile – Office – Home – ... We need to know if a user is available and what his status is 6
  • 7. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? What we need ● A presence server ● Users may publish their status ● Users may subscribe to other users status ● Instant Messaging between users Is it possible only with Asterisk? NO 7
  • 8. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? SIMPLE or XMPP? 8
  • 9. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? SIMPLE vs XMPP ● Did SIMPLE reinvent the wheel? ● Large companies started adopting SIMPLE (Microsoft, …) – Propietary extensions :-( ● XMPP does not provide voice capabilities – Well, there is Jingle... ● If SIP is the VoIP protocol: why not use it also for presence and IM? 9
  • 11. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? The XMPP solution ● Integrate Asterisk with a XMPP server 11
  • 12. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? OpenFire ● Open Source ● Java based ● Multiplatform ● Asterisk integration plugin ● SIP softphone plugin ● Gateways to multiple mi services: MSN, Yahoo, … ● Easy installation! 12
  • 13. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? OpenFire (II) ● Download deb package ● dpkg -i openfire_3.6.4_all.deb 13
  • 14. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? OpenFire (III) ● Web based configuration ● Clustering architecture ● Connection to the Asterisk Manager Interface – Multiple connections ● Mapping between Asterisk SIP users and OpenFire XMPP users ● Multiplatform Java client: Spark ● Flash based web client: SparkWeb 14
  • 15. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? OpenFire (IV) 15
  • 16. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? OpenFire (V) ● When a user is talking OpenFire puts it “On the phone” 16
  • 17. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? OpenFire (VI) 17
  • 18. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? OpenFire (VI) ● What we get – Instant Messaging – Presence – Gateways to other mi services – Text conferencing ● Problems – Duplicated users (we could partially fix it with LDAP) – Need to handle 2 protocols – Not many softphones support SIP and XMPP – Do any hardphones support XMPP? 18
  • 20. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? A complex protocol ● SIMPLE IETF working group – Presence RFCs ● 3856, 3857, 3858, 3863, 4479, 4480, 4482, ... – XCAP ● 4825, 4826, 4827, 5025, … – Instant Messaging ● 3428, 3994, 4975, … SIMPLE is NOT simple! 20
  • 21. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? The SIP solution ● Integrate Asterisk and Kamailio to provide IM and presence. ● Users are registered to Kamailio. ● INVITE requests are routed through the Asterisk server. – Asterisk RealTime user integration with Kamailio's subscriber table. ● PUBLISH, SUBSCRIBE and MESSAGE requests are handled by Kamailio. 21
  • 22. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Registration REGISTER Store location Asterisk does nothing! 22
  • 23. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Kamailio – Asterisk RealTime integration ● Asterisk peers are Kamailio's subscribers. ● MySQL view so that Asterisk 'sees' the users as his own. ● Peers IP → Kamailio IP. ● Calls between users go through Kamailio and Asterisk. ● We need to call to alphanumeric users → DB Alias 23
  • 24. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Kamailio – Asterisk RealTime integration (2) CREATE VIEW sip_peers AS SELECT subscriber.username AS name, subscriber.username AS defaultuser, 'friend' AS type, NULL AS secret, subscriber.domain AS host, concat(subscriber.rpid,' ','<',subscriber.username,'>') AS callerid, 'from-users' AS context, subscriber.username AS mailbox, 'yes' AS nat, 'no' AS qualify, 'info' AS dtmfmode, subscriber.username AS fromuser, 24
  • 25. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Kamailio – Asterisk RealTime integration (3) NULL AS authuser, subscriber.domain AS fromdomain, NULL AS insecure, 'no' AS canreinvite, NULL AS disallow, 'all' AS allow, NULL AS restrictcid, subscriber.domain AS defaultip, subscriber.domain AS ipaddr, subscriber.domain AS outboundproxy, '5060' AS port, NULL AS regseconds FROM kamailio_1.subscriber; 25
  • 26. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Invitation 2. Find numeric Alias 5. Dial to the X- 3. Add X-Subscriber Subscriber user header 1. INVITE Alice (Bob) 4. INVITE (2001) 6. INVITE (Bob) 8. INVITE 7. Lookup Bob (Bob) user location 26
  • 27. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Invitation (2) # Route all INVITE requests to Asterisk if (is_method("INVITE")) { # Remove X-Subscriber header so that no one sees it... remove_hf("X-Subscriber"); # We don't have to route the requests coming FROM Asterisk # back to Asterisk. We would make a loop! if (!($si == "AST_IP" && $sp == "AST_PORT")) { route(ASTERISK_USERS_ROUTE); } } 27
  • 28. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Invitation (3) # Send INVITE requests to the Asterisk server route[ASTERISK_USERS_ROUTE] { # Call to the numeric alias avp_db_query("SELECT alias_username FROM dbaliases WHERE username = '$rU' AND domain = '$avp(AVP_ORIGDOMAIN)'LIMIT 1", "$avp(AVP_NUMALIAS)”); if (is_avp_set("$avp(AVP_NUMALIAS)")) { # Save the subscriber in a header so we can use it in Asterisk append_hf("X-Subscriber: $rUrn"); $rU = $avp(s:numalias); } $rd = "AST_IP"; $rp = "AST_PORT"; route(RELAY_ROUTE); } 28
  • 29. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Invitation (4) [from-users] exten => _X.,1,NoOp() exten => _X.,n,Set(SUBSCRIBER=${SIP_HEADER(X-Subscriber)}) exten => _X.,n,GotoIf($[${LEN(${SUBSCRIBER})} = 0]?hang) exten => _X.,n,Dial(SIP/${SUBSCRIBER}) exten => _X.,n(hang),Hangup 29
  • 30. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? SIMPLE presence 1. SUBSCRIBE (Bob) 2. handle_subscribe Alice 5. NOTIFY 3. PUBLISH 4. handle_publish Asterisk does Bob nothing! 30
  • 31. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? SIMPLE presence (2) # Handle presence requests if(is_method("PUBLISH|SUBSCRIBE")) { route(PRESENCE_ROUTE); } # Handle presence route[PRESENCE_ROUTE] { if (is_method("PUBLISH")) { handle_publish(); t_release(); } else if (is_method("SUBSCRIBE")) { handle_subscribe(); t_release(); } exit; } 31
  • 32. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Messaging 1. MESSAGE (Bob) 2. Lookup location Alice 3. MESSAGE Asterisk does Bob nothing! 32
  • 33. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? NAT handling ● We just need to fix the NAT in signalling. ● Our Asterisk 'peers' are configured with nat=yes – COMEDIA mode – Audio will go through Asterisk 33
  • 34. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Further improvements... 34
  • 35. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Further improvements... (2) What about mixing both? – OpenFire's Asterisk plugin still works! (regardless of the integration with Kamailio) 35
  • 36. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? SIMPLE or XMPP? 36
  • 37. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? Thanks! BYE sip:astricon@astricon.net SIP/2.0 Via: SIP/2.0/UDP guest.astricon.net:5060;branch=z9hG4bKnashds7 Max-Forwards: 70 From: saghul <sip:saghul@sipdoc.net>;tag=8321234356 To: AstriCon <sip:astricon@astricon.net>;tag=9fxced76sl Call-ID: 3848276298220188511@astricon.net CSeq: 1 BYE Content-Length: 0 Thanks for watching! 37
  • 39. AstriCon 2009: Asterisk, Instant Messaging and Presence, how? License http://creativecommons.org/licenses/by-sa/3.0/ All images are property of their respective authors. 39