Hi Everyone,
I am trying to implement Serial Forking (Find Me Follow Me) where an IVR
message
is played out before call forwarding (t-relaying of calls) is initiated.
My implementation is as follows:
1. Main dialed number is tried.
2. When the callee does not pick up the call, a timeout occurs
3. Upon timeout, I want to forward the call to an IVR to play the
audio message:
"The party you are trying to reach is not answering. You will be
forwarded to their secondary numbers. please wait."
4. After the message is played out, the call is forwarded to the
callee's first FindMeFollowMe number
5. If there is no answer at the forwarded number, call is forwarded
to the callee's next FindMeFollowMe number
6. if there is no answer at the callee's last FindMeFollowMe
number, the call is forwarded to the callee's voicemail
The problem I am having is that at step 4, after the message is played
out by the asterisk IVR
successfully, a BYE message is sent by asterisk IVR to SER. In SER, I
catch the BYE SIP
message and then try to execute a "t_relay" to forward the call to the
callee's first FindMeFollowMe
number. But, t_relay generates this error:
12(20843) ERROR: t_newtran: transaction already in process 0xb5468b38^M
12(20843) route[2]: t_relay failed^M
12(20843) route[2]: sl_reply_error executed^M
12(20843) ERROR: sl_reply_error used: I'm terribly sorry, server error
occurred (1/SL)^M
I read the following section from "iptel.org SIP Express Router v0.11.0
-- Admin's Guide"
(
http://www.iptel.org/ser/doc/seruser/seruser.html#AEN1078):
3.3.6. I receive "ERROR: t_newtran: transaction already in process" in
my logs.
That looks like an erroneous use of tm module in script. tm can handle
only one transaction per request. If you attempt to instantiate a
transaction multiple times, ser will complain. Anytime any of t_newtran,
t_relay or t_relay_to_udp actions is encountered, tm attempts to
instantiate a transaction. Doing so twice fails. Make sure that any of
this commands is called only once during script execution.
And my understanding was that because the first call that I had
forwarded to the Asterisk IVR at step 3 had not been terminated,
and therefore its associated transaction still existed, SER did not
allow the creation of a new transaction through the invocation of
t_relay. And Asterisk continuously retransmitted the BYE message to SER.
My question is : How can terminate the connection that was set up to
Asterisk IVR at step 3 successfully before
Initiating the first call forward at step 4? I tried sending SIP 200
(OK) responses from SER back to Asterisk IVR,
in response to the BYE requests SER receives from it, to force Asterisk
IVR to terminate the connection but it
doesn't seem to work?! I sent these responses back using sl_send_reply
and t_reply. I tried t_release() instead
of sending 200 (OK) SIP response back to Asterisk but that didn't
terminate the call either!
Can anyone suggest any solutions?
Thanks
Ramin
rnikaeen(a)goldline.net