Steve,
As you said, you can't create new transaction in failure route. There is no
point of creating another one when there is one already created. Usually, we
use another ser instance to handle the voicemail part. Search the archive
for examples on how to do this.
Zeus
Hello:
I need some help with getting an unanswered call rolled
over to SEMS for voicemail.
When an inbound call goes unanswered I would like to call
to go to SEMS voicemail. The SEMS/SER interface works for
specific test cases but the general case is failing with the
error "parse error (700,18-19): Command cannot be used in the block".
In the general case I have a voicemail check in the main
section of my config file. If the calling party enters a
specific extension the call
is routed to
SEMS using the logic: (This works).
## test
if (uri=~"^sip:68001")
{
if(method=="ACK" || method=="INVITE" ||
method=="BYE" ||
method=="REFER"){
if(t_newtran()){
if(!vm("/tmp/am_fifo","voicemail")) {
log("couldn't contact voicemail server\n");
t_reply("500", "couldn not contact voicemail server");
};
}
else {
log("could not create new transaction\n");
sl_send_reply("500","could not create new transaction");
};
}; # end if method
break;
};
## end test
For the specific case I moved some of the above logic into
a failure_route block, I added the following check for this
failure condition in the main config file and then I attempt
to execute the voice mail logic in the failure block. I don't
think the t_newtran function can be used in a failure block
but I don't see how else to implement a "roll over to
voicemail when not answered" type of routing.
My failure check code is:
# redirect user to vm if not availabile? Flag it now in case
of # rewrite and store it in flag 6 for route block 6
if (is_user_in("Request-URI", "voicemail")) {
t_on_failure("6");
setflag(6);
log(1, "[SER]: Flag for VM redirect successful. \n");
} else {
log(1, "[SER]: Flag for VM redirect unsuccessful. \n");
};
My failure_route is:
failure_route[6] {
xlog("L_INFO", "\n[SER]: START FAILURE BLOCK #6 Unavailable user:
Time: [%Tf] Method: <%rm> R-uri: <%ru> Contact Header: <%ct>
From uri <%fu> To < %tu> IP source address <%is> \n\n");
if(method=="ACK" || method=="INVITE" || method=="BYE" ||
method=="REFER"){
if(t_newtran()){
if(!vm("/tmp/am_fifo","voicemail")) {
log("couldn't contact voicemail server\n");
t_reply("500", "couldn not contact voicemail server");
};
}
else {
log("could not create new transaction\n");
sl_send_reply("500","could not create new transaction");
};
}; # end if method
break;
}
Any thoughts on this would be helpful.
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
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers