Applications

Mobile Push notifications

Sylk Pushserver was designed to act as a central dispatcher for mobile push notifications inside RTC provider infrastructures. Both the provider and the mobile application customer, in the case of a shared infrastructure, can easily audit problems related to the processing of push notifications.

Sylk Pushserver

WebRTC conference

This application allows WebRTC enabled browsers to organize ad-hoc video conferences including screen and file sharing. To connect to the server you can use any WebRTC capable web browser like Chrome or Firefox or a standalone application like Sylk WebRTC client.

To develop a web endpoint, you must use sylkrtc.js library.

Sylk Server implements Selective Forwarding Unit (SFU) functionality that uses little resources on the server side allowing for handling much more load than classic MCUs. For scalling up beyond one server AG Projects provides SIP Thor, which provides horizontal scalability for all components present in a RTC platform.

Support media and features: audio/video, file-sharing, chat, screen-sharing, remote speaker and mute control and account-less anonymous join using web link.

The backend is provided by Janus server.

An overview about this application is available here

SIP/WebRTC gateway

This application can be used to bridge one-to-one audio and video calls between SIP clients and WebRTC endpoints. Any SIP service and SIP compatible device can be used for the SIP side. For the Web side, a simple to use JavaScript client API is provided. This application supports transparently any audio/video codec negotiated by the end-points.

See https://webrtc.sipthor.net for a working example.

Screensharing is also supported depending on the web browser capabilities.

SIP/WebRTC Messaging Server

Sylk Server provides online and offline messaging services for standard SIP end-points and WebRTC clients that support SylkRTC API. You can find the details on a separate page.

SIP conference

Sylk Server allows SIP end-points to create ad-hoc conference rooms by sending INVITE with SDP content to a random username at the hostname or domain where the server runs. Other participants can then join by sending an INVITE to the same SIP URI used to create the room. The servers is interoperable with XMPP MUC (see SIP/XMPP gateway section below).

Supported Media

The INVITE and subsequent re-INVITE methods may contain one or more media types supported by the server. Each conference room mixed audio, instant messages and uploded files are dispatched to all participants.

Audio

The INVITE must propose a session with RTP (m=audio in SDP). Re-INVITE to add or remove audio to existing session is supported. Opus, G722, wideband speex and G711 codecs are supported. For encryption, sRTP and ZRTP key exchanges are supported.

Content-Type: application/sdp
Content-Length: 233

v=0
o=- 3526098545 3526098547 IN IP4 81.23.228.139
s=Sylk Server-1.2.3
t=0 0
c=IN IP4 81.23.228.139
m=audio 55324 RTP/AVP 9 101
c=IN IP4 85.17.186.7
a=rtcp:55325
a=rtpmap:9 G722/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:1nDEh/WrJ57RBaHwhBG4+RAwzV9k/HxZhg1wClnx
a=sendrecv
Instant Messaging

The INVITE must propose a session with MSRP chat over TLS (m=message and a=path:msrps in the SDP). Re-INVITE to add or remove chat to existing session is supported. Private messaging extension between participants is also supported.

Content-Type: application/sdp
Content-Length: 213

v=0
o=- 3526098545 3526098547 IN IP4 81.23.228.139
s=Sylk Server-1.2.3
t=0 0
m=message 60167 TCP/TLS/MSRP *
c=IN IP4 81.23.228.139
a=path:msrps://81.23.228.139:60167/f8d1058769bebacacf62;tcp
a=accept-types:message/cpim
a=accept-wrapped-types:*
a=setup:passive
a=chatroom:private-messages
File Transfer

The INVITE must propose a session with MSRP file transfer media description. Re-INVITE to add a file to existing session is supported. Participants that join later can request the previously uploaded files by using MSRP pull method.

Content-Type: application/sdp
Content-Length:   407

v=0
o=- 3526099467 3526099468 IN IP4 81.23.228.139
s=Sylk Server-1.2.3
c=IN IP4 81.23.228.139
t=0 0
m=message 39084 TCP/TLS/MSRP *
a=path:msrps://81.23.228.139:39084/a06af01b810519fb6090;tcp
a=recvonly
a=accept-types:*
a=accept-wrapped-types:*
a=setup:passive
a=file-selector:name:"Blink.pdf" type:application/pdf size:151036 hash:sha1:49:AD:49:...
Screen Sharing

This functionality is implemented as com.ag-projects.screen-sharing extension to the chatroom functionality.

Content-Type: application/sdp
...

m=message 40278 TCP/TLS/MSRP *
a=path:msrps://81.23.228.149:40278/2aa5bbb5d37731ef85c0;tcp
a=accept-types:message/cpim
a=accept-wrapped-types:*
a=setup:passive
a=chatroom:private-messages com.ag-projects.screen-sharing

If the end-point detects and supports this private extension, it can share the screen by pushing at regular intervals a jpeg image with the desktop content over the MSRP chat stream. The image must be encapsulated in a CPIM envelope using content type application/blink-screensharing. Blink SIP client implements this extension.

MSRP eea58af6af1b788 SEND
To-Path: msrps://81.23.228.149:41652/a65812de6f6a0725ee1a;tcp
From-Path: msrps://192.168.1.6:2855/e7028b404511ed77d6a2;tcp
Message-ID: 641f9960ded0638d
Byte-Range: 1-*/245347
Success-Report: yes
Failure-Report: yes
Content-Type: message/cpim

From: Adrian Georgescu <sip:31208005169@ag-projects.com>
To: <sip:nnauyj@conference.sip2sip.info>
DateTime: 2011-12-22T09:12:04+01:00

MIME-Version: 1.0
Content-Type: application/blink-screensharing
ÿØÿàJFIF .............

The server then makes the screenshot available at a HTTP URL and publishes this URL to all participants using the conference information notification using <agp-conf:screen_image_url> extension. Participants can see the screen using a specialized client or a regular web browser.

Conference Information

To obtain the conference information send a SUBSCRIBE request to the room URI for Event conference RFC 4575. The NOTIFY contains detailed information with the list of participants, their connected endpoints, media type and stream status and information about uploaded files.

Content-Type: application/conference-info+xml
Content-Length:   975

<?xml version='1.0' encoding='UTF-8'?>
<conference-info xmlns:agp-conf="urn:ag-projects:xml:ns:conference-info"
    xmlns="urn:ietf:params:xml:ns:conference-info"
    entity="sip:agp@conference.sip2sip.info" state="full">
    <conference-description>
        <display-text>Ad-hoc conference</display-text>
        <free-text>Hosted by Sylk Server-1.2.3</free-text>
        <agp-conf:resources>
            <agp-conf:files>
                <agp-conf:file name="Blink.pdf" hash="sha1:49:AD:49:...."
                size="151036" sender="AG <sip:31208005169@ag-projects.com>" status="OK"/>
            </agp-conf:files>
        </agp-conf:resources>
    </conference-description>
    <host-info>
        <web-page>http://sylkserver.com</web-page>
    </host-info>
    <conference-state>
        <user-count>1</user-count>
        <active>true</active>
    </conference-state>
    <users state="full">
        <user entity="sip:31208005169@ag-projects.com" state="full">
            <display-text>Adrian Georgescu</display-text>
            <agp-conf:screen_image_url>https://81.23.228.146/?image=WfPeNYF195.jpg</agp-conf:screen_image_url>
            <endpoint entity="sip:pbvusniw@95.97.50.27:54325" state="full">
                <display-text>Adrian Georgescu</display-text>
                <status>connected</status>
                    <joining-info>
                        <when>2011-09-27T09:49:05+02:00</when>
                    </joining-info>
                <media id="170092876"><type>message</type></media>
                <media id="2977223756"><type>audio</type></media>
            </endpoint>
        </user>
    </users>
</conference-info>

Participant Management

To add and remove participants, Sylk Server supports INVITE and REFER methods as defined in RFC4579 (Conferencing for User Agents). One can remove or add participants by sending a REFER method to the conference URI.

REFER sip:agp@conference.sip2sip.info SIP/2.0
Via: SIP/2.0/UDP 10.211.55.2:54325;rport;branch=z9hG4bKPj7PFxy8RLtr20jfVyUx2eis1H7.1aY7Np
Max-Forwards: 70
From: "Adrian Georgescu" <sip:31208005169@ag-projects.com>;tag=ZtGlJFOgGvwWQEMae6uTpuhT1aREkQeR
To: <sip:agp@conference.sip2sip.info>
Contact: <sip:pbvusniw@192.168.1.6:54325>
Call-ID: rYp1GQbSQ8kFrC1xccpfA5t9GXaR5qwt
CSeq: 6839 REFER
Event: refer
Accept: message/sipfrag;version=2.0
Allow-Events: conference, message-summary, presence, presence.winfo, xcap-diff, refer
Refer-To: <3333@sip2sip.info>;method=INVITE
Referred-By: sip:31208005169@ag-projects.com
User-Agent: Blink Pro 1.3.1 (MacOSX)
Content-Length:  0

SIP/XMPP gateway

This application implements all relevant standards produced by STOX IETF Working Group that has been chartered to standardise SIP/XMPP protocol interoperability.

Audio, Chat and Presence media are supporeted including the multi-party scenario.

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 server is designed in such way that it requires zero-configuration (except of course for the DNS domains configuration). The domain must be set in xmppgateway.ini configuration file.

For more information see SIP/XMPP gateway documentation

IRC gateway

This application can be used to bridge from SIP and XMPP worlds to IRC conference rooms.

Echo

The echo application can be used to test audio calls, incoming audio is sent back to the caller with a small delay.

Playback

Sylk Server can be set to answer calls for certain addresses, play a wav file and the hangup. Video playback is also supported using H.264 and VP8 codecs.