Blink Cocoa: Blink and Google interoperability

Added by Adrian Georgescu over 9 years ago

Using Blink for Mac with an account under domain is possible to Chat and subscribe to Google users under domain. To create a @sip2sip account select the option Create a free SIP Account in Blink add account dialog.

First, add the address of the Google account (e.g. ) to any Blink contact. Gmail account will receive a notification and subscribe in return to the account. To start a Chat session, right click on the contact and select Invite to Chat... from the contextual menu.

Make sure you upgrade first to the latest Blink version from Mac App Store (currently 2.0.2).

SylkServer: SylkServer 2.3.0 release

Added by Adrian Georgescu over 9 years ago

SylkServer version 2.3.0 has been released with state-of-the-art cross-protocol SIP/XMPP multi-party conferencing capabilities. This is done by bridging MUC functionality from XMPP with MSRP-Switch functionality using SIP.

  • SIP users can create ad-hoc conference rooms using SylkServer MSRP chat and invite users from both SIP and XMPP domains
  • XMPP users can create multiparty conferences using SylkServer MUC capability and invite users from both XMPP and SIP worlds

Normative References


  • Added SIP/XMPP gateway ability to invite participants to a multiparty chat
  • Added support for XEP-0030 (service discovery)
  • Added RTP audio and MSRP chat 'echo' application
  • Added timestamp to generated PIDF documents
  • Improved logging when adding participants to a conference
  • Improved logging for the XMPP gateway application
  • Removed extended-away state handling as it no longer exists in the SDK
  • Made several improvements to XMPP stanza parsing
  • Fixed detecting MSRP Nickname collision
  • Fixed handling presence stanzas without a resource part in the from
  • Fixed translating resource IDs for presence
  • Fixed leaking session objects if session fails while joining a conference
  • Fixed mapping room URI for received REFER requests

The SIP/XMPP multi-party conferencing is documented [[DesignXMPP_conference|here]]

Normative References

See [[DesignXMPP|SIP/XMPP Gateway documentation]]

Installation Instructions


Compatible Clients

The following clients have been successfully tested against this functionality: iChat, Jitsi, PSI, Adium (XMPP) and Blink Cocoa (SIP). Any client following same standards should be able to interoperate.

Zero Configuration

In the good tradition of 'just-works' there is nothing to configure, the functionality is made possible by just using drag in drop in the respective clients.

Live Service domain can be used as a multi-party inter-domain SIP/XMPP bridge. Just create a requested from either SIP or XMPP to .


Work is in progress for adding Jingle audio and File Transfer support.

SIP SIMPLE Client SDK: SIP SIMPLE Client SDK 0.32.0 release

Added by Adrian Georgescu over 9 years ago

This release contains bug fixes.

python-sipsimple (0.32.0) unstable; urgency=low

  • Fixed updating local SDP direction if answer is inactive
  • Fixed test for supported audio codecs
  • Adjusted pres-rules auid to org.openmobilealliance.pres-rules
  • Removed icon alternative location since it was custom and is now unused
  • Use digits only for contact usernames to improve interoperability
  • Disable NAT detection
  • Allow more types to be directly used as configuration data types

sipclients (0.32.0) unstable; urgency=low

  • Removed lxml dependency
  • Raised python-sipsimple version dependency

To upgrade see

SIP2SIP: SIP2SIP Presence functionality launched (2 comments)

Added by Adrian Georgescu over 9 years ago

SIP2SIP has been updated to provide Presence functionality based on SIMPLE Working Group standards (namely RLS and XCAP) and interoperability with XMPP domains.

The functionality is delivered by a Presence Agent collocated with the SIP Proxy/Registrar that handles RLS subscriptions and XCAP server for document storage of contacts and presence rules.

Implemented standards

  • SIP Specific Event Notification (SUBSCRIBE and NOTIFY methods) RFC3265
  • SIP Extension for Event State Publication (PUBLISH method) RFC3903
  • SIP Event Notification Extension for Resource Lists Contact Information Extension to PIDF RFC4482
  • Presence Data Model (PIDF) RFC3863, RFC3379, RFC4479
  • Watcher-info Event Package RFC3857, RFC3858
  • Common Policy RFC4745 and Presence Rules RFC5025 (with support for external references specified by OMA org.openmobilealliance.pres-rules)
  • Resource Lists RFC4826 (with support for external references specified by OMA)
  • RLS Services RFC4826 and RLMI document handling RFC4662
  • PIDF manipulation RFC4827
  • XCAP Protocol RFC4825
  • XCAP Diff RFC5874



  • Any SIP client that implements SIMPLE standards and org.openmobilealliance.pres-rules XCAP auid should work with SIP2SIP accounts
  • Any remote SIP entity, whether client or server from a remote domain that implements SIMPLE standards should interoperate with SIP2SIP service

Note. Mixing different SIP SIMPLE clients under the same account is not desirable due to the XML content that is stored differently by different clients


SIP2SIP provides for SIP addresses under domain transparent interoperability for IM (using SIP MESSAGE method), Chat sessions (using MSRP sessions), Presence and Multiparty conferencing (MUC) with XMPP clients from external domains.

XMMP domains list is currently statically configured and will be extended to any remote domain that is configured for handling XMPP in the DNS.


The XMPP gateway is described in detail here:

Sample XCAP documents

Available software

Presence clients

Blink client has been designed to interoperate with SIP2SIP service. The mechanics of interacting with SIP2SIP is described at:

The versions compatible with SIP2SIP are 2.0.2 (Cocoa version) and 0.3.0 (Qt version).

Presence servers

The functionality currently implemented by SIP2SIP is available in the current pushed to the development trunk of OpenSIPS and OpenXCAP

XMPP interoperability is provided by SylkServer

SIP SIMPLE Client SDK: SIP SIMPLE client SDK 0.31.1 release

Added by Adrian Georgescu over 9 years ago

This release provides bug fixes. One bug caused random high CPU usage, the fix for it is available in the python-eventlib package. Users of Blink Qt and SylkServer on Linux should update these packages to benefit of the bug fixes.

Change Logs

python-sipsimple (0.31.1)

  • Terminate session if a stream fails and can't be removed from the session
  • Removed extended-away state from PIDF extension
  • Fixed setting local hold state after direction was inactive
  • Prevent account's activate/deactivate methods to run at the same time
  • Fixed race conditions when deleting an account
  • Fixed some lintian warnings

sipclients (0.31.1)

  • Fixed variable names in sip-message and sip-audio-session

python-eventlib (0.1.1)

  • Fixed high CPU load caused by improperly handled SSL connections

SIP2SIP: Using your own Internet domain with SIP2SIP infrastructure

Added by Adrian Georgescu almost 10 years ago

You may use your own Internet domain to create SIP accounts by following these instructions:

SylkServer: SylkServer in Mac App Store

Added by Adrian Georgescu almost 10 years ago

With SylkServer installed on any Mac on the same LAN, using Blink client with Bonjour account enabled one can create with just one mouse click multiparty conferences with wideband audio, IM, File Transfer and ScreenSharing.

SylkServer as well as every new room appears in Bonjour Neighborhood. This way anyone can with a single click join a conference. Using drag-and-drop, any Blink contact can be added or removed from the conference.

Blink Cocoa: Blink Presence support

Added by Adrian Georgescu almost 10 years ago

Migrated to


Presence is a complex issue and the mechanisms used internally by Blink may not necessarily work with your own SIP server. These mechanisms are described below.

Live Service

Create a free SIP account in Blink provided by to have all Presence features mentioned operational.

Server Compatibility

Presence is a complex issue and the mechanisms used internally by Blink may not necessarily work under any SIP server environment. This document was written to provide a better understanding of these mechanisms. Presence require proper infrastructure that many SIP service providers simply lack today, so do not complain to us when Presence does not work with your SIP service provider.

OpenSIPS 1.9.0 and OpenXCAP 2.1.0 server software has been tested and is 100% compatible with Blink.

Design Principles

Blink should work with any SIP and XCAP servers that supports all related SIP SIMPLE standards, but only a subset of them are being used. They are described below:

  • Blink relies on a Presence Agent collocated with the SIP Registrar that supports PUBLISH method, RLS subscriptions and XCAP storage
  • Blink uses only TCP or TLS transports for signaling, Presence Agent must use TCP/TLS
  • Presence Agent must support RLS subscriptions and RLMI notifications
  • Presence Agent must support handling of presence rules using org.openmobilealliance.pres-rules XCAP document
  • Presence Agent must support external references from rls-services to resource-lists XCAP documents
  • Presence Agent must support external references from rls-services to org.openmobilealliance.pres-rules XCAP document
  • Presence Agent must support presence and presence.winfo event packages
  • Presence Agent may support xcap-diff event package for XCAP documents replication between clients
  • SIP Registrar may support GRUU
  • XCAP server must support rls-services, resource-lists, xcap-caps, org.openmobilealliance.pres-content, org.openmobilealliance.pres-rules, org.openmobilealliance.xcap-directory
  • XCAP server may support serving the user icon from org.openmobilealliance.pres-content document
  • XCAP server may support pidf-manipulation for offline status

Blink presence payload is based on RPID schema with its extensions for media capabilities and person information

In the GUI, presence has been indicated as 'Availability'.


Blink presence functionality should interoperate without any issues with any other SIP client or SIP server implementing presence as far as the SIP signaling is concerned (PUBLISH, SUBSCRIBE and NOTFY methods). Blink functionality would however not interoperate for contacts storage level with other SIP clients under the same account due to the freedom allowed by the standards in modeling the data used for contacts storage. Blink will preserve contacts related information that it did not create itself in XCAP documents. Unfortunately, we have not found other clients that behave in the same way. Sharing the same XCAP documents with other SIP clients is therefore strongly discouraged.

List of implemented standards

Contacts Storage

Contacts are stored on the XCAP server in the [[XCAP-samples#Resource-lists|resource-lists]] document under a proprietary name space to avoid conflicts with other end-points that might use the same document as there is no common standard way for how to store a rich address book on a server. This means that different SIP user agents from different vendors cannot read or modify this data in a deterministic way. The contacts in the address-book document are then used by [[XCAP-samples#RLS-services|rls-services]] and [[XCAP-samples#Presence-rules|pres-rules]] XCAP documents standardized by OMA. Each contacts have two presence related properties that can changed in Edit Contact Panel Subscriptions section:

  • Subscribe to Contact's Availability Information
  • Allow Contact to see my Availability Information

If a SIP URI part of the Contact is labelled as XMPP, when using a account, new session requests will be automatically forwarded to the XMPP domain using the built-in SIP to XMPP gateway provided by SIP2SIP service.

Subscribe To Presence

Using SIP SUBSCRIBE for RLS, Bink subscribes to the SIP addresses stored in rls-services document user+presence@domain service URI uploaded on the XCAP server by contacts management actions in the GUI (add/update/delete contacts).

Policy Management

Policy is used to express user preference about whether somebody that subscribed to our presence information is entitled to receive such information or not.

Using SUBSCRIBE for presence.winfo event package, Blink keeps track of watchers subscribed to our presence.

  • New watchers that subscribed to our presence are rendered in the 'New Contact Requests' group that is rendered on top of the contacts list
  • Right clicking on a new request entry, provides a contextual menu to block or add the contacts to the contacts list
  • Dragging the request entry to an existing contact will merge the address of the request entry with the destination contact
  • Blocked contacts are displayed in the Blocked group
  • Active watchers are shown in system menu Blink -> Subscribers for My Availability

Published Presence

Blink user can publish a status and a note. Sometimes, Blink itself can change the status automatically, in situations when we do not perform any computer activity for a longer period or we start a phone call.

Presence status can be changed manually from the main GUI window and Status menu. Last combination of Presence state and note are saved in the history build at the end of the menu.

Status and note are automatically synchronized between multiple Blink instances under the same account.

Using PUBLISH method for the presence event package, the following information is published in a [[XCAP-samples#PIDF|PIDF]] document by Blink:

  • Basic Status: Open or closed
  • Extended Status: Blink uses a proprietary extension for indicating the extented status compatible with XMPP end-points
  • Location: Location is based on CIPID map extension. Location can be disabled per account in Presence section of account preferences. Location is available only for accounts provided by account. The format is a string Country/City.
  • Homepage: A home page can be entered in Presence section of account preferences. Homepage is based on CIPID homepage extension
  • Note: Presence note can be typed in the text area right to own icon in the main GUI window. Note is attached to the service
  • Icon: User own icon is uploaded to XCAP server using OMA pres-content application, replicated among multiple Blink instances and location of icon storage URL on XCAP server is published in the PIDF
  • Offline Presence: In status menu, one can change its presence state and also an offline state when Blink is offline. This is done using pidf-manipulation XCAP application, if supported by the XCAP server
  • Media Capabilities: Type of media supported by the end-point
  • Device Information: The following information is published: Hostname, Time offset, Idle status and GRUU contact address

Presence Notifications

Presence information received from the SIP URIs as RLMI notifications from the RLS server is used to update each contact in the contacts list with:

  • Status icon bar indicating away, busy, extended-away or available status
  • Presence note is rendered on second line, multiple notes and pending authorizations are rotated every 10 seconds
  • Icon is fetched from the icon URL published by the user
  • User icon is retrieved and updated when necessary from URL advertised by user

Selecting Show Presence Information menu item from contextual contact menu show a panel with detailed information, not all information may have been rendered in the GUI.


  • When subscribed to Presence, if information is received, the contextual menu of each contact is updated with the possibility of starting a session to a specific device if the remote server and device uses GRUU.

SylkServer: SylkServer 2.0.0 public release

Added by Adrian Georgescu almost 10 years ago

There is a new release of SylkServer with a new application, SIP/XMPP gateway. By pointing the correspondent DNS records for SIP or XMPP services of a given Internet domain to the address of this gateway, any packet sent to or connection established to the gateway by one of the protocols is transparently translated into the other. The only setting required is the XMPP domain and its DNS entries.

The gateway can translate Presence, Short Messages, Chat Sessions and handle MUC sessions. This means that is possible to make a multi-party conference where SIP and XMPP end-points can join and see the participants list. The functionality is described in detail here [[DesignXMPP|here]]


sylkserver (2.0.0)

  • Added XMPP gateway application
  • Added Bonjour support
  • Added support for MSRP NICKNAME
  • Added ability to map applications by RURI, domain or username
  • Added ability to select desired application with X-Sylk-App header
  • Added ApplicationLogger, in order to prefix each application's log lines
  • Added start/stop methods to applications
  • Added ability to specify more attributes when sending MSRP messages
  • Allow applications to handle the 'presence' event on incoming
  • Patch sipsimple.session to use ServerSession objects
  • Modified ChatStream to send MSRP REPORT chunks manually
  • Made contact_header optional in ServerSession.connect
  • Use received reason when notifyig about REFER request progress


Installation and upgrade instructions are found [[Installation|here]].

Special thanks

The development for SIP/XMPP gateway was sponsored by NLnet


Support for Jingle Audio and File Transfers will be added in a future release.

SIP SIMPLE Client SDK: SIP SIMPLE client SDK 0.30 release

Added by Adrian Georgescu almost 10 years ago

SIP SIMPLE client SDK 0.30 release

There is a new release of SIP SIMPLE client SDK available. Version 0.30 incorporates Presence functionality based on standards from [[SipFeatures#Presence|SIMPLE Working Group]], compatibility with OMA, XMPP interoperability, GRUU (RFC5627), MSRP multiparty conferencing (MSRP switch) and critical bug fixes.


At over 15,000 lines of Python code, Presence is by far the most complex part of the SDK and the reason it took so long to produce. Presence functionality is now incorporated into an easy to use address book that can be used to develop contact-driven Real Time Communication clients without having to deal with the complexity of SIP signaling, XCAP storage and data replication among multiple devices.

SIP SIMPLE client Presence API is simple to use, at minimum one can use Group, Contact and Policy classes each of them with add/delete/update methods and eight notifications in total to manage the address book. Subscribing to Presence for a contact and granting access to our own presence information are boolean that can be set for each contact. Next Blink release will incorporate this functionality.

The API documentation is available at:

XMPP interoperability

Interoperability with XMPP for MUC and Presence payloads allows for the SDK to be used in border applications that interact with both SIP and XMPP protocols. Next SylkServer release will incorporate this functionality.

Change logs

python-sipsimple (0.30.0)

  • Added PUBLISH for presence and dialog events
  • Added SUBSCRIBE using RLS for presence and dialog events
  • Added SUBSCRIBE for presence.winfo and dialog.winfo events
  • Added handing for RLS NOTIFYs for presence and dialog events
  • Added Offline Presence capability using XCAP pidf-manipulation
  • Added Icon Storage using XCAP oma-pres-content
  • Added Presence policy management using XCAP oma-common-policy
  • Added Addressbook with Presence enabled Contacts
  • Added MSRP Switch NICKNAME support
  • Added GRUU support (RFC 5627)
  • Added ability to configure SIP loop detection
  • Refactored XML payloads framework and datatypes
  • Refactored the XCAP manager and its API
  • Refactored contact management into addressbook management
  • Refactored interaction between the account and its handlers
  • Honor Min-Expires header for REGISTER requests
  • Fixed building sipfrag payloads
  • Fixed crash when bogus G722 payload is received
  • Fixed crash on SDP version overflow
  • Fixed removing a stream if a negative response was received
  • Fixed engine failure on bogus incoming REFER requests
  • Fixed crash on RTCP decryption when using SRTP
  • Fixed handling re-INVITEs with empty body
  • Fixed subscribing to conference event from Bonjour account
  • Reply with 200 OK to in-dialog OPTIONS requests
  • Support hostnames in STUN servers list
  • Honor Min-Expires header for REGISTER requests
  • Skip processing bogus NOTIFY requests
  • Adapted to eventlet package rename
  • Raised dependency on msrplib and xcaplib due to API changes

python-xcaplib (1.0.17)

  • Beautify output XML data
  • Implemented a host cache with lifetime tied to the request's lifetime
  • Fixed the green HTTPClient to use host caching
  • Redefined some functions as methods and reorganized code a bit
  • Removed auth argument from XCAPClient and automatically support both
  • Only add username/password to the password manager if they are defined
  • Adapted to eventlet package rename
  • Bumped debian standards version to 3.9.3
  • Raised debian/compat version to 7

python-msrplib (0.15.0)

  • Added support for NICKNAME method
  • Made received chunk handling more flexible
  • Adapted to eventlet package rename
  • Bumped debian standards version to 3.9.3
  • Raised debian/compat version to 7

sipclients (0.30.0)

  • Print account GRUU if available
  • Fixed scripts to match API changes
  • Added ability to set nickname in sip-session
  • Removed obsolete scripts
  • Bumped debian standards version to 3.9.3

python-application (1.4.0)

  • Simplified and made ThreadLocal descriptor faster
  • Added timestamp and datetime properties on notifications
  • Made test more efficient
  • Removed unnecessary methods
  • Removed some old compatibility code
  • Added missing all entry in
  • Changed order or arguments for timer.end() for convenience
  • Added MarkerType metaclass to application.python.types
  • Use MarkerType to define markers
  • Ordered imports alphabetically
  • Do not ignore base exceptions
  • Fixed documentation example
  • Added missing all to
  • Use MarkerType to define the markers used in
  • Moved imports at toplevel
  • Added weakobjectmap implementation
  • Replaced WeakKeyDictionary with newly added weakobjectmap
  • Removed some obsolete backwards compatibility code
  • Removed compatibility with python2.5
  • Replaced some old forms or raising an exception
  • Refactored Boolean data type
  • Use limit instead of locally defined constrain function
  • Be specific when catching exceptions
  • Fixed how we access the class attribute to work with subclassing
  • Added a center attribute to posted notifications

python-gnutls (1.2.4)

  • Fixed compatibility with twisted 11.1.0 for TLSServer as well

python-cjson (

  • Use repr instead of str when encoding floats to preserve full preicision
  • Fixed windows compilation problem introduced in 1.0.5
  • Fixed float write test to work with latest high precision float encoding
  • Fixed some list/dict decoding bugs. Use a state machine for decoding them.
  • Improved decoding speed by using PyString_GET_SIZE instead of strlen
  • Integrate modified 0001-fix-for-CVE-2010-1666 patch from Debian
  • Reworked debian packaging


  • The address book API: source:sipsimple/
  • Presence API: source:"sipsimple/account/"

Software repositories


« Previous 1 ... 5 6 7 8 Next »

Also available in: Atom