Hi, I want to have voicemail feature when phone is busy or on no answer
My configuration file is like that: .. # route block used only to have voicemail if phone is busy or on no answer route[6] { append_branch(); avp_db_load("$ruri", "$avp(email)/$email_scheme"); if(!t_write_unix("/tmp/sems_socket", "voicemail/voicemail_headers")) { t_reply("500", "error contacting sems"); return; } route(5); route(4); route(1); }
failure_route[1] { # flagset 26 <=> if phone busy we want a voicemail if ( (isflagset(26)) && (t_check_status("486")) ) { resetflag(26); route(6); return; }
# flagset 27 <=> on no answer we want a voicemail if ( (isflagset(27)) && (t_check_status("408")) ){ resetflag(27); route(6); return; } end_media_session(); }
Now if I use a "default.template" (used by the voicemail module) with the line: from:voicemail@%domain%,
SEMS cannot send correctly a email: (3988) INFO: connect (AmSmtpClient.cpp:96): 127.0.0.1 welcomes us (3988) DEBUG: send_line (AmSmtpClient.cpp:173): SENDED: HELO 127.0.0.1 (3988) DEBUG: read_line (AmSmtpClient.cpp:145): RECEIVED: 250 christophe.rv.fr (3988) DEBUG: run (AmMail.cpp:119): Mail deamon starting its work (3988) DEBUG: send_line (AmSmtpClient.cpp:173): SENDED: mail from: voicemail@172.20.250.1 (3988) DEBUG: read_line (AmSmtpClient.cpp:145): RECEIVED: 501 Bad address syntax
SEMS is trying to send a mail from "voicemail@172.20.250.1" ! The SMTP server doesn't accept an IP and this IP is the IP of the callee SIP device . Strange. It's important to notice that "voicemail" works fine when is used on a phone not registered with the line "from:voicemail@%domain%" in file "default.template" .
In this case the SEMS log file is: (4494) INFO: connect (AmSmtpClient.cpp:96): 127.0.0.1 welcomes us (4494) DEBUG: send_line (AmSmtpClient.cpp:173): SENDED: HELO 127.0.0.1 (4494) DEBUG: read_line (AmSmtpClient.cpp:145): RECEIVED: 250 christophe.rv.fr (4494) DEBUG: run (AmMail.cpp:119): Mail deamon starting its work (4494) DEBUG: send_line (AmSmtpClient.cpp:173): SENDED: mail from: voicemail@christophe.rv.fr (4494) DEBUG: read_line (AmSmtpClient.cpp:145): RECEIVED: 250 Ok
So I suspect the "%domain%" in "default.template" file is not correctly read by the module "voicemail" after a "failure_route" or after a "append_branch".
What I must change in my OpenSER configuration file in order to resolve this problem ?
NOTE: I'm using sems-0.1.1 in revision 68
Thanks in advance, Christophe
Christophe Irles wrote:
Hi, I want to have voicemail feature when phone is busy or on no answer
My configuration file is like that:
…. # route block used only to have voicemail if phone is busy or on no answer route[6] { append_branch(); avp_db_load("$ruri", "$avp(email)/$email_scheme"); if(!t_write_unix("/tmp/sems_socket", "voicemail/voicemail_headers")) { t_reply("500", "error contacting sems"); return; } route(5); route(4); route(1); } failure_route[1] { # flagset 26 <=> if phone busy we want a voicemail if ( (isflagset(26)) && (t_check_status("486")) ) { resetflag(26); route(6); return; } # flagset 27 <=> on no answer we want a voicemail if ( (isflagset(27)) && (t_check_status("408")) ){ resetflag(27); route(6); return; } end_media_session(); }
Now if I use a "default.template" (used by the voicemail module) with the line: from:voicemail@%domain%,
SEMS cannot send correctly a email: (3988) INFO: connect (AmSmtpClient.cpp:96): 127.0.0.1 welcomes us (3988) DEBUG: send_line (AmSmtpClient.cpp:173): SENDED: HELO 127.0.0.1 (3988) DEBUG: read_line (AmSmtpClient.cpp:145): RECEIVED: 250 christophe.rv.fr (3988) DEBUG: run (AmMail.cpp:119): Mail deamon starting its work (3988) DEBUG: send_line (AmSmtpClient.cpp:173): SENDED: mail from: voicemail@172.20.250.1 (3988) DEBUG: read_line (AmSmtpClient.cpp:145): RECEIVED: 501 Bad address syntax
SEMS is trying to send a mail from "voicemail@172.20.250.1" ! The SMTP server doesn't accept an IP and this IP is the IP of the callee SIP device … Strange. It's important to notice that "voicemail" works fine when is used on a phone not registered with the line "from:voicemail@%domain%" in file "default.template" .
In this case the SEMS log file is: (4494) INFO: connect (AmSmtpClient.cpp:96): 127.0.0.1 welcomes us (4494) DEBUG: send_line (AmSmtpClient.cpp:173): SENDED: HELO 127.0.0.1 (4494) DEBUG: read_line (AmSmtpClient.cpp:145): RECEIVED: 250 christophe.rv.fr (4494) DEBUG: run (AmMail.cpp:119): Mail deamon starting its work (4494) DEBUG: send_line (AmSmtpClient.cpp:173): SENDED: mail from: voicemail@christophe.rv.fr (4494) DEBUG: read_line (AmSmtpClient.cpp:145): RECEIVED: 250 Ok
So I suspect the "%domain%" in "default.template" file is not correctly read by the module "voicemail" after a "failure_route" or after a "append_branch".
What I must change in my OpenSER configuration file in order to resolve this problem ?
Hi Christophe,
there are two solutions:
a) if you do not have a multi-domain configuration, you get rid of the %domain% and replace it with the your string domain name: voicemail@%domain% ---> voicemail@my_sip_domain.com
b) need to take care in your openser.cfg that the RURI in failure route contains a domain name in the domain part and not an IP address. Note that after lookup("location"), the RURI is replaced with the phone contact which is IP!! so you need to revert the RURI to the value from before the lookup.
regards, bogdan