Hello,
there are two options: 1) use a dedicated instance of ser on another port that writes all requests directly to sems; forward calls via t_relay_to_udp
2) set user_prefix_separator=+ in sems.conf, then sems will reply with a contact in the form of voicemail+<user>@host which you can then filter in your ser.cfg. have a look at docs/ directory in sems http://cvs.berlios.de/cgi-bin/viewcvs.cgi/sems/answer_machine/docs/
Stefan
Dennis Real wrote:
Hi,
I have a strange problem with stateful processing using t_relay and t_newtran. For normal routing I use t_relay but all sems modules require the usage of t_newtran, e.g.:
if ( !t_newtran() ) { sl_reply_error(); }; t_write_unix("/tmp/am_sock", "voicemail");
The problem now is how to handle BYE and CANCEL messages for deestablishing connections. For the echo server (reachable at 4242@192.168.11.1) I use the following code for getting back transaction and closing socket to sems:
if ( uri=~"^sip:4242@" && ( method=="BYE" || method=="CANCEL" ) ) { if (!t_newtran()) { sl_send_reply("500", "could not create transaction"); break; };
if( !t_write_unix("/tmp/am_sock", "bye") ) { t_reply("500", "error contacting sems"); }; break;
}
This works fine. But how can I do this for voicemail? The uri will not be changed so I can't destinguish between BYE for a normal and a voicemail connection.
All other destinations do not use t_newtran (and no socket to sems) so simply t_relay is used for BYE and CANCEL messages.
The whole ser.cfg is attached below.
Regards and thanks for your help, Dennis