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.”

 

  1. After the message is played out, the call is forwarded to the callee’s first FindMeFollowMe number
  2. If there is no answer at the forwarded number, call is forwarded to the callee’s next FindMeFollowMe number
  3. 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@goldline.net