cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
10371
Views
5
Helpful
62
Replies

TBCT from Voice Gateway using IVR TCL

Tervis Tumbler
Level 1
Level 1

Here is my Scenario:

When call comes in to my voicegateway, normally they go to CUCM then UCCX, and people hear the prompt and the rest of story. Now, if I  redirect call to third party company from my UCCX script, two call legs are active during a call, and I loose two B channel while call is active.

Now, I talked to my career, and they can do TBCT, but this needs some TCL scripting on my voicegateway to release a call after redirection to third party company.

This is supposed to happen just if customer reaches specific phone number. So, basically if called number is for example "4444444" play a prompt to customer: " For order status press 1, For other query press 2." So if customer press 1, redirect call to another third party phone number then release call from our voicegateway, and if they press 2, normally send call to CUCM and the rest of story.

First, is there any sample script that I can look to get an idea.

Second, how do I apply this app to my dial-peer that can do the job correctly.

Any help would be appreciated.

Thank you,

62 Replies 62

One more think to add. We are on CUCM version 9, and transfer is consult transfer by default, and  not blind.

Does this affect the way script receives the transfer request or not?

All codes should be in the same script. I am not that familiar with CUCM but I think it may related to how CUCM transfers the call.

Thank you,

When you say the way CUCM transfer call, you mean blind or consult?

This was my question, does this matter?

I know the blind transfer should work don't know the consult. But doesn't matter what kind of transfer you need to let script knows there is a transfer request.

If you cannot get the transfer event you may need to use in-band DTMF.

For example, you call me via Tcl script now I like to transfer you to C (=7654321). I can do *887654321,#997654321..or any unique prefix.

You need to program script to listen the DTMF, when it detect the unique prefix it will parse the rest of digits and analyze if it is for TBCT transfer.

Thank you,

We are looking to open a case for this to get it done. I see that there is a 250$ charge for one case.

Question:

Is there a way to discuss our ultimate need before opening a case, because we want to make sure that what we want to do is doable or not?

Should we post our needs here?

If the CUCM side cannot send transfer request (or TCL GW side cannot receive transfer request) there is not too much we can do in Tcl script. In this case sending DTMF is the only solution I can think of.

Thank you,

I just added the bold part to my script, just to see if I receive any transfer request. Just tell me if this is enough and I should seeiit if CUCM send it.

proc init {} {

global param

set param(interruptPrompt) true

set param(terminationKey) #

}

proc act_Setup {} {

    

        

    infotag set evt_report ev_transfer_request

     leg proceeding leg_incoming

     leg connect leg_incoming

     media play leg_incoming tftp://10.172.28.134/en_enter_dest.au

}   

proc act_MediaDone {} {

     global param

     global select

     set pattern(select) .

     set callinfo(alertTime) 30   

     leg collectdigits leg_incoming param pattern

}

proc act_GotPrompt {} {

      

    global select

        set status [infotag get evt_status]

        if {$status == "cd_005"} {

        set select [infotag get evt_dcdigits]

      

        if {$select == "1"} {

        set callInfo(mode) REDIRECT_AT_CONNECT

        set callInfo(notifyEvents) "ev_transfer_status ev_alert ev_progress ev_transfer_request"

      

        leg setup 89419990748 callInfo leg_incoming

        } elseif {$select == "2"} {

        infotag set evt_report ev_transfer_request

        set callInfo(notifyEvents) "ev_transfer_status ev_alert         ev_progress ev_transfer_request"

        leg setup 4659 callInfo leg_incoming

        } else {

        puts "you  enter wrong number"

act_Select

        }

        } else {

         puts "you did not enter any number"

         act_Cleanup

        }

        }

     

proc act_CallSetupDone {} {

          

        set status [infotag get evt_status]

        if {$status == "ls_000"} {

        puts "call has been hairpinned"

        fsm setstate CALLACTIVE

        } elseif {$status == "ls_040" || $status == "ls_041" || $status == "ls_026"} {

        puts "call transfer sucessful statusis $status"

        act_Cleanup

        } else {

        puts "transfer status is %status"

        }

        }

proc act_Select {} {

     global param

     global select

     set pattern(select) .

     set callinfo(alertTime) 30   

     leg collectdigits leg_incoming param pattern

media play leg_incoming  tftp://10.172.28.134/en_enter_dest.au

fsm setstate MEDIAPLAY

}

proc act_Cleanup {} {

      call close

puts "call was disconnected"

}

init

        #state Machine

         

        set fsm(any_state,ev_disconnected) "act_Cleanup same_state"

        set fsm(CALL_INIT,ev_setup_indication) "act_Setup MEDIAPLAY1"

        set fsm(MEDIAPLAY1,ev_media_done) "act_MediaDone MEDIAPLAY"

        set fsm(MEDIAPLAY,ev_collectdigits_done) "act_GotPrompt PLACECALL"

        set fsm(PLACECALL,ev_setup_done) "act_CallSetupDone CALLACTIVE"

        set fsm(PLACECALL,ev_transfer_status) "act_CallSetupDone same_state"

        set fsm(CALLACTIVE,ev_transfer_request)"act_Cleanup CALLDISCONNECT"

        set fsm(CALLACTIVE,ev_disconnected) "act_Cleanup CALLDISCONNECT"

        set fsm(CALLDISCONNECT,ev_disconnected) "act_Cleanup same_state"

        fsm define fsm CALL_INIT

You have many triggers lead to act_cleanup procedure so it cannot really tell it's a transfer trigger

You can do something like

proc act_tfxr_request {} {

puts "Got transfer request call was disconnected"

      call close

}

But again Tcl script is on application layer, it works on top of IOS.

The first step should verify the transfer request in IOS first. There is a chance the IOS got the transfer request but didn't pass ti Tcl application for whatever reason.

set fsm(CALLACTIVE,ev_transfer_request)"act_tfxr_request CALLDISCONNECT"

    set fsm(any_state,ev_disconnected) "act_Cleanup same_state"

        set fsm(CALL_INIT,ev_setup_indication) "act_Setup MEDIAPLAY1"

        set fsm(MEDIAPLAY1,ev_media_done) "act_MediaDone MEDIAPLAY"

        set fsm(MEDIAPLAY,ev_collectdigits_done) "act_GotPrompt PLACECALL"

        set fsm(PLACECALL,ev_setup_done) "act_CallSetupDone CALLACTIVE"

        set fsm(PLACECALL,ev_transfer_status) "act_CallSetupDone same_state"

        set fsm(CALLACTIVE,ev_transfer_request)"act_Cleanup CALLDISCONNECT"

        set fsm(CALLACTIVE,ev_disconnected) "act_Cleanup CALLDISCONNECT"

        set fsm(CALLDISCONNECT,ev_disconnected) "act_Cleanup same_state"

        fsm define fsm CALL_INIT

Thank you,

I received below email from Cisco :

"I just spoke with my escalation engineer

Call manager doesn’t support any type of h323 or sip transfer for example sip refer or h450.

Call manager will simply sends another call outbound and bridges the media paths of the 2 calls. "


Saying that it seems we won't be able to get transfer request from CUCM.

I was thinking about this, and I wanted to ask you if this is a solution or not.


After call hits TCL and hot to phone on CUCM, according to Cisco transfer is as outbound call. Can we have another script that gets hit with that outgoing call, then handoff the call and any other variable to the first  script and go from there.


here is flow:


PSTN ...........TCL script 1.........................Phone

The phone transfer call :


Outbound call from phone (in order to transfer) ............................. TCL script2  then here this script handoff the call to the first script and the rest fot TBCT.


Is this possible solution?




I cannot think of how to implement in this way

"Call manager will simply sends another call outbound and bridges the media paths of the 2 calls. "

CUCM is bridging the call, isn't it ?

You can have second script to do the handoff, in this way you maybe able to tell 1st script something happening but to do TBCT maybe hard, because outbound call already been made. In band DTMF is not the option ? This is most people do if transfer request event can not be received.

Thank you,

Here is the problem, If I understand DTMF correctly, the called person needs to enter those digit right?

In our case, that 4659 is a CTI routpoint that triggers the UCCX script, then in that script we will ask the customer (calling person) to press 1, then call gets transferred back to PSTN .

There is no one involved to enter the digit for DTMF, unless UCCX script can send DTMF digit back to TCL script, which I am not aware of it.

You need to detail your call scenario from end to end . Who/What is making decision of transfer?

Thank you,

Here is detailed call flow:

Customer calls , call hits the TCL script,then script send a call to CTI Routepoint which triggers  UCCX script.

Inside UCCX script, there is a menu for customer saying " For order status press 1", when customer press 1, call gets transferred back to external number on PSTN.

Please let me know if that explains call detail,or I need to clarify this more.

I see a few ways

1. Two levels menus In GW press 1 for "order status" otherwise press 2 or nothing (timeout in x second) to proceed to UCCX. (easy way) Assuming we know the PSTN number for pressing one, can be configurable as param in Tcl

2. When UCCX send call back(press 1)  to GW with a special  number to trigger second script, 2nd script handoff or sendmsg to 1st script with special message like "TBCT" to instruct 1st to do the TBCT. How to pass the TBCT number ? Couple of ways two, can pass from 2nd to first, can pre-config on 1st.

No pretty but maybe can do the job.

I am not familiar on CUCM side, is there a ICM script, if so can it send digit ?

Thank you,

I am looking at the second way you offered. First, I am using UCCX script, and it is capable of sending digit. And, I think if we can receive these digits, according to what you said before, we should be able to work with our original script, and not having to add second script. Is this correct?

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: