<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-667708478297191387</id><updated>2011-11-24T04:45:05.005-08:00</updated><category term='mobile'/><category term='GSM'/><category term='SMS'/><category term='Seam'/><category term='Asterisk'/><category term='JMF'/><category term='competition'/><category term='IntelliDesk'/><category term='open source'/><category term='JAIN SIP'/><category term='resource lists'/><category term='Converged Demo'/><category term='Mobicents'/><category term='XCAP'/><category term='gstreamer'/><title type='text'>Mosiuoa Tsietsi - blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thequestforawesomeness.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thequestforawesomeness.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mos</name><uri>http://www.blogger.com/profile/10404356663336936115</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-GAwYahyRC2k/Ts0Dyy3gF6I/AAAAAAAAAFE/Pg6M4B1X9hU/s220/8116_174634390308_537005308_4228361_1841276_n.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-667708478297191387.post-7219829482231384217</id><published>2011-11-23T06:35:00.001-08:00</published><updated>2011-11-23T07:38:14.449-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Mobicents'/><category scheme='http://www.blogger.com/atom/ns#' term='resource lists'/><category scheme='http://www.blogger.com/atom/ns#' term='GSM'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS'/><category scheme='http://www.blogger.com/atom/ns#' term='XCAP'/><title type='text'>An HTTP based Bulk SMS API for Mobicents</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-size: small;"&gt;Recently, I have been working on a Bulk SMS Service implemented within Mobicents that allows external systems to communicate with it via HTTP. The service, in fact, is two services in one. The first service is a network-hosted address book that allows users to manage their own contact lists. For this, the service makes use of the Mobicents XDMS which comes with native XCAP resource list&amp;nbsp; support. The second service is the actual SMS service that receives requests to send SMSes. Each request must specify a list of recipients that can be specified individually or as a group that contains several members. This post describes the version 1.0 of the API that I have created and how it behaves. In a subsequent post, I will be providing details of the actual implementation and how extensions will be factored in for version 1.1.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Basic Structure and Parameters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;All requests are HTTP GET requests. The basic structure of the request that is sent to Mobicents is as follows:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange; font-size: small;"&gt;http://hostname:port/mobicents?username=foo&amp;amp;password=bar&amp;amp;type=[document|group|contact|sms] &amp;amp;op=[add|edit|del|send] [&amp;amp;parameters]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: orange;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;In the above request format, the hostname and port number are those of the Mobicents instance that is running the service. The “mobicents” subpath maps onto the Mobicents HTTP servlet connector that is associated with the service.&lt;br /&gt;The mandatory parameters are:&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;username - The username of the user.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;password - The password of the user.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;type - The type of data that is being managed. Legal values are “document”, “group” and “contact” for managing contact list documents, contact groups and individual contacts respectively, and “sms” for generating functions.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;op - The type of operation that is being attempted. Legal values are “add”, “edit” and “del” for managing contact information, and “send” for sending SMSes.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;Contact List Management&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;A contact list refers to a document that is hosted on a document management server that contains user contact details. An HTTP request from an external system can be made to manage such documents. The structure of the request must accord with the following:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange; font-size: small;"&gt;http://hostname:port/mobicents?username=foo&amp;amp;password=bar&amp;amp;type=document&amp;amp;op=[add|del]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;A contact list document can either be created or deleted. When a new contact list is created, a single contact group named “Ungrouped” is automatically created in the user’s contact list. The add operation is idempotent, meaning multiple executions do not change the state of the document from how it is when it is initially created. The delete operation can be executed on non-empty documents, that is documents that contain contacts in the Ungrouped group or other groups.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Group Management&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;An HTTP request from an external system can be made to modify a contact group that a user has defined. The structure of the request must accord with the following:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=foo&amp;amp;password=bar&amp;amp;type=group&amp;amp;op=[add|edit|del] &amp;amp;group=group [&amp;amp;newgroup=newgroup]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;An group management request is indicated by assigning the value “group” to the type parameter. Contact groups can be added, edited and deleted. It is assumed that each contact group has a name and consists of zero or more contacts. There is an additional parameter that can be specified when the name of an existing group is being edited:&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;newgroup - The new name being allocated to an existing group.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;Next, some examples are given of how these requests should be structured for given operations.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;To create a new contact group called Friends, the following request is issued:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;&amp;amp;password=1234$&amp;amp;type=group&amp;amp;op=add&amp;amp;group=Friends&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;To change the name of the contact group called Friends to Close Friends, the following request is issued:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;&amp;amp;password=1234$&amp;amp;type=group&amp;amp;op=edit&amp;amp;group=Friends&amp;amp;newgroup=Close%20Friends&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;To delete the contact group named Friends, the following request is issued:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;&amp;amp;password=1234$&amp;amp;type=group&amp;amp;op=del&amp;amp;group=Friends&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Contact Management&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;&lt;/span&gt;An HTTP request from an external system can be made to modify the details pertaining to a given contact. The structure of the request must accord with the following:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=foo&amp;amp;password=bar&amp;amp;type=contact&amp;amp;op=[add|edit|del]&amp;amp;name=name&amp;amp;number=number [&amp;amp;parameters]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;Contacts can be added, edited, deleted and removed from a group or multiple groups. In addition to the general mandatory parameters listed previously, contact management requests must specify a name and a contact number since these parameters identify a contact uniquely. There are other parameters that can be specified depending on the type of operation that is being attempted.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;group - The group name that a contact currently belongs to, is to be inserted into or is to be removed from.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;newname - The new name to be allocated to an existing contact.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;newnumber - The new contact number to be allocated to an existing contact.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;Next, some examples are given of how these requests should be structured for given operations.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;To add a new contact named John Doe with mobile number 0786346927, the following request is issued:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=mos&amp;amp;password=1234$&amp;amp;type=contact&amp;amp;op=add&amp;amp;name=John%20Doenumber=0786346927&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;In this case a group is not specified, so the contact is allocated to the Ungrouped group in the contact list. To change John Doe’s name to Peter Doe, the following request is issued:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=mos&amp;amp;password=1234$&amp;amp;type=contact&amp;amp;op=edit&amp;amp;name=John%20Doe&amp;amp;number=0786346927&amp;amp;newname=Peter%Doe&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To change John Doe’s mobile number to 0786346920, the following request is issued:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=mos&amp;amp;password=1234$&amp;amp;type=contact&amp;amp;op=edit&amp;amp;name=John%20Doe&amp;amp;number=0786346927&amp;amp;newnumber=0786346920&lt;/span&gt;&lt;br /&gt;&lt;br style="color: orange;" /&gt;To delete John Doe entirely from the contact list, the following request is issued:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;&amp;amp;password=1234$&amp;amp;type=contact&amp;amp;op=del&amp;amp;name=John%20Doe&amp;amp;number=0786346927&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;To add a new contact named Alice Wonderland with mobile number 0786346928 to a contact group called Friends, the following request is issued:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: orange; font-size: small;"&gt;&lt;br /&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: orange; font-size: small;"&gt;&amp;amp;password=1234$&amp;amp;type=contact&amp;amp;op=add&amp;amp;name=Alice%20Wonderland&amp;amp;number=0786346928&amp;amp;group=Friends&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;To remove Alice Wonderland from a contact group called Friends, the following request is issued:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;&amp;amp;password=1234$&amp;amp;type=contact&amp;amp;op=del&amp;amp;name=Alice%20Wonderland&amp;amp;number=0786346928&amp;amp;group=Friends&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;User Profile Management&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;This document does not define any user profile management methods. It is anticipated that version 1.1 of the API document will define and support them.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;SMS Generation&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;An HTTP request from an external system can be made to send an SMS through Mobicents. The structure of the request must accord with the following:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=foo&amp;amp;password=bar&amp;amp;type=sms&amp;amp;op=sendto=nums&amp;amp;group=group&amp;amp;text=text [&amp;amp;report=bool]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;The SMS service has the same mandatory parameters defined is Section previously. It also defines the following parameters:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;to - The number or list of numbers to send the SMS to.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;group - The contact group of list of groups to send the SMS to.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;text - The body of the SMS message.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;report - A boolean flag for SMS delivery reports.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;When sending an SMS, either the to parameter or the group parameter must be specified, or both. If the SMS is intended for multiple recipients, the contact numbers must be separated by the ’+’ character in the to parameter. Likewise, if the SMS is intended for multiple groups, the group names must be separated by the ’+’ parameter in the group parameter. Only the values “true” and “false” are valid for the report parameter. Assigning the value “false” to the report&amp;nbsp; parameter is the same as not setting this parameter in the request at all. Next, some examples are given of how these requests should be structured for given operations.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;To send an SMS to a user with the mobile number 0786346927, the following request is issued:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: orange; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;&amp;amp;password=1234$&amp;amp;type=sms&amp;amp;op=send&amp;amp;to=0786346927&amp;amp;text=This+is+the+text&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;To send an SMS to the numbers 0786346927, 0786346928 and 0786346929, the following request is issued:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: orange; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: orange;"&gt;&amp;amp;password=1234$&amp;amp;type=sms&amp;amp;op=send&amp;amp;to=0786346927+0786346928+0786346929&amp;amp;text=This+is+the+text&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;To send an SMS to the numbers 0786346927, 0786346928 and 0786346929 and request a delivery report, the following request is issued:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: orange; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;span style="color: orange; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;amp;password=1234$&amp;amp;type=sms&amp;amp;op=send&amp;amp;to=0786346927+0786346928+0786346929&amp;amp;text=This+is+the+text&amp;amp;report=true&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;To send an SMS to a contact group called Friends, the following request is issued:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=mos&amp;amp;password=1234$&amp;amp;type=sms&amp;amp;op=send&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;To send an SMS to the mobile numbers 0786346927, 0786346928 and 0786346929 in addition to a contact group called Friends, the following request is issued:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: orange; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;span style="color: orange; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;amp;password=1234$&amp;amp;type=sms&amp;amp;op=send&amp;amp;to=0786346927+0786346928+0786346929&amp;amp;group=Friends&amp;amp;text=This+is+the+text&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;In such cases, Mobicents is responsible for ensuring that an SMS is not sent more than once to a group contact that is already explicitly listed in the to parameter.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt; To send an SMS to the groups Friends, Close Friends and Family, the following request is issued:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: orange; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;mos&lt;/span&gt;&lt;/span&gt;&lt;span style="color: orange; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;amp;password=1234$&amp;amp;type=sms&amp;amp;op=send&amp;amp;groups=Friends+Close%20Friends+Family&amp;amp;text=This+is+the+text&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;Error Conditions&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;There are a number of operations that can lead to error conditions. They are gracefully handled by Mobicents. Mobicents defines exceptions that are thrown when the processing of a request can lead to an error condition.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Too Few Parameters&lt;/b&gt; - This error condition arises when the request that is received is missing one or more of the mandatory parameters that have been defined &lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;previously&lt;/span&gt;&lt;/span&gt;. In response to this, Mobicents will send an HTTP response back to the requesting system with the following message: “&lt;b&gt;HTTP Error 432: Missing Mandatory Parameter in the request - Check API manual&lt;/b&gt;”. For example, the following request will generate such a response:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: orange; font-size: small;"&gt;http://hostname:port/mobicents?password=bar&amp;amp;type=contact&amp;amp;op=add&amp;amp;name=name&amp;amp;number=number&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Parameter missing a value &lt;/b&gt;- This error condition arises when the request that is received is missing a value for any parameter that is specified in the request. In response to this, Mobicents will send an HTTP response back to the requesting system with the following message: “&lt;b&gt;HTTP Error 433: Malformed URL - Missing Parameter Value - Check API manual&lt;/b&gt;”. For example,&lt;br /&gt;the following request will generate such a response:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;span style="font-size: small;"&gt;http://hostname:port/mobicents?username=foo&amp;amp;password=bar&amp;amp;type=&amp;amp;op=add &amp;amp;name=name&amp;amp;number=number&amp;amp;group=Friends&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;b&gt;Unknown Parameter&lt;/b&gt; - This error condition arises when the request specifies a value that is not part of the pre-defined values for the service. In response to this, Mobicents will send an HTTP response back to the requesting system with the following message: “&lt;b&gt;HTTP Error 434: Unknown Parameter in the request - Check API manual&lt;/b&gt;”. For example, the following request will generate such a response:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;http://hostname:port/mobicents?username=foo&amp;amp;password=bar&amp;amp;type=sms&amp;amp;op=send&amp;amp;group=Friends&amp;amp;text=This+is+the+text&amp;amp;ussd=true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;b&gt;Invalid Request&lt;/b&gt; - This error condition arises in a number of different cases where the request is not formatted correctly for the type of operation that is being attempted. A request that violates any of the following rules fits into this category:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;When creating a document, the only legal operations are add, edit and delete.&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;When adding a new group, the group name must be specified.&lt;/li&gt;&lt;li&gt;When editing a group, both an existing group name and new group name must be specified.&lt;/li&gt;&lt;li&gt;When deleting a group, the group name must be specified.&lt;/li&gt;&lt;li&gt;When adding a new contact, both the name and the contact number must be specified.&lt;/li&gt;&lt;li&gt;When editing a contact’s name, both the existing name and new name must be specified.&lt;/li&gt;&lt;li&gt;When editing a contact’s number, both the existing number and the new number must be specified.&lt;/li&gt;&lt;li&gt;When deleting a contact, both the name and the contact number must be specified.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;In response to any of these conditions, Mobicents will send an HTTP response back to the requesting system with the following message: “&lt;b&gt;HTTP Error 435: Illegal operation - Check API manual regarding: [error message]&lt;/b&gt;”.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/667708478297191387-7219829482231384217?l=thequestforawesomeness.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thequestforawesomeness.blogspot.com/feeds/7219829482231384217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=667708478297191387&amp;postID=7219829482231384217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/7219829482231384217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/7219829482231384217'/><link rel='alternate' type='text/html' href='http://thequestforawesomeness.blogspot.com/2011/11/http-based-bulk-sms-api-for-mobicents.html' title='An HTTP based Bulk SMS API for Mobicents'/><author><name>Mos</name><uri>http://www.blogger.com/profile/10404356663336936115</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-GAwYahyRC2k/Ts0Dyy3gF6I/AAAAAAAAAFE/Pg6M4B1X9hU/s220/8116_174634390308_537005308_4228361_1841276_n.jpg'/></author><thr:total>0</thr:total><georss:featurename>Grahamstown 6139, South Africa</georss:featurename><georss:point>-33.310159432712624 26.531982421875</georss:point><georss:box>-33.32342943271262 26.512241421875 -33.296889432712625 26.551723421875</georss:box></entry><entry><id>tag:blogger.com,1999:blog-667708478297191387.post-3542313265477502863</id><published>2011-06-06T00:21:00.000-07:00</published><updated>2011-06-06T00:21:21.602-07:00</updated><title type='text'>Creating a Hello World SLEE application (Ubuntu version)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;The development of a SLEE application, though not extremely complex, can be a bit tedious when it comes to creating the directory structure and XML file descriptors. To assist SLEE developers, the Mobicents core team has created tools for the development of SLEE applications in the Eclipse Java IDE. Tutorials do exist already on the Internet and there are a few blog posts that describe the process. This tutorial is essentially a copy of those, but specifically customised for the Ubuntu environment and the Helios version of Eclipse. [&lt;a href="http://hezekiah.rucus.net/docs/manuals/SLEE/HelloWorld/Hello_SLEE_World.pdf"&gt;download&lt;/a&gt;]&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/667708478297191387-3542313265477502863?l=thequestforawesomeness.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thequestforawesomeness.blogspot.com/feeds/3542313265477502863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=667708478297191387&amp;postID=3542313265477502863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/3542313265477502863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/3542313265477502863'/><link rel='alternate' type='text/html' href='http://thequestforawesomeness.blogspot.com/2011/06/creating-hello-world-slee-application.html' title='Creating a Hello World SLEE application (Ubuntu version)'/><author><name>Mos</name><uri>http://www.blogger.com/profile/10404356663336936115</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-GAwYahyRC2k/Ts0Dyy3gF6I/AAAAAAAAAFE/Pg6M4B1X9hU/s220/8116_174634390308_537005308_4228361_1841276_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667708478297191387.post-8854816020103598930</id><published>2010-08-23T08:55:00.000-07:00</published><updated>2010-08-23T08:55:42.855-07:00</updated><title type='text'>Thesis Abstract - Take One</title><content type='html'>Normally, you don't write the Abstract until you have actually done the thesis. Go figure. But I have decided to give it a jab and put something down for the time-being. Obviously, I will be returning every now and again to shape it up, but this is what I have in mind for now:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Abstract --&lt;/i&gt; The next generation network (NGN), as specified by the International Telecommunication Union (ITU), seeks to guarantee that the network of the future will provide users of telecommunication systems with seamless access across disparate networks, to the applications and services they need and use in everyday life. The IP Multimedia Subsystem (IMS) as defined by standards bodies such as the 3GPP (3rd Generation Partnership Project), ETSI (European Telecommunication Standards Institute) and others, is an important part of the NGN, particularly from the perspective of providing the services architecture that executes and delivers services based on user requests. The decomposition of these services into their constituent parts provides IMS engineers with the advantage of code re-usability and a more flexible platform upon which to develop complex services. Work in this area has led to the definition (outside of the standards) of a service capability interaction manager (SCIM) and a service broker which are responsible for handling the interactions between service components and managing access and third party exposure to these components respectively. The aim of the work related in this thesis has been to investigate in detail the service architecture of the IMS and to identify and validate the shortcomings, if any, of the current architecture for the delivery of complex services through service orchestration. The work applies only to the composition of services that are hosted on SIP (Session Initiation Protocol) application servers which is one of the three target environments specified by IMS. In agreement with related work, this thesis finds that the current architecture is not fully supportive of these functions without some extra interventions. A novel architecture that extends the currently proposed model is subsequently presented using the Mobicents platform which is based on the JAIN SLEE standard that, unlike related work, re-uses existing IMS standards and mechanisms and is compared and contrasted with contemporary designs such as Parlay X, GSMA One API and OMA NGSI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/667708478297191387-8854816020103598930?l=thequestforawesomeness.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thequestforawesomeness.blogspot.com/feeds/8854816020103598930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=667708478297191387&amp;postID=8854816020103598930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/8854816020103598930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/8854816020103598930'/><link rel='alternate' type='text/html' href='http://thequestforawesomeness.blogspot.com/2010/08/thesis-abstract-take-one.html' title='Thesis Abstract - Take One'/><author><name>Mos</name><uri>http://www.blogger.com/profile/10404356663336936115</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-GAwYahyRC2k/Ts0Dyy3gF6I/AAAAAAAAAFE/Pg6M4B1X9hU/s220/8116_174634390308_537005308_4228361_1841276_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667708478297191387.post-8916061125959317673</id><published>2010-08-15T10:49:00.000-07:00</published><updated>2010-08-16T01:40:28.263-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='competition'/><category scheme='http://www.blogger.com/atom/ns#' term='Asterisk'/><category scheme='http://www.blogger.com/atom/ns#' term='IntelliDesk'/><title type='text'>Innovation Awards - IntelliDesk CRM System based on Open Source Software</title><content type='html'>Summary-- &lt;i&gt;The Technology Innovation Agency (TIA) in South Africa is an agency of the Department of Science and Technology that seeks to support young innovators in scarce-skills disciplines such as natural sciences, engineering and information technology. A bi-annual competition is held at all the tertiary institutions where independent panels choose three of the best proposals in each institution. Successful competitors are then sent to a two-day crash course where they are taught the basics of how to write a business proposal and are mentored by experts in business administration. In the last stage of the competition, the national stage, the innovators must compete against others for the chance to win ZAR 300,000 (USD 41,000) as the winners of the National Innovation Competition.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Two of my colleagues and I entered the competition late in 2009 with two hopeful business proposals. One proposal was for a "Mobile Trainer" that combines an application that interfaces with a mobile phone's GPS and accelerometer to track the training progress of an athlete. The information that is generated would also be posted onto a website and help create an online community that provides support and comparative statistics to help novice or recreational athletes.&lt;br /&gt;&lt;br /&gt;The second proposal that we came up with was "IntelliDesk" which is the proposal that would end up earning us second position in the first round of the competition. IntelliDesk is a telephony-enabled, web-integrated customer relationship management software that is based on open source software that generalises to many business cases. The basic idea is to create an online master database that stores customer profiles. The main way this database is created is through a person interacting with a website that allows them to store information about themselves and also to determine which business entities are allowed to have access to their information.&lt;br /&gt;&lt;br /&gt;A local installation of IntelliDesk is setup at the premises of our customers that allows them to download and store user profile information and match these details against the callerid (or sms) of a calling user. The information is put up on a web interface so that the agent at the business side can briefly scan through the information before answering the call. This information is important in dealing better with the user and helps the agent offer a customised service to their clients.&lt;br /&gt;&lt;br /&gt;In South Africa, and indeed in other parts of the world, such systems already exist. However, more often than not, these are in-house systems that are installed at call centres or restaurants that serve the interests of that business only. What IntelliDesk offers is a general purpose interface to user profiles that can be utilised by several businesses so that the user does not need to create a 'presence' at each conceivable call centre or restaurant, but one set of information can be shared across many businesses and the power is in the hand of the user who dictates who can access and who cannot access their information.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;The System&lt;/b&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TOHxG3OlWy8/TGgkOMklBwI/AAAAAAAAACI/Pg1yjErURV0/s1600/Poster-lowband.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_TOHxG3OlWy8/TGgkOMklBwI/AAAAAAAAACI/Pg1yjErURV0/s320/Poster-lowband.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Poster depicting IntelliDesk architecture for the national competition&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;IntelliDesk is built from open source software. The telephony portion is handled by Asterisk, an open source PBX. The website is hosted on an Apache web server and PHP files are used as a scripting language for both Apache and Asterisk (through Asterisk AGI support).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Photos of national trials&lt;/b&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TOHxG3OlWy8/TGglNp8DvWI/AAAAAAAAACQ/XI1wzTbDfok/s1600/04082010613.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_TOHxG3OlWy8/TGglNp8DvWI/AAAAAAAAACQ/XI1wzTbDfok/s320/04082010613.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The venue for the national competition taken from the taxi (Moses Mabidha stadium, one of the World Cup stadiums)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TOHxG3OlWy8/TGglw2UfCoI/AAAAAAAAACY/OfkwQRVeN6g/s1600/05082010625.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_TOHxG3OlWy8/TGglw2UfCoI/AAAAAAAAACY/OfkwQRVeN6g/s320/05082010625.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The IntelliDesk setup: Asterisk interface on laptop, two wifi phones, a wifi AP and an analogue phone connected to the Asterisk server (behind the white box) with a Digum card installed&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TOHxG3OlWy8/TGgmKSuahwI/AAAAAAAAACg/bSdBXPD1yV8/s1600/05082010629.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_TOHxG3OlWy8/TGgmKSuahwI/AAAAAAAAACg/bSdBXPD1yV8/s320/05082010629.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;I was basically the eye-candy for our demo stall&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TOHxG3OlWy8/TGgmgA43q8I/AAAAAAAAACo/GEqXG7D1iyA/s1600/05082010640.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_TOHxG3OlWy8/TGgmgA43q8I/AAAAAAAAACo/GEqXG7D1iyA/s320/05082010640.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fred and Z showing someone how the system works&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TOHxG3OlWy8/TGgmxFJaGPI/AAAAAAAAACw/oHbhQ9edvmI/s1600/05082010643.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_TOHxG3OlWy8/TGgmxFJaGPI/AAAAAAAAACw/oHbhQ9edvmI/s320/05082010643.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fred (right) showing the Director General of Science and Technology (left) and the chairperson of the Technology Innovation Agency (middle) how the system works&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TOHxG3OlWy8/TGgnA3V0_7I/AAAAAAAAAC4/H5xIqCPSPpg/s1600/05082010647.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_TOHxG3OlWy8/TGgnA3V0_7I/AAAAAAAAAC4/H5xIqCPSPpg/s320/05082010647.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Our consolation prize for not winning the competition&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/667708478297191387-8916061125959317673?l=thequestforawesomeness.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thequestforawesomeness.blogspot.com/feeds/8916061125959317673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=667708478297191387&amp;postID=8916061125959317673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/8916061125959317673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/8916061125959317673'/><link rel='alternate' type='text/html' href='http://thequestforawesomeness.blogspot.com/2010/08/innovation-awards-intellidesk-crm.html' title='Innovation Awards - IntelliDesk CRM System based on Open Source Software'/><author><name>Mos</name><uri>http://www.blogger.com/profile/10404356663336936115</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-GAwYahyRC2k/Ts0Dyy3gF6I/AAAAAAAAAFE/Pg6M4B1X9hU/s220/8116_174634390308_537005308_4228361_1841276_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_TOHxG3OlWy8/TGgkOMklBwI/AAAAAAAAACI/Pg1yjErURV0/s72-c/Poster-lowband.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667708478297191387.post-4465624751628936639</id><published>2010-03-25T10:33:00.001-07:00</published><updated>2011-11-23T23:14:08.223-08:00</updated><title type='text'>Mobicents Based IM Service with outsourced Billing Using Ericsson Charging SDK</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;i&gt;&lt;b&gt;Abstract&lt;/b&gt;&lt;/i&gt; - Mobicents is a Java based platform that implements the JAIN SLEE standard that delivers a wide range of multimedia services for various application domains. It is an umbrella name for a set of enablers that includes presence, media services, sip servlets and diameter, besides a JAIN SLEE server which provides the application execution environment. The power of the platform comes from its focus on enablers that can then be utilised to develop complex services. This is enhanced by its emphasis on open standards such as those that are being standardised by bodies such as the IETF, 3GPP, ETSI TISPAN and ITU. In this example, the Mobicents SIP function will be used along with a diameter stack to implement a relatively simple billing system for billing SIP based instant messages. Mobicents will be used here as a diameter client which communicates with a diameter server in the form of the Ericsson diameter emulator.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Design&lt;/h2&gt;&lt;h3&gt;SIP Portion&lt;/h3&gt;JAIN SLEE is an event based architecture that allows for service development to be based on an hierarchical and priority based model that defines a root service building block (SBB) which is linked to one or more child nodes (child SBBs). When a root SBB registers for certain events, such as SIP events, the SLEE event router delivers those events, either those from external resources such as SIP softphone running on s user's computer, or those that are generated by itself, to that root SBB. The root SBB can then dispatch that event or a new event to one of its children for further processing. The hierarchical design of the SIP based portion of the service is illustrated below:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TOHxG3OlWy8/S6uuEtigiWI/AAAAAAAAABw/aa6JhQsZCSg/s1600/blog1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_TOHxG3OlWy8/S6uuEtigiWI/AAAAAAAAABw/aa6JhQsZCSg/s320/blog1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 1. Service Design showing root node and children&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Diameter Portion&lt;/h3&gt;The diameter support in Mobicents is composed of a Diameter stack, a mulitplexer and message validator. The stack is the most important aspect of the diameter infrastructure as the stack provides the mechanisms necessary for message sending and receiving, peer management and session management. The multiplexer allows multiple applications to share a single diameter instance. Lastly, the message validator validates the messages that are sent or received to ensure that they are formatted appropriately. The Mobicents Diameter environment is summarised in the figure below:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TOHxG3OlWy8/S6uzM2Xf-AI/AAAAAAAAAB4/-B_KWNKHAac/s1600/blog2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_TOHxG3OlWy8/S6uzM2Xf-AI/AAAAAAAAAB4/-B_KWNKHAac/s320/blog2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 2. Mobicents Diameter environment. Source: [1]&lt;/div&gt;&lt;h3&gt;Ericsson Diameter Emulator&lt;/h3&gt;The third piece of the puzzle consists of the Ericsson emulator which is a java based implemenation of the diameter protocol.&amp;nbsp; The emulator is designed to behave in a similar manner to Ericsson's PPS 3.6 system which is a prepaid commercial system developed by Ericsson. Any system which interacts with the emulator properly is guaranteed to work with the commercial version. Ericsson also released an SDK which exposes an API for programmers to use in order to develop Diameter clients or servers of their own quickly.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Outline of the system&lt;/h2&gt;With our root SBB and children it is possible to locate user's locations and use the SIP proxy to send messages to SIP endpoints. The Diameter function can be used to implement a Diameter client for sending Accounting requests and receiving accouting answers. The figure below gives an outline of the desired system:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TOHxG3OlWy8/S6vAGlkhzYI/AAAAAAAAACA/y-EV3-yK_N8/s1600/Diagram1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_TOHxG3OlWy8/S6vAGlkhzYI/AAAAAAAAACA/y-EV3-yK_N8/s320/Diagram1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 3. Outline of the system showing main entities.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;The system in action&lt;/h2&gt;&lt;b&gt;Step 1&lt;/b&gt;: We register two SIP clients to the Mobicents SIP Registrar.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2&lt;/b&gt;: Using one SIP client, we send a SIP instant message (MESSAGE) to the second SIP client, indicating the caller's URI&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3&lt;/b&gt;: The SIP MESSAGE is intercepted by the root SBB as configured. The root SBB extracts the callee's SIP URI from the FromHeader in the SIP message and sends a Diameter Accounting Request (ACR) to the Diameter server, inducating the user's MISDN and the service details which will be matched against a tarriff database on the Diameter server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4&lt;/b&gt;: The Diameter server receives the ACA and examines the request. If all is well, the server will respond with an Accounting Answer (ACA) with a 2001 response code (DIAMETER_SUCCESS) to the root SBB. Otherwise, the server may send an error message or a negative 4241 response code (INSUFFICIENT_BALANCE).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5&lt;/b&gt;: At the root SBB, the Diameter response is examined. If the result is positive, the root SBB attaches the SIP proxy so that the message can be sent to the callee. If a negative response is received, a SIP message is routed back to the caller indicating the nature of the error.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;br /&gt;Mobicents, as a heterogeneous services platform, allows developers to build services based on technology enablers that can be deployed independently or in concert with each other to provide complex services. The emphasis on open source and open standards allows for ease of use and interoperability with other implementations, which makes it easy to tie into existing solutions a customer may already have. The example described here is not complex, but shows what can be done when enablers are pooled together to build intersting services.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/667708478297191387-4465624751628936639?l=thequestforawesomeness.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thequestforawesomeness.blogspot.com/feeds/4465624751628936639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=667708478297191387&amp;postID=4465624751628936639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/4465624751628936639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/4465624751628936639'/><link rel='alternate' type='text/html' href='http://thequestforawesomeness.blogspot.com/2010/03/mobicents-based-im-service-with.html' title='Mobicents Based IM Service with outsourced Billing Using Ericsson Charging SDK'/><author><name>Mos</name><uri>http://www.blogger.com/profile/10404356663336936115</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-GAwYahyRC2k/Ts0Dyy3gF6I/AAAAAAAAAFE/Pg6M4B1X9hU/s220/8116_174634390308_537005308_4228361_1841276_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_TOHxG3OlWy8/S6uuEtigiWI/AAAAAAAAABw/aa6JhQsZCSg/s72-c/blog1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667708478297191387.post-8202216099142396394</id><published>2009-11-24T07:29:00.000-08:00</published><updated>2009-11-24T07:29:53.690-08:00</updated><title type='text'>Enablers and SCIMs for IMS</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;b&gt;Services architecture in NGNs &lt;/b&gt;&lt;br /&gt;&lt;/div&gt;With the advent of realtime Internet applications especially in the mobile domain and the proliferation of social networking platforms like Facebook, MySpace and Skype, operators are finding themselves in difficult terrain. Not only have revenues decreased from voice calls and text messages due to VOIP and chat services, but now their networks are being degraded to the status of "bit pipes" for access third party services. These services are normally free or are being offered for a nominal prices, and thus their popularity. Thus operators have to come up with advanced services to entice customers to stay within their "walled gardens".&lt;br /&gt;&lt;br /&gt;Next generation networks that are now be rolled out by the majority of operators in Europe and America such as the IMS are three tiered architectures separating the access, control and application layers (ASs), with services being deployed through application servers located in the upper layer. Criteria known as initial filter criteria (iFC) are used by the Service Call Session Control Function (S-CSCF) in conjunction with user profile information obtained from the Home Subscriber Server (HSS) to direct user requests to the targeted AS. This type of interaction is summarised in the diagram below:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TOHxG3OlWy8/SwuNdwgw7SI/AAAAAAAAAA0/wRjYUoHGYAQ/s1600/User+Services+in+IMS.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_TOHxG3OlWy8/SwuNdwgw7SI/AAAAAAAAAA0/wRjYUoHGYAQ/s320/User+Services+in+IMS.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Sh is the Diameter protocol&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;ISC is SIP&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Cx is Diameter protocol&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Ut is XCAP &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Towards enablers for NGNs&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;/div&gt;This monolithic way of service provisioning in the IMS works for some cases, but is based on predictable rules and does not cater for dynamic conditions such as date and time or some result that can only be determined at runtime, that may be interesting to incorporate in the service model.&lt;br /&gt;&lt;br /&gt;Organisations such as the Open Mobile Alliance (OMA) and the 3rd Generation Partnership Project (3GPP) are also radically changing the way in which services are being developed in such networks. These organisations are defining and standardising basic technologies that exist in the network and can be re-used among several different applications. These are called service enablers by the OMA and service capabilities by the 3GPP. We will call them enablers here for simplicity. Examples of enablers include presence, conferencing and instant messaging.&lt;br /&gt;&lt;br /&gt;This move will eliminate redundancy in the application domain and will make the development of services quicker and easier. Developers will no longer need to have intimate understanding for example of the SIP Presence specification, but will simply need to use easy APIs exposed by the presence enabler to manipulate presence information. Not only this, but the use of enablers can also help operators provide complex and interesting services such as multi-player gaming and multi-party multimedia conferencing by pooling the enablers together to provide such services.&lt;br /&gt;&lt;br /&gt;In order to provide complex service, some node in the network is required which is able to handle the interaction between and dynamic interleaving of these enablers. A special group in the 3GPP was setup that would investigate the architecture of such a node. The name service broker (SB) or service capability interaction manager (SCIM) was given to this node. It was suggested that the SCIM would sit between the ASs and the S-CSCF. The figure below shows the modified services architecture of the IMS, with the SCIM included.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TOHxG3OlWy8/SwuVIK9y5-I/AAAAAAAAAA8/0V1_8zAoFI4/s1600/ServiceArchitecture.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_TOHxG3OlWy8/SwuVIK9y5-I/AAAAAAAAAA8/0V1_8zAoFI4/s320/ServiceArchitecture.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;1. ISC interface (SIP) is used between the SCIM and the S-CSCF&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;2. ISC interface is used between the SCIM and the ASs&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;3. The ISC interface is used between different SCIMs in the network&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;In general, the SCIM must be able to perform service interaction management through interaction logic that tells it how to coordinate between different enablers and which enablers to invoke and at what time. As yet, there is no technical specification that details the exact operation of this node, and so there is a need for experimentation in this area.&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/667708478297191387-8202216099142396394?l=thequestforawesomeness.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thequestforawesomeness.blogspot.com/feeds/8202216099142396394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=667708478297191387&amp;postID=8202216099142396394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/8202216099142396394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/8202216099142396394'/><link rel='alternate' type='text/html' href='http://thequestforawesomeness.blogspot.com/2009/11/enablers-and-scims-for-ims.html' title='Enablers and SCIMs for IMS'/><author><name>Mos</name><uri>http://www.blogger.com/profile/10404356663336936115</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-GAwYahyRC2k/Ts0Dyy3gF6I/AAAAAAAAAFE/Pg6M4B1X9hU/s220/8116_174634390308_537005308_4228361_1841276_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TOHxG3OlWy8/SwuNdwgw7SI/AAAAAAAAAA0/wRjYUoHGYAQ/s72-c/User+Services+in+IMS.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667708478297191387.post-4241901577700625722</id><published>2009-11-02T07:05:00.000-08:00</published><updated>2009-12-03T07:52:04.981-08:00</updated><title type='text'>Demo at the DTI Awards in Cape Town - Part 2</title><content type='html'>We have returned two weeks ago from the DTI (Department of Trade and Industry) awards. As I alluded to earlier, Rhodes University was nominated by the THRIP (Technology and Human Resources for Industry) programme under the &lt;b&gt;Research Collaboration&lt;/b&gt; category. Fortunately, we &lt;a href="http://www.thedti.gov.za/invitations/technology_awards_2009.htm"&gt;won&lt;/a&gt;!.&lt;br /&gt;&lt;a class="previewTab" href="javascript:void(0)"&gt;Preview&lt;/a&gt;&lt;br /&gt;We are now releasing the code that we demonstrated at the DTI Technology awards. As you may recall from part 1, we modified the Mobicents Converged Demo that currently allows users to purchase furniture off a SEAM-powered website, to allow users to browse for and purchase videos instead. We put in an added feature that allows users to view the trailers of the movies on their RTSP-enabled SIP phones. As a client, we used a version of the &lt;a href="https://jain-sip-applet-phone.dev.java.net/"&gt;JAIN SIP Applet phone&lt;/a&gt;&amp;nbsp; and added Gstreamer-Java libraries to it, to support RTSP streaming from a Darwin streaming server.&lt;br /&gt;&lt;br /&gt;You can grab the code from my&lt;a href="http://hezekiah.rucus.net/"&gt; site&lt;/a&gt;, which includes the JBOSS server with pre-built binaries, Mobicents Media Server (MMS) sources for the Converged Demo, the modified JAIN SIP Applet phone and some videos to try out.&lt;br /&gt;&lt;br /&gt;In addition to the screenshots we showed last time, we have also put up a video of the program in action. Note that this is work in progress, and we will be updating the service in the coming weeks and months - we have huge plans for it! Firstly, we want to remove Darwin and replace it with MMS RTSP stack [nudge to Jean ;-)]. We also want to add buddy lists and IM abilities. We would also incorporate policies and XCAP support. From there, the sky is the limit.&lt;br /&gt;&lt;br /&gt;Hope folks enjoy it. Cheers!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YvzeYvWtDaI&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/YvzeYvWtDaI&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_TOHxG3OlWy8/SxfdzTdGbCI/AAAAAAAAABE/qOxxOuvUeZE/s1600-h/20102009303.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_TOHxG3OlWy8/SxfdzTdGbCI/AAAAAAAAABE/qOxxOuvUeZE/s320/20102009303.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Setting up at the hotel before the throw down :-)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TOHxG3OlWy8/SxfeDQv_OOI/AAAAAAAAABM/jLmqHoqa5s0/s1600-h/20102009310.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_TOHxG3OlWy8/SxfeDQv_OOI/AAAAAAAAABM/jLmqHoqa5s0/s320/20102009310.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt; The demo is coming together nicely ...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TOHxG3OlWy8/SxfeQBo6PFI/AAAAAAAAABU/lRoHKwda9ZQ/s1600-h/21102009320.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_TOHxG3OlWy8/SxfeQBo6PFI/AAAAAAAAABU/lRoHKwda9ZQ/s320/21102009320.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;The demo and the boys behind it, minus the guy with the cam :-)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TOHxG3OlWy8/SxfecgRAFGI/AAAAAAAAABc/1vYorpEu4u0/s1600-h/22102009339.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_TOHxG3OlWy8/SxfecgRAFGI/AAAAAAAAABc/1vYorpEu4u0/s320/22102009339.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;The award for Research collboration awarded to the COE (Center of Excellence) at Rhodes&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/667708478297191387-4241901577700625722?l=thequestforawesomeness.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thequestforawesomeness.blogspot.com/feeds/4241901577700625722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=667708478297191387&amp;postID=4241901577700625722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/4241901577700625722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/4241901577700625722'/><link rel='alternate' type='text/html' href='http://thequestforawesomeness.blogspot.com/2009/11/demo-at-dti-awards-in-cape-town-part-2.html' title='Demo at the DTI Awards in Cape Town - Part 2'/><author><name>Mos</name><uri>http://www.blogger.com/profile/10404356663336936115</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-GAwYahyRC2k/Ts0Dyy3gF6I/AAAAAAAAAFE/Pg6M4B1X9hU/s220/8116_174634390308_537005308_4228361_1841276_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TOHxG3OlWy8/SxfdzTdGbCI/AAAAAAAAABE/qOxxOuvUeZE/s72-c/20102009303.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667708478297191387.post-2566407561622699896</id><published>2009-10-18T10:28:00.000-07:00</published><updated>2009-10-18T11:47:37.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobicents'/><category scheme='http://www.blogger.com/atom/ns#' term='JAIN SIP'/><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><category scheme='http://www.blogger.com/atom/ns#' term='JMF'/><category scheme='http://www.blogger.com/atom/ns#' term='Seam'/><category scheme='http://www.blogger.com/atom/ns#' term='Converged Demo'/><title type='text'>Demo at the DTI Awards in Cape Town</title><content type='html'>We have been experimenting with the Mobicents platform for a while now and recently our attention was drawn to the Mobicents Converged Demo. As it stands, the demo shows how you can use the JBOSS Seam framework to hook into the SIP functionality in Mobicents to order products off a web page.&lt;br /&gt;&lt;br /&gt;Seam is quite powerful and we saw the potential in the system to do some pretty sweet stuff. We had the idea of using the Converged Demo to allow users to order videos, with the added option of viewing trailers on their devices. Ideally, it would be a community portal, allowing users to subscribe to use the service, define their target devices, and communicate with each other over what they are viewing.&lt;br /&gt;&lt;br /&gt;We are planning on integrating contact lists and presence using SEAM + Mobicents Presence service. The system would be transparent as to whether the user is on their mobile phone or on the website itself, and when users order movies, their buddies in their contact lists would get notified via instant message using SIP, or SMS via SMPP. Obviously, XCAP policies would be used to tweak the rules for this.&lt;br /&gt;&lt;br /&gt;We played around quite a bit with media services, osculating between JMF, Mobicents Media Server (MMS), Darwin streaming server and VLC. We eventually settled on Darwin for streaming, though we are aware that MMS now has an &lt;a href="http://mobicents-media-server.blogspot.com/2009/09/mobicents-rtsp-stack-100bta1-released.html"&gt;RTSP stack out.&lt;/a&gt;&amp;nbsp;As a client, we initially went for the UCT IMS client due to its ability to support SIP reinvites (needed for re-negotiating and asking for an RTSP address) and its RTSP abilities (courtesy of gstreamer).&lt;br /&gt;&lt;br /&gt;UCT IMS is a great piece of software and Open IMS Core is a powerful platform, but for our purposes, it lead to a complex setup. Recently we have scrapped UCT and Open IMS Core, for a straight SIP route. The JAIN SIP Applet phone (for which I am co-project manager) seemed a likely candidate for this, but we had to add some code to make it behave properly. For media, we found that JMF wasn't very reliable with RTSP, so we added gstreamer-java libraries to support this. In addition, we added some code to do the re-invite as well.&lt;br /&gt;&lt;br /&gt;We have some screenshots below that show the system in action. This is still work in progress, and we have a team of only 4 programmers working on it, but we're happy with what we have so far, and will be showing off the system in Cape Town next week at the DTI (Department of Trade and Industry) Awards ceremony, where our department had been nominated for the "Research and Collaboration" category. Wish us luck :-)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TOHxG3OlWy8/SttJUKdRH5I/AAAAAAAAAAM/WIoNzKI7UiU/s1600-h/Screenshot1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_TOHxG3OlWy8/SttJUKdRH5I/AAAAAAAAAAM/WIoNzKI7UiU/s320/Screenshot1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;JAIN SIP Phone registering with Mobicents SIP Server&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;We modified the interface of the JAIN Phone to have a panel that embedded a keypad in addition to a buddy list that it had before. We also added DTMF events (SIP INFO) to the buttons. Above we see the phone registering with Mobicents SIP Server successfully.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_TOHxG3OlWy8/SttMN8PF1SI/AAAAAAAAAAU/-2u13Kosvuo/s1600-h/Screenshot-14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_TOHxG3OlWy8/SttMN8PF1SI/AAAAAAAAAAU/-2u13Kosvuo/s320/Screenshot-14.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;Diagnostic video screen to grab channels from the RTSP server&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;We added a diagnostic panel accessible via the menu that allowed us to statically define channels that are hosted on the RTSP server. We have 8 channels in total, and can switch between them using the combo box. Gstreamer is used here to provide the video ability.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_TOHxG3OlWy8/SttNoG2FX3I/AAAAAAAAAAk/gPGsjaAbxbg/s1600-h/Screenshot-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_TOHxG3OlWy8/SttNoG2FX3I/AAAAAAAAAAk/gPGsjaAbxbg/s320/Screenshot-4.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;One of the videos offered on the system including a synopsis. Notice the View Trailer button ;-)&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Each video has a summary page which is seen above. The user can proceed to add the video to the cart, or to view the trailer first.&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_TOHxG3OlWy8/SttOBfDB9OI/AAAAAAAAAAs/CTBTgY2K_es/s1600-h/Screenshot-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_TOHxG3OlWy8/SttOBfDB9OI/AAAAAAAAAAs/CTBTgY2K_es/s320/Screenshot-6.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;User viewing a trailer on their phone&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Above we see what happens when a user opts to view the movie trailer. An announcement is played prompting the user to press the call button. This event is captured by Mobicents, and an RTSP address is returned to them. We strip the address from the response, and display the movie using gstreamer. As an aside, I liked Brad Pitt in this movie :-)&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;So there we go, the beginnings of something cool we are working on. We will be releasing the product by posting the JBOSS server including binaries as well as the modified Media server to the Mobicents community very soon, after we have cleaned out the code and got some feedback from the demo at the event. Probably next weekend. We're looking forward to sharing something that hopefully will be appreciated by everyone. Cheers!&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/667708478297191387-2566407561622699896?l=thequestforawesomeness.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thequestforawesomeness.blogspot.com/feeds/2566407561622699896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=667708478297191387&amp;postID=2566407561622699896' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/2566407561622699896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667708478297191387/posts/default/2566407561622699896'/><link rel='alternate' type='text/html' href='http://thequestforawesomeness.blogspot.com/2009/10/demo-at-dti-awards-in-cape-town.html' title='Demo at the DTI Awards in Cape Town'/><author><name>Mos</name><uri>http://www.blogger.com/profile/10404356663336936115</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-GAwYahyRC2k/Ts0Dyy3gF6I/AAAAAAAAAFE/Pg6M4B1X9hU/s220/8116_174634390308_537005308_4228361_1841276_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TOHxG3OlWy8/SttJUKdRH5I/AAAAAAAAAAM/WIoNzKI7UiU/s72-c/Screenshot1.png' height='72' width='72'/><thr:total>4</thr:total></entry></feed>
