Hi,

Mahi Haile wrote:
Hi all,
I am a grad student in CS, and has been recently interested in voice solutions. I am a complete beginner in this area. I am starting out with SEMS, and using the included SER module.

I have built sems, and thats where I am. Reading though the documentations and presentations, I could not find an end to end tutorial that covers everything. In most of the SEMS presentations, I see a 'Proxy' box that sends requests to SEMS.
in SIP usually you have some registrar where the phones register to, and a ("home") proxy through which the calls are placed. you can easily set up this for a small to medium system with ser, sip-router or kamailio or the like, and there are lots of documentation and tutorials on how to do that.

with ser for example, if you are on debian, you can basically download the source package (e.g. checkout from svn or download from ftp.iptel.org/pub/ser), create the ser-oob package (cd ser-x.y.z; ln -s pkg/debian debian; dpkg-buildpackage -rfakeroot -us -uc), install it (dpkg -i ser_x.y.z ser-oob_x.y.z), configure it (dpkg-reconfigure ser-oob) and adapt the ser-oob configuration file (/etc/ser/ser-oob.cfg), which does implement all you need to start.

now, lets say you want to have some certain announcement played for the case that the user dials a certain number, e.g. starting with 300. In ser (kamailio, sip-router, opensips etc), you can catch calls to that number and send them to SEMS, like this:

 if (uri=~"sip:300.*") {
       t_relay_to_udp("192.168.5.106","5080");
       break;
 }

where the IP address/port is the SIP listen address of your SEMS server (set in sems.conf).

In the ser-oob config, the best place to do this is in SITE-SPECIFIC route, and there is also already an example in there I think (forwarding to iptel.org conference for 000777).

Now you have all INVITEs to 300 sent to your SEMS server. You tell SEMS to load and run the application announcement, by setting in /etc/sems/sems.conf:
 load_plugins=wav;ilbc;announcement;sipctrl
 application=announcement
and possibly set the announcement to play in announcement.conf (in /etc/sems/etc/announcement.conf).
You should also set the SIP listen address and port in sems.conf.

Now all calls to 300 go to the SEMS server that runs the announcement application, and you should hear that playing on your phone.

Now lets say that you wanted to have your SEMS server not do only announcements, but also an echo service, if you call the number 'echo'. So you need to load both echo and announcement applications, and somehow the proxy needs to tell SEMS which applicaiton should be executed.

There is several methods how to select an application in SEMS (by RURI user part, RURI parameter, regexp matching on RURI, or a separate header), and the preferred way is to add some special header to the INVITE, P-App-Name.

so, in sems.conf you set:
 load_plugins=wav;ilbc;announcement;sipctrl;session_timer;echo
 application=$(apphdr)

and in the ser-oob.cfg you do:
 if (uri=~"sip:300.*") {
       append_hf("P-App-Name: announcement\r\n");
       t_relay_to_udp("192.168.5.106","5080");
       break;
 }

 if (uri=~"sip:echo.*") {
       append_hf("P-App-Name: echo\r\n");
       t_relay_to_udp("192.168.5.106","5080");
       break;
 }

Now lets say there is an application in SEMS which needs some parameters (e.g. the email address to send the voicemail to, or the user ID for voicebox). Usually, the proxy has looked up the user profile from some kind of DB anyway, so it makes sense to just add that information to the INVITE and not have the voicemail or voicebox server care for databases and stuff and look it up again. So there is a header called P-App-Param which SEMS understands and gives as parameters to the applications. For voicebox that is for example:

        if (uri=~"^sip:1000") {
          append_hf("P-App-Name: voicebox\r\n");
append_hf("P-App-Param: [email protected]%|;[email protected]%|;lng=%$f.lang%|;uid=%$f.uid%|
;did=%$f.did%|;\r\n");
          rewritehostport("mysemsserver.ip.addr:5080");
          route(FORWARD);
        }

or for leaving a voicemail (in failure_route, see the comment in ser-oob.cfg)
        append_hf("P-App-Name: voicemail\r\n");
append_hf("P-App-Param: mod=%$t.voicemail%|;eml='%$t.email%|';[email protected]%|;snd='%[email protected]%|'
;[email protected]%|;uid=%$t.uid%|;did=%$t.did%|;");
        rewritehostport("mysemsserver.ip.addr:5080");
        route(FORWARD);

Of course, pretty much the same applies to kamailio/sip-router/opensips config, sometimes the syntax is a little different.

I hope that gets you somehow started... also note that each sems application has got documentation; Readme files in doc/ and for the examples under the source tree. The 1.1 documenation is also online at iptel.org/sems/.

hth
Stefan

P.S. For testing, I often use a very simple ser configuration, have a look at ser-basic.cfg in the ser source tree under etc/ser-basic.cfg . I put the checks for r-uri between REGISTER handling and USRLOC lookup.

P.S. 2: for testing simple things like announcement or some service, you can also do it completely without setting up a SIP proxy: register two users A and B at iptel.org/service, load registrar_client;uac_auth in sems.conf, set the A user's credential in registrar_client.conf, register ekiga to your iptel.org account B, and call the number of A - this way the iptel.org proxy sends the call to SEMS just like any other SIP phone.


As a very basic process, here is what I would like to do: call from my Ekiga softphone and hear an announcement served by Sems. My question is, please point me to a tutorial on how to set up the complete system. What pieces do I need besides sems, and how do they interact? After that, I would like to find out how to add more users, so that they have separate voiceboxes etc.

Thank you very much,


------------------------------------------------------------------------

_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems


--
Stefan Sayer
VoIP Services Consulting and Development

Warschauer Str. 24
10243 Berlin

tel:+491621366449
sip:[email protected]
email/xmpp:[email protected]


_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems

Reply via email to