SipDeveloperGuide

Version 67 (Adrian Georgescu, 11/17/2009 07:18 pm) → Version 68/215 (Adrian Georgescu, 11/17/2009 07:21 pm)

= Developer Guide =

[[TOC(WikiStart, Sip*, depth=2)]]

The main goal of this library is to provide a simple to use API to create Real Time Communications Applications for Internet real-time communications applications between end-points based on SIP and related protocols. protocol.

== Prerequisites ==

To use SIP SIMPLE client library and the concepts described below you must be familiar with Python programming language and basic SIP call flows from [http://www.tech-invite.com/Ti-sip-CF3665.html RFC 3665]. Understanding of TCP/IP networking in general and real time application development in particular are strongly recommended.

Detailed instructions for installing the library are found [wiki:SipInstallation here].

== Middleware ==

To develop your SIP Application application you should use the event-driven non-blocking Middleware middleware API that is event-driven, non-blocking and hides the complexity and the interactions of the lower level SIP, SDP, RTP, ICE, MSRP, XCAP and related protocols. With a minimal amount of coding you can create a rich client SIP Application application for setting up audio, Instant Messaging, File Transfer instant messaging, file transfer and Desktop Sharing desktop sharing sessions.

* [wiki:SipMiddlewareApi Middleware API] - middleware for developing of SIP Client Applications
* [wiki:SipConfigurationAPI Configuration API] - used for managing the settings used by the Middleware

=== Sample Code ===

The middleware is used by the [wiki:SipTesting Command Line Tools][ command line tools used for [wiki:SipTesting testing the library]. The Command Line Tools command line tools are the best example for how to use the SIP SIMPLE client library.

=== Components ===

If you wish to develop your own middleware or applications while having full control over the underlying protocol layers yourself, you can use the following APIs that provide granular control over their respective components:

* [wiki:SipPresenceApi Presence API] - The API for payloads carried within SIP signaling used for publication, subscription and notifications of SIP events
* [wiki:SipCoreApiDocumentation SIP Core API] - The API for the SIP, RTP, ICE and audio engine (cross platform sound-card abstraction, codecs)
* [wiki:SipMSRPApi MSRP API] - The API for Message Session Relay Protocol (MSRP) and its relay extension
* [wiki:SipXCAPApi XCAP API] - The API for XCAP document manipulation used for storage of buddy lists and presence policy documents

You may use for example the above components API to create a SIP Application server, something the high level middleware was not designed for.

== Network ==

To use a SIP application you need access to a TCP/IP network (e.g. the Internet). The library uses the following ports when active:

|| '''Local port''' || '''Direction''' || '''Remote port''' || '''Protocol''' || '''Description''' || '''Allocation''' || '''Setting''' ||
|| 1xport >1024 || In/Out || Typically 5060 set in DNS|| UDP || [wiki:SipCoreApiDocumentation#Engine SIP over UDP] || At start || Global.sip.udp_port ||
|| 1xport >1024 || In/Out || Typically 5060 set in DNS ||TCP || [wiki:SipCoreApiDocumentation#Engine SIP over TCP] || At start ||Global.sip.tcp_port ||
|| 1xport >1024 || In/Out || Typically 5061 set in DNS ||TCP|| [wiki:SipCoreApiDocumentation#Engine SIP over TLS] || At start || Global.sip.tls_port ||
|| 2xport >1024 || In/Out || Random negotiated in SDP || UDP || [wiki:SipCoreApiDocumentation#RTPTransport RTP/RTCP stream] || Per session || Global.rtp.port_range ||
|| 1xport >1024 || In/Out || Typically 2855 negotiated in SDP || TCP || [wiki:SipMSRPApi#transport.MSRPTransport MSRP stream] || Per session || Global.msrp.local_port ||
|| 1xport >1024 || Out || Typically 443, configured || TCP || [wiki:SipXCAPApi XCAP requests] || Per request|| ||