Abstract
The combined solution of OpenSIPS and OpenXCAP provides today the reference SIP SIMPLE server implementation. Feature rich services are ready to be provided to end-users.
The Workshop will guide you through all the scenarios you can implement by using SIP Services. What you can create, what you can deliver and what you can gain by building SIP Presence-based services.
SIP Presence is not only about delivering presence status. It is about building and delivering real-life service: about XCAP (permissions, rules, control over the presence info), about virtual presence (injecting presence data in your system for sharing information ), about the Buddy Lists, about Resource List Servers (RLS), about XMPP/GTalk integration, about advanced services (BLA/SLA, dialog info).
Presence is already here – following joined testing and interops, OpenSIPS, OpenXCAP and Nokia can deliver complete Presence solutions – Nokia S60 mobile terminals are fully compatible with the OpenSIPs presence agent. Find out more about this cooperation and how you can master presence from your mobile phone.
Additional material
Here you can find all available material for this talk.
PDFs
Audio recordings
Video recordings
Transcript
Bogdan Iancu: My name is Bogdan Iancu I am with the OpenSIPS Project and what I will try to do in the – well, in the plan, in the next planned 45 minutes is to give you some insights about SIP Presence and not generic Presence because you can’t say, okay, yes my mom was using Presence long time ago, but what you do actually with a SIP Presence is because more or less Presence is just – let’s say, kind of transport player for information, a kind of a backbone. So, the idea will be to find out what kind of a cool application you can use in real life based on SIP Presence. I am sorry for how this looks like but seems like my laptop has some problem sizing to the – with the beamer so, it looks a bit strange but will work. So, shortly just to be sure that we are speaking the same language, some overview about the Presence, Presence models and let’s say what are the entities interaction via Presence typically speaking. Then, some very nice extension and examples, I will try to do the presentation with a lot of examples. I also have running some clients on my laptop so I will switch here to a different desktop to show you some, you know, via life changes with Presence and so on. So, I will not use only this presentation, exactly just to get a better view on the matters. So, for all these extension I will briefly share you some examples of how it looks like in real life because you know, theory it’s good, everybody knows the theory but the practice is killing us, it’s killing us. And we have a bunch of extensions also, I will show you exactly for example how to do SIP to XMPP gateway and some short example, very – a nice one. And some new features, it’s okay there are [unintelligible] but still not fully used like resource list server.
So, starting with the overview. First of all it’s really, really, important that more or less Presence is not physical Presence that somewhat we see in front of a PC or whatever. You know, Presence is a way of sharing different kind of information where information can mean information about some devices about some services if it’s services available or not for you. If you have a special status you can publish via Presence for example, let’s say you have a nice client on your mobile phone it can publish even your location information for whoever is interesting and allow you to subscribe. You can use there were some nice examples I worked with Diana before like how you can send – how you can visualize via Presence queues for faxes like, okay what faxes you have pending or pending calls in a queue or something like that. So, you can use it even for publicity to post on some virtual address information about whatever stock about, discounts and so and so. There are lot of things that you can do, it’s not about – okay, I am here I am busy, I am offline and so on.
This is the old Presence model which is not at least shouldn’t be used anymore. It’s so called the end-to-end Presence, the whole idea is the only entity understanding the Presence information actually the client itself. The proxy is just [unintelligible] SIP proxy [unintelligible] without having any kind of understanding on the Presence. So, from it’s perspective, he is just doing SIP routing, that’s it. There are several disadvantages with its approach mainly, I am not – let’s say, not mentioning issues with volume of traffic and so on but by the [unintelligible] that the proxy cannot understand the Presence, it cannot, you know, it cannot interfere, it cannot create services. So, it’s somehow blind about it. All the job is done by the client and you rely only on the client. So, as you can see for when there are end-to-end Presence, each client discuss directly, the discussion is between all the clients, like you have here like three other clients trying to subscribe the Presence of this guy, it will reply to all of them separately. In the – in the new model, the proxy is not anymore a domain entity, we have a present server, present agent in the middle and let’s say, to put it in this way more or less it’s a centralized place for storing Presence. So, everybody is talking to this entity in the middle, there is no more end-to-end the discussion but each entity will discuss only with the Presence agent.
As we can see here the first effect is you have a very low volume of data, because in this case the client is just publishing its Presence – Presence agent server and then the Presence agent server is – it’s job to distribute it further. So, we have less traffic and as you are going to see further, the most important is you can manipulate actually the proxy has access to the Presence information, it is able to manipulate it to change to create new services maybe to inject new Presence and do a lot of crazy things about it. So, automatically you have, you can create a lot of Presence based services directly on the proxy, you don’t need anything special from the client itself. Also, you can do gatewaying because you have access to the – access to the Presence information. So you can easily, let’s say breakthrough to XMPP or whatever other network that have something equivalent to SIP Presence. It’s not necessary anymore to do complicate things. Also, you have centralized storage, like most of the Presence networks have. So you can upload by the list, Presence rules, whatever other information on the server and then you can access it from whatever client you are using. I mean, I have my, let’s say, I have my [unintelligible] at home and I have my ID at the office. I don’t need to synchronizing both devices because all the data will be on the server. So, I can easily, let’s say share between – all these information between the servers, the clients, sorry.
Now what kind of let’s say devices or pieces of short – piece of, pieces of short talk can interact with the present agent. We have the you know the SIP client with the present support typical example. Then even if it sounds strange we can have s SIP line without Presence support and we’re going to see how we can make a trick to get information for such a device. Even interesting you can have a soft client with the Presence support on the mobile phone so you can – the latest S60 software for the Nokia you have, it can, you can do Presence even with the XCAP support on a mobile phone. So, it’s – it’s very handy to have buddy list and all these things directly from your mobile phone. Then you can interact the Presence with whatever external applications, just, I will show you a nice example how to publish weather information via Presence. Also from a web interface something similar like you have on Google Talk, actually in Gmail. Log in on your mail account and then you can have your buddy list to have the Presence of the – for the guys from the buddy list you can change your Presence information so that some Presence interaction on – trick that via web interface. And then of course you can have a bunch of IP gateways through different kind of other system that support Presence.
That, that was a small – the small overview just to like I said be sure that more or less we have the same foundation when it comes to Presence. Now going on to the real interesting part about what you can actually do and I don’t mean just exchanging simple – simple Presence information. For example, we talk about Presence for devices with no Presence support like all devices, I have my huge phone – headphone on my desk. And maybe I want to publish some information at least to know if it’s online, offline. So, right now you have, you have a way to translate this register status into Presence status. So, actually when the phone registers automatically it will be converted in a publish event into an online publish when the device unregisters, it will be published like an offline event. So in that – in this case, if you have a kind of a mixed network with – let’s say a new devices with Presence support and you still want, you still have devices without events of clients, without Presence support. You can enable on your proxy, you can let’s say unify them and to make all of them use Presence. I have a short example, this is a virtual machine where I am using – let me, okay, when I’m using, for example, this user is registered as a normal device. So, it’s a found the soft client which has no Presence support, so, if I – yes. So, right now I will register the client and hopefully I should see him online now. It’s just because I just – because I registered the client I can do the same – back, if I unregister, so right now it’s not registered, I can see the status change. So, it’s a simple way to push let’s say to translate Presence information again from a – I mean to push Presence information with the system form of – found with which has no such support. The whole idea is – was about capturing some events from the register system and to – to push this information to translate it in a kind of a Presence information and push it to the present agent. This kind of translation is limited to online-offline Presence because okay, you do not have too much information, you just – that’s more than enough, I mean you don’t have any kind of sub-status for more or less I wasn’t sure if I have internet connection here so in the slides I took screen shots of exactly what you see – you have seen before. Like, the device is not registered and you see it as offline. And in the second one after registration so you have the registration – the status is registered and well, now you see it online. So, I just put this into the slides to be sure that I have it here. Now, one of the most interesting feature is actually the ability to inject Presence information in the system. And I mean injecting information from let’s say, from devices applications whatever, that have no idea about SIP whatsoever or what means Presence. So I grab some information from somewhere and I just go and I am pushing into the present agent and I can share this information with other people from the system. Secondly, I don’t need a SIP entity to, let’s say to publish this – the Presence information let’s say on half of some entity. I can create any kind of virtual entity, I don’t need the SIP account actually, so I don’t need the user to put his information. I can simply create whatever entity I want and to start publishing this information in it’s behalf. All these things are done on the present agent server so, on the proxy here what we have in open SIP is called the management interface which allows you to run external commands and to interact with the proxy just a short example of how it works you have whatever information source of application providing with the information, it will generate commands to the this management interface, so it will use a command plus the information, this happens inside open SIP so like, more or less you don’t care about this. Anyhow that magically on the other hand, on the other side, you get the notification to whoever is subscribed to the entity, you get the information there.
Just an example, I created – I created on, we have – we have a server running on the open SIP [unintelligible] website and I created weather [unintelligible] at open SIP [unintelligible] again, if you subscribe with Presence to this entity you can actually get weather information related to Bookers. And it’s quite simply on the server it’s running some – some simple cell script which fetch information from Yahoo Weather actually. It’s passing some XMLs and then its pushing the difficult information via Presence into the server. So, I can show you exactly the same in real life here. So, right now there are 17 degrees at half past five local time. So, something like that you can even do in a dynamic way. So you can do for whatever cities you want, you don’t actually need to create account or something like that for this kind of account, I mean, for this kind of to be able to subscribe to such an entity. You can have some script behind in order to do it. Another interesting example for injecting Presence, for example, with – if you subscribe to server load at open SIP [unintelligible] you will get CPU information about the server, like what the current load for what is the current CPU load on the system. Just the way you can for example do any kind of monitoring of the system via Presence. Of course, you have to combine this – the risk, so first step is actually to publish information, when you start publishing information, the second step is, okay how do I protect it because, maybe, I don’t want to share with everybody. And you see later, how you can do this using XCAP with privacy and permissions. But the idea that you may have such an entity publishing maybe some sensitive information or whatever else you want and you create, you can create rules to give access to this information to certain people. So, you can do this kind of a combination.
That was an example, okay the screenshot for what I showed you before with the server load, again there is a server load at [unintelligible] you can – everybody is allowed to subscribe and just to see this kind of information so you can actually try if you have a client with Presence. Another example is if you run let’s say a shop or a store or whatever, you can let’s say keep your customers up-to-date by publishing information about discounts, promotions, new stuff using Presence. So you can force this kind of information via Presence and automatically whoever is interesting will have access to it. So, quite a handy way of distributing the information. Another to inject information can be – I mean as a source, can be a web interface. For example, we have here the user portal for the opposite.org SIP service. So, you have, you have this my Presence tab here where you can go and actually you can force from the web interface Presence status whatever, you want, like you can, it’s – okay, I’m online even if you have no phone or nothing, you can say okay and right now I want to be online and that you can also publish some status like, available, busy, away or whatever the things you want. So, the source for this information can be as I showed before any kind of application can be or so a web interface or whatever else you know, I like to think here that the only limitation is imagination of us.
As I said before, we see how – we already see how to publish information, now the next – the next step is how to protect the information. Just to be sure that you are sharing the information only with people you want to. So, here we use XCAP is more or less a storage system which allows a client to upload some let’s say Presence rules, like okay, I want to accept somebody I want to ban somebody and so on. This kind of information is uploaded on the XCAP server, the XCAP server plays information in a database and the Presence server is actually using that rules from the database it’s processing the Presence traffic. A more detailed example, you have your phone like IBM which support XCAP. You have a nice interface there, you can go and edit your rules like I want Bob – I want to block Bob to see my Presence or something like that. Automatically the client will upload to a [unintelligible] figured Xcap server this information and then all this stuff it’s or [unintelligible] open SIP here. When some other party, let’s say here, Bob tries to subscribe to Alice’s status the subscribe goes to the Presence server and the Presence server first it will – it will verify if – according to the XCAP rules Bob is allowed to see Alice’s Presence status. And based on whatever the XCAP rule says to be a yes or so. So, if you say yes, okay, you have subscribed or no, sorry, you cannot subscribe. So, that’s a very simple way to Presence how to, let’s say to decide who is allowed to see your Presence information. The good part is because that’s also it can be very easily done at the SIP client – SIP level, you imagine all this logic, could be placed in the client but the idea is to place it on the server because you can change the client but you keep the rules. So, you have again the example with – just a second, you have the example with the client here, maybe upload it from – from your client running on your notebook at the office and then you go home and you will be able to fetch the rules from the – it’s XCAP server, change them and so on but they will be applied also for the new client, so I am not client dependent. You can change and run the client wherever you are, the information stored on the proxy. Yes.
Well I would say yes, it’s – first of all [unintelligible] probability is more or less to follow whatever the RFC says so they – there is RFC saying how it should work. Yes. And, yes, exactly, you bring the – you mentioned SIP [unintelligible] the last – the last [unintelligible] in France in Lyon we did some test with – there is another client called, actually I don’t know what it’s called. It, developed by AG project they have a really nice tag and okay, they are right now they are trying to put some really nice user interface, graphical interface on top of it, which also support XCAP and even more it supports, resource sense on. It’s not, it’s not quite a big world when – or world, when you come like how many entities supporting these things that you have. But I think the problem is how to translate it, it’s kind of viscous circle. Because people offering services don’t consider Presence with XCAP because there are not so many clients with XCAP. At the same time people do not want to develop XCAP clients because they are not so many services offering XCAP possibilities. So, somewhere somebody has to break the circle.
Now, showing it works let’s say by default the client – the XCAP rules from the client, there is a default rule that allows everybody to see the Presence information from whoever is asking for it. Then I’m not sure if it’s visible or not good enough, there is a new rule added by Alice like I want user Bob to be block for Presence I am calling or whatever, so if XCAP it’s not necessary only for Presence. So, you just add it if you have this nice graphic interface, the rules and then magically Alice is offline even if the use actually is online, for Bob it’s offline because he is not able to access anymore, the Presence information of Alice. So from Bob’s point of view Alice is offline because the XCAP, the blog rule that was added by Alice it’s configuration.
Now, other let’s say nice things you can do with Presence is, sounds funny but this Presence is no Presence. It’s actually the [unintelligible] manipulation that allows you to let’s say to certain [unintelligible] different Presence status which is not triggered by any kind of let’s say activity or event or so, it’s just kind of a label you put there. Typically it’s used – for example you’re going vacation somewhere, of course there will be no device to publish any information about you going in vacation. So you can force some status, the speed of status, like, okay I am off right now, I am on vacation or something like that. You can publish permanently on the server, and then the server will be – will keep sending this kind of status to everybody – to anyone interested in it. Even if again there is no – you don’t have online device for whatever trying to publish present status from – on your behalf. Also you can use for advertising, like, imagine there was a – the previous example with the bookshop. You can publish presence information about the stock and so on and you put as permanent presence information some contact information like email or address or whatever. So you can have [unintelligible] presence information permanent which is not related to any kind of events that typically drives the presence.
No, presence let’s say it nice, you can to things with it but I think the topic was already discussed at about – it was also discussed today about what we called islands. And nobody wants to be isolated and not to be – not to be able to exchange information with other people. And other people may mean people from other services or may be even from totally different networks. So it will be cool if you can – if you could exchange presence information with, let’s say we have the example with people from XLPP. May be I want to see their status. I want to exchange messages and so on with somebody from the XLPP site. So you know possibly there is a gateway module that allows you to do that. So you can subscribe and get presence from there or somebody from XLPP can see your own presence information. It works pretty cool. You have bidirectional translation. It’s also publishing the sub-status so it’s not only online-offline, so you get more than this. And more or less, okay, it’s transparent for this. We’re going to see later why it says more or less transparent for the user. I mean it’s quite easy and handy to use. And I have here some examples and we can – and I will show also the – you a live example. On the SIP side, both is subscribing to this address. More or less he’s trying to subscribe to test@sipup.net which is an XLPP address ID. So it’s not the SIP one and I will show you later why this address looks so – looks like – so scary. As I said I will show you exactly later. That’s one alternative. You can do it also directly without because that’s the point. I tried to make a combined example. For example, in the XLPP site you can directly subscribe to the SIP ID like test@sipup.net. You can directly subscribe to Bob to see Bob’s or Paul Subroto’s presence directly adding in the buddy list his name, so without anything special. And let’s see how it works. I have here the subscription by the SIP site and I have here the XLPP client. So I can see the presence. This is published. That’s – PCI is an XLPP client. So, I can see the presence. I can see sub-status. For example, for Alice I can see the sub-status busy which is correct because Alicia is set as busy, so I can change for example to available on the client and then I will – there is no sub-status. It’s default available or I can change for Bob. Let’s put him away. So I changed the status of Bob. And go on update. Okay, and now there is a way so that the – it’s not only the fact I see online offline. I see also the sub-status. Even so if I will show you some things so, how this sub-status is interpreted by the client is strictly related to the client. So the fact you see this icon here is because that’s – it’s because the client wants to when it sees the sub-status away, it will just display through the icon. So it’s more like how to interpret the sub-status. It’s not necessary, something regulated by the SIP present itself. It’s more a client decision and if I try to on the XLPP site I changed the status of the client. Let’s say I put. Let me put away here. So right now my XLPP client is away and normally I should see the same change on the SIP site. Buy you see actually the client, the SIP client is a bit dumb here than the XLPP one and it simply says here away. It’s not able to let’s say recognize the string and actually display away icon. So because let’s see if I change this one and also it’s away which will be SIP to SIP so this will work together. Now Alice is away so this is the icon for recognizing that the user is away. And in this case, the information comes from the XLPP site. He’s not able to recognize. I am not sure why, may be it’s because case sensitive or something but he’s not able to map the sub-status as a string or something he recognize as a way status. So he just simply displayed whatever he received. It’s not only for the away. Let’s try something else here. Let’s try do not disturb. Okay? The server, in this case the server is responsible for passing the information like the status is okay, online, offline and sub-status whatever the client put here because it’s a different field in the presence information. Now it’s up to the client to recognize whatever means it is and to display the appropriate icon. Not sure but it’s, yeah, but it’s not at least I see it’s not relevant who is keeping the presence information. It’s about – it’s translating from one site to another in such a way that it’s fully understood by the other site. I mean, like this you get this kind of information, may be indeed there is something wrong. It’s not properly mapped to the SIP site so however the SIP information should be filled in. So may be that’s the reason for the client not to detect. Sorry? I mean the [unintelligible] it’s at least from SIP to XLPP. The mapping is quite okay. So it’s able to translate in XLPP sheet. Right now we have Bob which is away and Alice is busy so the mapping is okay. So it might be some small issue when it comes to XLPP to SIP translation of presence. Just to show another, let’s say how to put all these bricks together. So right now on the SIP we are bale to inject whatever information in the presence, and also we have the second page which is able to translate information, presence information from XLPP to SIP. So, for example from this client, from the XLPP site I can subscribe on the SIP site, for example, to this weather [unintelligible] which is virtually injected in from the SIP site. So I should be able to see – let me see here that contact. Okay, blinking, it’s blinking, come in, yeah. So now I can actually access some information which is virtually posted in the SIP – on the SIP site. I can even access from the XLPP site. So I can – even I published via SIP I can go and fetch it from other network. I can look at it. Well on the – actually both sites is a XML stuff because XLPP itself is – everything is a XML. On the SIP site the body containing all the presence information is also XML stuff. It’s not necessarily the same format. Well it’s not so simple. It’s not just about, you know, translating because both the systems have different way of storing the information as all I suggested before. So for example in SIP you have this presence server which is a centralized point where all presence information is kept and more less he’s responsible for storing the information and if you need it you go and get it from there in Jabber. Okay, I don’t want to go into the details because I am not so expert in Jabber so I am afraid not to say something stupid but then in Jabber it’s a different way of – so it’s not only about simple converting an XML from whatever format to a different – examining a different format. It’s also about how the presence itself, the information is shared and it goes around. I can do the same with – I still have this client with no presence support received and let me register it again. And it will also be visible via – so, right now I have this device which by simply registering it’s automatically trigger on the server somewhere a presence information and I am able to see it from Jabber and I am registering the one. Okay and now it’s offline by the simple fact so the whole thing is also propagating on the – perfectly on the XLPP site. I am registering the client iSheet also on the XLPP like going offline. So this was the demo part. Let’s finish. There’s a more complicated translation system between the users where actually the URL you are adding your buddy list was encapsulating in the same site in the same time. Let’s say an ID of the local network on the SIP site and also the target network, for example, on the XLPP site. That’s more complicated but there’s option number 2 where you cane directly add, so it’s a matter of configuration of the gateway, so you can directly fill in the right – on the target domain like I am on the SIP site so I can just add user at some Jabber domain on my buddy list. And some idea that I was thinking about was you may use for example DNS and IPTL records to find out what kind of protocol the target domain supports. Just an example. May be I put here in my SIP device I add, I don’t know. Roses add gmail.com or whatever this request comes from – this subscription comes from my proxy and my proxy says okay let me look at this domain, gmail.com and if it does and IPTL look up, normally the domain should say okay I support SIP, I support XLPP I support whatever and it can look to whatever protocol it support and can automatically translate. It said okay this – actually this domain supports only XLPP so send it to the gateway, to the gateway to the XLPP. If the target domain supports SIP then it stays only SIP. So that’s an automatic way very easy to detect that kind of protocol it used on the target domain. But okay that’s an idea what we’re – every service on it via an IPTL whatever protocol they do support. And just to close because it’s almost the time. In the end another interesting feature you can use as presence is what is called resource list. So the idea is if you have of course a list of like a buddy list, normally you subscribe to each user and you get notification about the user. That’s let’s say is a standard way for presence to work. But you can do something like this. You can define the list. You can upload on an escape server and then you simply subscribe only once to the list and you get notification. It’s about the list, the people in the list. So a typical example, imagine you are working in some – in some corporation and you have the financial department, the technical department and so you have a new guy coming in to the engineering department. Okay, what you should do, you start adding everybody from the department in your buddy list just because okay that’s let’s say policy to exchange presence with everybody in the company. No you can simply create a list with everybody from the engineering department and you as a newcomer you just go and subscribe to the list and automatically you get information about all these – all the guys from the list so you don’t have to actually know everybody, I mean to manually add all the people from the list. That’s – I think the only implementation IBM supported it since like one year and after that they dropped it more or less because I think there was no server site implementation. But right now the client from each projects they do support RLS. I remember we did some testing in [unintelligible]. We finally made – and we made the things come to work. And more or less that was about presence and I hope I was able to give you some, let’s say ideas about what you can do with presence because presence is quite a simply mechanism. The idea is okay to be aware of what kind of services or tricks or whatever you want to call them. You are able to do and actually to put on a – let’s say on a platform and put some service on top of it because that’s the most important. If you cannot something into the service then it’s useless. I mean there is no real applicability. So these were just some examples. I try to show you what you can do at least right now with a SIP presence. So if you have any kind of questions on your target. Yeah. Yeah, you mean? Just – because they are two different things. So you want something very easy to configure your service or something it’s very easy to provisionary users. Well, I wouldn’t say so. Well, first of all that’s one the penalties you have to pay for example when you try to be too flexible. I mean you can do a lot of crazy things [unintelligible] itself so there is no simple magic way to make it work. Yes, for a demo set up I think in about hopefully in one month’s time we’re going to release to a DVD with a virtual machine which it comes with, with a basic configuration of open SIP with all the web interfaces installed, to be a good starting for whoever wants to investigate. I mean you can just download, start it and you have an example that works. No, I really agree with you. From this point of view, actually that was the reason for doing that, so as I said I hope in maximum one month to be ready. Right now it’s – we are trying to compress the whole stuff to be as small as possible because, okay, nobody wants to download, like, 4 gigs of virtual machines from website. Neither do I because we have to pay for the traffic. So, nobody will be happy. Yeah, yeah, that’s also an option. And in the same idea we had the control panel web interface. Okay it doesn’t help you setting up things but it really helps you when it comes to maintaining, I mean to provision stuff. Okay you put the whole things then you start adding, I don’t know what, things about routing, things about may be monitoring, things about keeping an eye on, let’s say on the trusted IPs and so on and so. So, it’s a very interface that allows you to provision a client panel system without, oh, I have to use, I don’t know what 3, 4 interface and I have to go into database and change part of a field and then do some fancy command and so. No, that’s completely hidden. So you don’t really need to know all these things. You just go to the tools and can change several options and provision the system. It’s not user related. It’s more system related. So I am not sure if you are aware of the interface but you can give it a try. But I said it will not help you installing the system. That will help probably this virtual machine that would be soon available. Other questions? Sorry? I am not sure [unintelligible] expert from the question or I think it was just a [unintelligible]. He said something like in asterisk or – okay, okay. Other questions or -? Okay in this case I thank you and I hope that you found something useful in this presentation and you will have to think something about during the night. Thank you.




































