You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sems/doc/Howtostart_noproxy.txt

208 lines
7.8 KiB

* [1]Main Page
* [2]Related Pages
* [3]Namespaces
* [4]Data Structures
* [5]Files
* [6]Directories
* [7]Examples
How to try out SEMS without setting up a proxy
Introduction
This text describes how one can try out services in SEMS without
setting up a proxy. This is the simplest way to try services in SEMS,
or start with developing a service.
The way this works is that SEMS registers to a SIP server (registrar)
with one account (bob), just like any other SIP phone, and we call SEMS
from another account (alice). If the SIP server provides DID calling
from the PSTN, we can use any landline or mobile phone for testing or
using the service.
Note:
What is not possible with this method is to use applications
which need additional information for a call from the subscriber
data. For example, in order to send a voicemail as email the
SEMS server needs the email address to send the mail to.
Requirements
For compiling SEMS, as a minimum a C++ compiler and make is needed. In
debian, do
apt-get install g++ make
With a public SIP server
Two accounts at a public SIP server are needed. We recommend to use
iptel.org's SIP service for testing, an account can be registered for
free at [8]http://iptel.org/service/.
Any SIP phone, hardphone or softphone, can be used for testing.
Cross-platform, [9]sip-communicator is recommended, for Linux
[10]twinkle, for Windows sip-communicator, xten eyebeam or NCH express.
With a PSTN DID provider
Alternatively a PSTN DID provider can be used. In that case, we can
test and use the service with any phone. A list of DID providers is for
example available at [11]voip-info . [12]Sipgate for example, provides
free DID numbers in Germany.
Installing SEMS from source
First, the SEMS source is downloaded from iptel.org and extracted:
$ wget ftp.iptel.org/pub/sems/sems-latest.tar.gz
$ tar xzvf sems-latest.tar.gz
SEMS is compiled:
$ cd sems-x.y.z/
$ make
Note:
Compilation may fail for some modules due to missing
dependencies. For most modules, that can be ignored for the
moment.
Then SEMS is installed:
$ make install
This will install
* configuration in /usr/local/etc/sems/
* the sems binary in /usr/local/sbin/sems
* modules in /usr/local/lib/sems/plug-in/
* audio files in /usr/local/lib/sems/audio/
Configuring the application for SEMS
There are many many modules shipped with SEMS, applications like
announcement, voicemail, conference, etc, codec modules, and some
things like SIP registrar client.
Now we configure SEMS to load the conference application and execute
the conference application for incoming calls. We also set it to have
itself register to our SIP server.
In /usr/local/etc/sems/sems.conf, we set
load_plugins=wav;uac_auth;registrar_client;reg_agent;conference
to load the modules we need; wav is for reading WAV files and for the
G711 codec, uac_auth is the module which implements authentication,
registrar_client facilitates registration at a SIP server, and
reg_agent is the application that uses registrar_client to have SEMS
register at a SIP server.
We also set
application=conference
so that SEMS executes the conference application for an incoming call.
We want SEMS to register at a SIP server, so we need to tell it about
the user name and the password, this is set in
/usr/local/etc/sems/reg_agent.conf (of course this user name bob and
the password need to be set to the ones used for testing):
domain=iptel.org
user=bob
display_name=bob
auth_user=bob
pwd=verysecret
Testing the setup
Now we can test the configuration by running SEMS from the command line
like this:
/usr/local/sbin/sems -f /usr/local/etc/sems/sems.conf -D 3 -E
-D 3 sets the debug level higher so that we see what is going on, and
-E makes SEMS start in the foreground and go to daemon mode. It also
makes the log appear on the terminal and not in the system log file.
If everything is alright, SEMS starts up with a lot of messages, and
hopefully no ERROR. There should also be some messages appearing which
show that SEMS registered successfully to the SIP server.
Now we can call bob from the other phone or our PSTN telephone. In the
SEMS log, we see the call appearing, and on the phone we hear a message
saying that we are the first participant in the conference.
If it doesnt work.... we examine the log for the ERROR that occured.
Possibly, depending on the network setup, we need to change the
interface that SEMS is running on; this can be changed by setting the
media_ip and sip_ip options in sems.conf. Also, it might be that there
is already someone using that port (default config: 5070), in that case
sip_port needs to be set.
Running as daemon
If SEMS is started without the -E option, it will continue running as
daemon in the background. The log can be seen in syslog (e.g. with tail
-f /var/log/daemon.log).
Running other applications
If we want to run other applications, the load_plugins= and
application= parameters need to be adapted. See [13]Application Modules
for a description of the shipped applications.
Creating and running a simple DSM applications
The DSM is a service development platform, that makes it simple to
create powerful services. The service logis is defined as a state
machine, and the DSM application interprets this state machine for the
calls, evaluating when to change state, and which actions to execute.
To use a DSM application, we set in /usr/local/etc/sems/sems.conf
load_plugins=wav;uac_auth;registrar_client;reg_agent;session_timer;dsm
application=mydsmapp
and in /usr/local/etc/sems/dsm.conf :
diag_path=/usr/local/lib/sems/dsm/
load_diags=mydsmapp
register_apps=mydsmapp
Then we paste this little script in
/usr/local/lib/sems/dsm/mydsmapp.dsm :
initial state BEGIN
enter {
playFile(/usr/local/lib/sems/audio/webconference/first_participant.wav);
};
transition "file ends" BEGIN - noAudioTest -> TYPING;
state TYPING;
transition "typed a key" TYPING - keyTest(#key < 10) / {
set($myfile=/usr/local/lib/sems/audio/webconference/);
append($myfile, #key);
append($myfile, .wav);
playFile($myfile);
} -> TYPING;
transition "BYE received" (BEGIN, TYPING) - hangup / stop(false) -> END;
state END;
This little script welcomes the caller, and then plays the key that the
caller entered. More documentation about DSM and examples are in
apps/dsm/doc, and also [14]DSM: State machine notation for VoIP
applications .
__________________________________________________________________
Generated on Thu Feb 3 02:29:25 2011 for SEMS by [15]doxygen 1.6.1
References
1. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/index.html
2. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/pages.html
3. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/namespaces.html
4. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/annotated.html
5. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/files.html
6. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/dirs.html
7. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/examples.html
8. http://iptel.org/service/
9. http://www.sip-communicator.org/
10. http://twinklephone.com/
11. http://www.voip-info.org/wiki/view/DID+Service+Providers
12. http://sipgate.de/
13. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/AppDoc.html
14. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/ModuleDoc_dsm.html
15. http://www.doxygen.org/index.html