Ok guys,
It turns out my problem with mediaproxy was indeed to do with me, but
not in an obvious way. Many many thanks to Dan Pascu from a-g for
helping me to backtrace and debug it. It turned out, in fact, to be a
problem with the domain module - I'd set the db_mode as 2 (which doesn't
exist) instead of as 1 and it caused ser to crash.
Dan is working hard to commit an update in cvs to the domain module
which handles incorrect values of db_mode significantly more gracefully!
Until then, make sure *all* your options are correct if you get
unexpected behaviour!
Ok, well, thanks all who tried to help, and it is all working very
nicely now :-) (apart from making sure I tear down the media session in
the right place!)
All the best,
Dave
-------------------------------------
Dave Bath
dave(a)fuuz.com
www.fuuz.com
07736 232085
NOTE: The information contained in this email is intended for the named
recipients only, it may be privileged and confidential. If you are not
the intended recipient, you must not copy distribute or take any action
in reliance upon it. No warranties or assurances are made in relation to
the safety and content of this email and any attachments. No liability
is accepted for any consequences arising from it
hi,
I install sems with plug-in ivr and sipums.
But I don't know how to integrate sems with sipums.
another problem is I don't know how to start sipums?
could someone tell me how to do or where to get document ?
thanks.
Mike,
In a high load situation I would not use a trigger. From experience you can encounter big billing delays when you start using complex billing. Most DB's see the trigger as part of your insert action and will not reply to the application that performed the INSERT until the trigger has finished. This means your SER may have to wait for a few seconds to know if the insert was OK (serious performance impact).
Now may say a few seconds why ?
just take into account you have a number port database with 2M records which you need to scan to see if the number is ported. Can take a second very easily :(
I would advise using a JOB on your SQL server (supported by Oracle & MSSQL, Postgres does not support it I think) which runs every minute. You still have the load on the server but SER will not be delayed by TRIGGER.
Arne.
-----Original Message-----
From: serusers-bounces(a)iptel.org [mailto:serusers-bounces@lists.iptel.org]On
Behalf Of Michael Przybylski
Sent: donderdag 12 augustus 2004 8:32
To: Michael Shuler
Cc: serusers(a)lists.iptel.org
Subject: Re: [Serusers] Why Transactional Accounting?
SER seems to support postgresql as an accounting backend, and postgresql
support "triggers."
This is a synthesis of only a cursory look at the SER source tree and
postgresql docs on triggers, but it looks like you can do the following:
1.) Set up SER to use postgresql as it's accounting backend.
2.) Create an extra table with the fields you would like to see in your
"real world records."
3.) Create trigger to corelate INVITES and BYEs and insert a row into your
"real world records" table every time it notices that a BYE has been
inserted into the transactional accounting table.
This is still extra CPU load that will hurt your scalability but it's
fairly elegant and an experienced PostgreSQL user/admin should be able to
crate it up pretty quickly.
Finally, I'd bet that a 2-way or 4-way opteron-based database server would
hold up to a pretty substantial call volume, even while running that
trigger.
Best regards,
Mike Przybylski
On Thu, 12 Aug 2004, Michael Shuler wrote:
> At first it seemed like a really good idea then the more I looked at real
> world records I realized that to generate a bill for a customer would
> require quite bit of work on MySQL's part to match up the INVITE's and the
> BYE's and then calc the difference in the times. This causes a bit of a
> problem for me because I like my customers to be able to see their CDR
> records live. Which really isn't much unless you look at it from a 100,000
> user perspective. I would either have to beat up my SQL server every time
> they look at their records (or my customer service employees look at them or
> even when the biller generates their bill) or run a cron job that runs every
> so often to convert the data to a single record with a start time and a
> duration and store it in another table. The cron idea isn't too efficient
> because of wasting disk space and rewriting a lot of the same data twice.
>
> This then leads me to ask why the SER acc module wasn't setup to generate an
> initial start record identical to the INVITE message that it already does
> that would be marked as "in progress"? Then when a BYE is received with a
> matching Call-ID you find the original INVITE record, change its status to
> "done" and populate a duration field. Any ideas why this can't be done
> without affecting SER's scalability? :)
>
> Thanks!
>
> ----------------------------------------
>
> Michael Shuler, C.E.O.
> BitWise Systems, Inc.
> 682 High Point Lane
> East Peoria, IL 61611
> Office: (217) 585-0357
> Cell: (309) 657-6365
> Fax: (309) 213-3500
> E-Mail: mike(a)bwsys.net
> Customer Service: (877) 976-0711
>
> _______________________________________________
> Serusers mailing list
> serusers(a)lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
Hi,
In our ser.cfg we do a database query to determine if the dialed number
is a valid subscriber, if the user dialed a wrong number then it is sent
to an IVR prompt. This works well most of the time, but every now an
then we see calls that were dialed properly yet they where transfered to
the prompt. I would like to know how long exec_msg waits for the query
result and if it is tunable. The database is on the same host as ser so
the result should be very fast, yet I am unsure as to why it is failing
to query the subscriber table many times a day.
MySQL is set for 1000 connections and I am not seeing a problem here.
Any other MySQL things to look at?
Here is the code snippet:
#Now check to see if Dialed Number is Valid for one of our Subs
if (method == "INVITE"){
if (!exec_msg('
QUERY="select username from subscriber where
username=\"$SIP_OUSER\"";
RESULT=`mysql -uXXX -pXXX -e "$QUERY" ser`;
if [ -z "$RESULT" ];
then exit 1; fi ;'))
{# User Does Not Exist
rewriteuser("9993");
log(1, "Wrong Number IVR Prompt\n");
route(6);
break;
};
};
Our estimates indicate this fails about 5% of the time. Any ideas?
--
Andres
Network Admin
http://www.telesip.net
I've noticed that with SIP v6.3 on a Cisco 7960 the phone periodically
has registration problems. A show status at the phone interface
shows the message "E630 REG retries exceeded". If I try to force
an un-register then re-registration sometimes it works and sometimes
I get "E630 REG retries exceeded".
I've looked at various timer values but worst case is that I am using the
defaults. For any timer that was changed the change was in a positive
direction.
Cisco does report registration problems in version 6.1 code but they
are suppose to be fixed in version 6.3. Has anyone else seen this
behavior? If so do you have any suggestions for what might be
causing it?
Thanks,Steve
--
ISC Network Engineering
The University of Pennsylvania
3401 Walnut Street, Suite 221A
Philadelphia, PA 19104
voice: 215-573-8396
215-746-7903
fax: 215-898-9348
sip:blairs@upenn.edu
I install cvs answer_machine as sems.
And I try to start sems.
It's appear error message:
(2639) ERROR: reloadFile (SemsConfiguration.cpp:178):
/usr/local/etc/sems/sems.conf:123 configuration error: duplicate
declaration for config.announcement
(2639) ERROR: reportConfigError (SemsConfiguration.cpp:274):
/usr/local/etc/sems/sems.conf:113 configuration: this is the previous
location
But line113==> config.announcement=inline
line 123==> config.announcement=end
and I use sems.conf.sample as my sems.conf file
could someone tell me how to solve it.
thanks.
-----
# $Id: sems.conf.sample,v 1.17 2004/07/19 20:43:14 sayer Exp $
#
# sems.conf.sample
#
# Sip Express Media Server (sems)
#
# sample configuration file
#
#
# whitespaces (spaces and tabs) are ignored
# comments start with a "#" and may be used inline
#
# example: option=value1, value2 # i like this option
#
##################################
# global parameters #
##################################
# optional parameter: fork={yes|no}
#
# - specifies if sems should run in daemon mode (background)
# (fork=no is the same as -E)
fork=yes
# optional parameter: stderr={yes|no}
#
# - debug mode: do not fork and log to stderr
# (stderr=yes is the same as -E)
stderr=no
# optional parameter: loglevel={0|1|2|3}
#
# - sets log level (error=0, warning=1, info=2, debug=3)
# (same as -D)
loglevel=1
# optional parameter: fifo_name=<filename>
#
# - path and file name of our fifo file (same as -i)
fifo_name=/tmp/am_fifo
# optional parameter: ser_fifo_name=<filename>
#
# - path and file name of Ser's fifo file (same as -o)
ser_fifo_name=/tmp/ser_fifo
# optional parameter: plugin_path=<path>
#
# - sets the path to the plug-ins
# - may be absolute or relative to CWD
plugin_path=/usr/local/lib/sems/plug-in/
# optional parameter: smtp_server=<hostname>
#
# - sets address of smtp server
smtp_server=localhost
# optional parameter: smtp_port=<port>
#
# - sets port of smtp server
smtp_port=25
# optional parameter: rtp_low_port=<port>
#
# - sets port of rtp lowest server
#rtp_low_port=1024
# optional parameter: rtp_high_port=<port>
#
# - sets port of rtp highest server
#rtp_high_port=65535
##################################
# module specific parameters #
##################################
# sample voicemail configuration (inline)
config.voicemail=inline
# optional parameter: rec_file_extension=<ext>
#
# - sets the file extension which will be used
# to record messages.
# - example 1: wav
# - example 2: mp3
#
# WARNING: you must compile the mp3 plug-in
# in order to use 'mp3' as default
# extension. You will need the lame
# encoder for that.
# See plug-in/mp3/ReadmeMP3.txt for
# more information.
#
rec_file_extension=wav
# optional parameter: announce_path=<path>
#
# - sets the path where announce files are searched for
# - the file to be played is determined the following way:
# <announce_path>/<domainname>/<username>.wav
# if this file is not available <announce_path>/<default_anounce> is used
announce_path=/usr/local/lib/sems/audio/
# parameter: default_announce=<filename>
#
# - sets the name of the default announce WAV file
default_announce=default_en.wav
# parameter: max_record_time=<seconds>
#
# - maximum record time
max_record_time=30
# parameter: accept_delay=<x>
#
# - delays accepting of the call for x seconds
# - default value is 0
accept_delay=0
# parameter: email_template=<filename>
#
# - email template file
#
# See the README file in <sems-src>/plug-in/voicemail
# for more information on the syntax used.
#
email_template=/usr/local/lib/sems/plug-in/mail.template
# end of configuration section for voicemail module
config.voicemail=end
# sample announcement configuration (inline)
config.announcement=inline
# optional parameter: announce_path=<path>
#
# - sets the path where announce files are searched for
announce_path=/usr/local/lib/sems/audio/
# parameter: default_announce=<filename>
#
# - sets the name of the default announce WAV file
default_announce=default_en.wav
# end of configuration section for announcement module
config.announcement=end
# sample isdngw module configuration (external file)
# config.isdngw=/etc/isdngw.conf
# sample ivr module configuration (inline)
config.ivr=inline
#
#
# The IVR checks for a script with the named of the callee
# (<local part in r-uri>.py for python, <local part in r-uri>.pl for perl)
# in the directory <ivr_script_path><domain>, then for
# <ivr_script_path><domain><ivr_script_file>. If this is not found,
# <ivr_script_path>/<local part in r-uri>.py if searched,
# and if this is not found, <ivr_script_path>/<ivr_script_file> is used.
#
# So with a call to sayer(a)iptel.org and
#ivr_script_path=/etc/ivr and
#ivr_script_file=ivr.py
# these files are checked:
#/etc/ivr/iptel.org/sayer.py
#/etc/ivr/iptel.org/ivr.py
#/etc/ivr/sayer.py
#/etc/ivr/ivr.py
#
#parameter: ivr_script_path:
# path to ivr scripts.
#
ivr_script_path=/etc/ivr/
# default script file: this will be executed if <user>.py does not exist.
#
ivr_script_file=ivr.py
# parameter : tts_caching
# y or n
# text will be read from waves already synthesized and
# cached in cache_path
tts_caching=y
# parameter : tts_cache_path
# path to cache waves
# path must exist!
tts_cache_path=/tmp/wavs
# end of configuration section for ivr module
config.ivr=end
# sample conference configuration (inline)
config.conference=inline
# parameter: default_announce=<filename>
#
# - sets the full pathed name of the default announce WAV file.
# Will be played to lonely users.
default_announce=/usr/local/lib/sems/audio/first_participant.wav
# end of configuration section for conference module
config.conference=end
# example configuration for number reader
config.number_reader=inline
number_path=/usr/local/lib/sems/audio/
prolog_file=welcome_to_number_reader.wav
epilog_file=thanks_calling_number_reader.wav
# end of number_reader configuration
config.number_reader=end
# add more module configurations here (inline or external):
#
# config.mymodule=<filename>
# or
# config.mymodule=inline
# ...
# config.mymodule=end
Hello SER users-
a quick request for help from a SER newbie...I want to use SER and
asterisk together (* for PSTN and VM) on the same box. I am running
asterisk and SER and i can register with SER and route calls out to
asterisk.
However when asterisk tries to hand off a call to SER i get a 483 error...i
am pretty sure i have a loop in my ser.cfg but the documentation on this is
pretty thin.
If someone has a ser.cfg for a similar configuration i could look at i
would be most appreciative - i need to learn more about ser.cfg and this is
the best way.
thanks in advance,
yair
--------------------------------------------------------------------
mail2web - Check your email from the web at
http://mail2web.com/ .
when I wnat to compile ivr plug-in from cvs.
it have the error message
I should how to solve this problem?
Thanks.
------------
[root@knuth ivr]# make
gcc -I ../.. -I ../../ortp-0.6.0/src -I ../../ortp-0.6.0 -Wall -Wno-reorder
-D_DEBUG -g -DTHREAD_SAVE -D_REENTRANT -D_THREAD_SAFE -fPIC
-I/usr/include/python2.3 -c Ivr.cpp -o Ivr.o
In file included from Ivr.cpp:22:
IvrPython.h:32:20: Python.h: No such file or directory
IvrPython.h:33:21: compile.h: No such file or directory
IvrPython.h:34:25: frameobject.h: No such file or directory
In file included from IvrMediaHandler.h:29,
from IvrPython.h:47,
from Ivr.cpp:22:
Ivr.h:106: conflicting return type specified for `virtual void
IvrDialog::onSessionStart(AmRequest*)'
../../AmApi.h:49: overriding `virtual int
AmDialogState::onSessionStart(AmRequest*)'
Ivr.h:107: conflicting return type specified for `virtual void
IvrDialog::onBye(AmRequest*)'
../../AmApi.h:50: overriding `virtual int AmDialogState::onBye(AmRequest*)
In file included from Ivr.cpp:22:
IvrPython.h:107: syntax error before `*' token
IvrPython.h:108: syntax error before `*' token
IvrPython.h:118: syntax error before `*' token
IvrPython.h:119: syntax error before `*' token
IvrPython.h:120: syntax error before `*' token
IvrPython.h:121: syntax error before `*' token
Ivr.cpp: In member function `virtual void
IvrDialog::onSessionStart(AmRequest*)':
Ivr.cpp:227: no matching function for call to `IvrPython::cancel()'
Ivr.cpp: In member function `int IvrDialog::handleMediaEvent(IvrMediaEvent*)
:
Ivr.cpp:289: `struct IvrMediaEvent' has no member named `processed'
make: *** [Ivr.o] Error 1
>andres,
>
>why is authentication done by ser not enough?
>
>-- juha
>
>
>
Lets say we have 5000 subscribers. One of them signs up for and
additional account with an SPA3000(FXO Port). If the SPA3000 does not
authenticate the incoming INVITE, then any of our 5000 subscribers can
authenticate with our SER and then use this guys FXO port on the
SPA3000. The idea is that only his "authorized users" can use his FXO
port. The SPA3000 has room for up to 8 accounts for digest
authentication, so he can select up to 8 firends/family to use his
personal gateway.
Hope this is a bit more clear.
--
Andres
Network Admin
http://www.telesip.net
--
Andres
Network Admin
http://www.telesip.net
hi
I already install ispums.
But I don't know how to Add Sems Media scripts.
could you tell me detail to do it.
thanks.
>We have a project sipums to take advantage of the
>scripting feature in IVR. It uses Perl to implement a
>unified messaging system.
>http://developer.berlios.de/projects/sipums/
>--- Jiri Kuthan <jiri at iptel.org> wrote:
> I'm not sure it can't -- the recent python scripting
> feature in IVR
> is quite powerful. It is on development branch
> though. Stefan knows
> the current status best but this feature seems
> feasible to me.
>
> -jiri
>
> At 07:31 AM 8/11/2004, Sean wrote:
> >>SEMS could not do this currently, you would need
> some IVR based
> >>voicemail system I guess, for example asterisk.
> >
> > >Jan.
> >
> >>>On 06-08 12:06, Sean wrote:
> >>> When I record voice and save wav file, it will
> send mail to my user.
> >>> But I don't want to do that.I want it save in my
> server and when user
> >>> register
> >>> my server,my server will send message to tell
> him.He have a miss call.How to
> >>> do it?
> >>> Could anybody help me? Thanks.
> >>>
> >>> --
> >>> National Central Univ., Computer Center
>
(<http://www.cc.ncu.edu.tw/index.php>http://www.cc.ncu.edu.tw/index.php)
> >>>
> >>> _______________________________________________
> >>> Serusers mailing list
> >>>
>
<http://lists.iptel.org/mailman/listinfo/serusers>Serusers
> at iptel.org
> >>> http://lists.iptel.org/mailman/listinfo/serusers
> ><http://www.incredimail.com/index.asp?id=54475>
> >[]
> >
> >_______________________________________________
> >Serusers mailing list
> >Serusers at iptel.org
> >http://lists.iptel.org/mailman/listinfo/serusers
>
> --
> Jiri Kuthan http://iptel.org/~jiri/
>
> _______________________________________________
> Serusers mailing list
> Serusers at iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>