Using Bayonne2 SIP

From GNU Telephony

Jump to: navigation, search

Contents

[edit] Introduction

GNU Bayonne2 is the telecommunications application server of the GNU project. It's a powerful software that make it easy to develop IVR applications through a simple scripting language. GNU Bayonne2 supports various telephony hardware (VoiceTronix, Dialogic and more) and, since version 1.x it supports also VoIP based on the GNU oSIP stack.

In this mini-HowTo we'll address a basic configuration using SIP driver.

I'll suggest to read VoIP HOWTO before begin.

[edit] Software Required

In my test envirnoment, I used the following software compiled on x86-32bit architecture:

For Bayonne

For SIP Proxy

For testing, you can use any generic softphone. For this article, we'll use CounterPath X-Lite that is avaiable for Linux, Microsoft Windows® and Mac OSX®. You can get your free copy here: http://www.xten.com/index.php?menu=download

[edit] Software Installation

The software is quite simple to install.

The first step is to compile and install GNU Bayonne2. To complete this job, You can follow this tutorial: http://wiki.gnutelephony.org/index.php/Howto_Debian_Sarge_Install.

The second step is to compile and install PartySIP. On GNU/Linux Gentoo system You can give this command:

$ ACCEPT_KEYWORDS="~x86" emerge partysip

On other Linux distros, you can compile PartySIP following the steps from: http://www.nongnu.org/partysip/FAQ-partysip.html#compilation5

Once all the software are installed we can review the configuration files.

[edit] Software Configuration

The first thing we'll configure is PartySIP. A short introducion to PartySIP from the PartySIP F.A.Q.: "Partysip is a SIP proxy server. A proxy server have to find routes for SIP requests. In addition to the standard routing rules, partysip can get the routes from additional plugins. Partysip can also start services when a dedicated plugin has been built for this service.".

So, PartySIP we'll register our SoftPhone and Bayonne scripts assignig them a "Phone Number": then it'll route SoftPhone calls to Bayonne.

PartySIP is quite simple to configure: you've to edit a single configuration file, usually located in /etc/partysip/partysip.conf. Here my partysip.conf:

# partysip.conf file
serverip = 10.0.1.116 <- replace with your server ip address
servername = telserver <- replace with your server hostname
serverport_udp = 5060
transport = udp


plugins = udp syntax auth filter rgstrar ls_localdb ls_sfull
plugins_config = udp syntax auth filter_internal rgstrar ls_localdb ls_sfull


serverrealm = "telserver" <- replace with your hostname or realm
authentication = on

<syntax>
	allowed_schemes sip,sips
</syntax>

<filter_internal>
	dialingplan internal
	mode statefull
</filter_internal>

<filter_external>
	dialingplan external
	mode statefull
</filter_external>
 
<ls_sfull>
	record-route off
</ls_sfull>

<ls_localdb>
	mode sf_forking
	mode sf_sequential
	record-route off
</ls_localdb>

<userinfo>
#  <user>       <sip:NAME@DOMAINNAME>  <auth_login>   <auth_passwd>
	user sip:200@telserver 200 200 <- replace with your servername
	user sip:dtmf_say@telserver 202 202<- replace with your  servername
</userinfo>

Here some other useful informations. In the test I've made, I noticed that Bayonne will register on the SIP Proxy the scripts using their names. This means that if in /usr/share/bayonne/scripts you have two sip-enabled scripts script1.scr and script2.scr, Bayonne will register as sip:script1@yourrealm and sip:script2@yourrealm.

For SIP-enabled scripts I mean scripts that contain a SIP registration command like this:

register.sip proxy=10.0.1.116 uri=sip:201@telserver \
        userid=201 secret=201 timeout=3600  

In PartySIP, you see that <userinfo> section. We put two registration, one for a script named 201.scr and the other for a script named dtmf_say.scr. You can put as many registration you need using the right syntax.

Ok! Now you can start your PartySIP Proxy Server. On Gentoo GNU/Linux you can launch it from init with this command:

$ rc-config start partysip

On other system, you can start PartySIP with your init script or simply from the command line:

$ partysip -f /etc/partysip/partysip.conf &

Other command line switch (for verbose debug information or logging file) are avaiable.

Now, we'll proceed to configure GNU Bayonne2. Before to begin, be sure to have a group bayonne and a user bayonne on your system and that the user bayonne have the rights to access audio devices on your system. Now, edit the following configuration files:

1) /etc/bayonne/server.conf

[server]
user = bayonne
group = bayonne
language = en_us
voice = en/deborah

[engine]
driver = sip

2) /etc/bayonne/driver.conf

[sip]
inband = true
dtmf = 101
interface = 10.0.1.116:5070 <- replace this with your server ip address
;rtp = 5074

In this way, we put bayonne listening on port 5070/udp because we installed, on the same machine, also PartySIP that listens on port 5060/udp. Two SIP Stacks on a single machine made easy :)

For our purpose, you've to put the following script in /usr/share/bayonne/scripts/dtmf_say.scr (replace on the first line "telserver" with your realm:

register.sip proxy=10.0.1.116 uri=sip:dtmf_say@telserver \
       userid=202 secret=202 timeout=3600


clear %session.digits
	play o k
	goto ::mytest


program mytest
	sleep 15
	goto ::mytest


^dtmf
	string.1 %keyp
	collect %keyp count=1
	slog "DTMF %keyp detected"
	play &number %keyp
	goto ::mytest

Ok, now you can start Bayonne with the command:

$ bayonne -vvv 

Please, check on the console if some error occurs. In this case, check and re-check your configuration files for errors or difference from what you read above.

Remember that in Bayonne2 you can also start your scripts directly with the soundcard driver for debugging:

$ bayonne -vvv -d soundcard /path/to/your/script.scr

[edit] SoftPhone Configuration

We assume that you've already successfully installed X-Lite, that your soundcard is properly configured. The first thing we've to configure is our accounting informations for successfully login on the PartySIP Proxy.

From the Preferences dialog, go in System Settings->SIP Proxy and double-click on the [Default] entry and change the following parameters:

Enabled: Yes

Display Name: 200
Username: 200 <- match user@realm in partysip <userinfo>
Authorization User: 200 <- match auth_login in partysiysip <userinfo>
Password: 200 <- match auth_passwd in partysip.conf <userinfo> section
Domain/Realm: telserver <- change with your realm
SIP Proxy: 10.0.1.116 <- change with the address of your server

Now the X-Lite should make a successfull login on the PartySIP Proxy. You can check the new status from X-Lite main window when it says "Logged In - Enter Phone Number. Your number is: 200".

Now, go again in the Preferences Dialog, and then in Advanced System Settings -> DTMF Settings and change the following parameters:

DTMF Force Send In Band: Yes
DTMF Tone Length in Samples: 2720
DTMF Magic Number: 101

From Advanced System Settings -> Codec Settings -> g711u change the following parameters:

Enabled: Yes 
Magic Number: 0
Samples Per Frame: 160
DTMF Samples Per Frame: 160

From Advanced System Settings -> SIP Settings change the following parameter:

Register Proxy (s): 3600

The settings ends with a Phonebook entry. Open the Phonebook and click on New Entry item and insert the following parameters:

Name: dtmf_say@telserver <- replace to match your realm
Phone number or SIP URL: sip:dtmf_say@10.0.1.116 <- ip address of server
Proxy ID: telserver <- change to the realm of your proxy
Speed No.: 1 <- number of the speed dial

[edit] Final Test

Ok, let's go with the test. Check that PartySIP and Bayonne are in execution.

From the numerk keypad of X-Lite, press the "1" key and then click on the green call button. You should hear the simple dtmf_say script running.

Personal tools