cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Announcements
Walkthrough Wednesdays

TBCT TCL Script template

2245
Views
0
Helpful
10
Comments
This document was generated from CDN thread

Created by: Weihui Ted MENG on 27-04-2010 12:22:51 PM
I am stuck in programing the Cisco voice gateway to support TBCT (ISDN Two B-Channel Transfer) using TCL scripting. I could not find a template from Cisco.com for the scripting and need a help from you guys to see whether any help be available for the template.

Subject: RE: TBCT TCL Script template
Replied by: Weihui Ted MENG on 27-04-2010 12:55:10 PM
Hi ViJay,
 
With the experience with the ACD IVR TCL scripting, I can find template from Cisco.com, and tune the script to what I want. However, I could not find the template to initilize the TBCT scripting. Can you shed some lights on the template?
 
Also, is the TBCT TCL a must-to-have to enable the Cisco voice GW to enable the TBCT feature, considering the PRI has already subscribed the TBCT from CO?
 
Thanks.

Subject: RE: TBCT TCL Script template
Replied by: Anusha Kannappan on 28-04-2010 12:25:34 PM
Hi Weihui,
 
By issuing the following command you can initialize the TBCT script
 
call application voice application-name {location | av-pair}
or 
application
service application-name location
 
For more details you can go through the following link.
http://www.ciscoios.biz/en/US/docs/ios/12_3/vvf_r/vrg_i1.html#wp1042282
 
Thanks,
Anusha

Subject: RE: TBCT TCL Script template
Replied by: Weihui Ted MENG on 28-04-2010 12:42:13 PM
Anusha,
 
Thanks for replying. I already had those IOS commands on the GW, but stuck in the TCL script, as I could not find a script template for TBCT particularly on cisco.com. Could you shed light on where I can find this script? I already checked the IVR programming guide 2.0, but still kind of being lost on the road not knowing how to write the script. I am truely network engineer and have weak skills on programming, though I know how to twick the ACD TCL scipt. So any help would be really appreciated. Thanks.

Subject: RE: TBCT TCL Script template
Replied by: Vijay Prasad Neelamegam on 27-04-2010 12:38:38 PM
Hi Weihui,
 
Are you need of API support or logic support? You can have a look at the TBCT transfer process in the following Link
 
http://www.ciscopartner.biz/en/US/docs/ios/voice/tcl/developer/guide/tclivrv2_ch1.html
 
Thanks
Vijay

Subject: RE: TBCT TCL Script template
Replied by: Anusha Kannappan on 30-04-2010 09:07:47 AM
Hi Weihui,
 
In TBCT we can achieve the blind as well as the consultation call transfers. Please brief us the exact scenario you are trying for.
 
Also our scripts are not free they are fee based. For more details related to this and to become a technology Parter you can check the following link
http://developer.cisco.com/web/cdc/program-membership 
 
Thanks,
Anusha.

Subject: RE: TBCT TCL Script template
Replied by: Borislav Mateev on 15-05-2010 01:25:24 AM
Here is a sample script, but it does not seem to work.
Let me know if you get it to work.
 

#---------------------------------
# Example Script
#---------------------------------
¿
proc init { } {
global param
set param(interruptPrompt) true
set param(abortKey) *
set param(terminationKey) #
}
proc act_Setup { } {
global dest
global beep
global xfr_mode
set beep 0
if { [infotag get leg_isdid] } {
set dest [infotag get leg_dnis]
leg proceeding leg_incoming
leg connect leg_incoming
set callInfo(mode) redirect-at-alert
set callInfo(notifyEvents) "ev_transfer_status ev_alert ev_progress"
set callInfo(newguid) true
# Enable following if xfer mode to be configured by CLI
#set xfr_mode [infotag get cfg_avpair mode]
#puts "\nTCL: ***** >> act_Setup mode = $xfr_mode << ****"
#set callInfo(mode) $xfr_mode
leg setup $dest callInfo leg_incoming
fsm setstate PLACECALL
} else {
leg setupack leg_incoming
playtone leg_incoming tn_dial
set param(dialPlan) true
leg collectdigits leg_incoming param
}
 
 
}
proc act_GotDest { } {
global dest
 
set status [infotag get evt_status]
 
if { $status == "cd_004" } {
set dest [infotag get evt_dcdigits]
leg proceeding leg_incoming
leg setup $dest callInfo leg_incoming
 
} else {
puts "\nCall [infotag get con_all] got event $status collecting destination"
call close
}
}
 
proc act_CallSetupDone { } {
global beep
set status [infotag get evt_status]
if { $status == "ls_000"} {
puts " call has been hairpinned "
puts "CLI_3:END:FAIL "
 
} elseif {$status == "ls_040" } {
puts "call transfer sucessful status is $status "
puts "CLI_3:ENDASSED "
act_Cleanup
} else {
puts " transfer status is $status "
}
}
proc act_Timer { } {
global beep
global incoming
global outgoing
set incoming [infotag get leg_incoming]
set outgoing [infotag get leg_outgoing]
 
if { $beep == 0 } {
#insert a beep ...to the caller
connection destroy con_all
set beep 1
} else {
connection destroy con_all
fsm setstate LASTWARN
}
}
proc act_HandleDisconnect { } {
set evtLegId [string trim [infotag get evt_legs]]
set status [infotag get evt_status]
puts "Disconnect status $status "
#leg disconnect $evtLegId
}
¿
proc act_LastWarn { } {
media play leg_incoming flash:out_of_time.au
}
proc act_Destroy { } {
media play leg_incoming flash:beep.au
}
proc act_Beeped { } {
global incoming
global outgoing
connection create $incoming $outgoing
}
proc act_ConnectedAgain { } {
timer start leg_timer 10 leg_incoming
}
proc act_Ignore { } {
# Dummy
puts "Event Capture"
}
proc act_Cleanup { } {
call close
}
init
#----------------------------------
# State Machine
#----------------------------------
set fsm(any_state,ev_disconnected) "act_Cleanup same_state"
set fsm(CALL_INIT,ev_setup_indication) "act_Setup GETDEST"
set fsm(GETDEST,ev_collectdigits_done) "act_GotDest PLACECALL"
set fsm(PLACECALL,ev_setup_done) "act_CallSetupDone CALLACTIVE"
#set fsm(PLACECALL,ev_transfer_status) "act_CallSetupDone CALLACTIVE"
set fsm(PLACECALL,ev_transfer_status) "act_CallSetupDone same_state"
set fsm(PLACECALL,ev_disconnected) "act_HandleDisconnect same_state"
¿
set fsm(CALLACTIVE,ev_leg_timer) "act_Timer INSERTBEEP"
set fsm(INSERTBEEP,ev_destroy_done) "act_Destroy same_state"
set fsm(INSERTBEEP,ev_media_done) "act_Beeped same_state"
set fsm(INSERTBEEP,ev_create_done) "act_ConnectedAgain CALLACTIVE"
set fsm(LASTWARN,ev_destroy_done) "act_LastWarn CALLDISCONNECT"
set fsm(CALLACTIVE,ev_disconnected) "act_Cleanup CALLDISCONNECT"
set fsm(CALLDISCONNECT,ev_disconnected) "act_Cleanup same_state"
set fsm(CALLDISCONNECT,ev_media_done) "act_Cleanup same_state"
set fsm(CALLDISCONNECT,ev_disconnect_done) "act_Cleanup same_state"
set fsm(CALLDISCONNECT,ev_leg_timer) "act_Cleanup same_state"
fsm define fsm CALL_INIT
¿
¿
¿

Subject: RE: TBCT TCL Script template
Replied by: Yawming Chen on 15-05-2010 01:58:46 AM
Can you please tell more about what is not working
By the way, I think we should use redirect_at_alert not redirect-at-alert

set callInfo(mode) REDIRECT_AT_ALERT
 
Thanks,
 
Yawming

Subject: RE: TBCT TCL Script template
Replied by: Borislav Mateev on 17-05-2010 06:56:02 PM
According to: http://www.cisco.com/en/US/docs/ios/voice/ivr/configuration/guide/ivr_tbct.html
 
Step 5 Configure the callsetup parameterspace mode:


paramspace callsetup mode {redirect | redirect-at-alert |redirect-at-connect | redirect-rotary | rotary}

...and you hit the nail on the head....What is not working? The 2B channels are not released.

Subject: RE: TBCT TCL Script template
Replied by: Yawming Chen on 17-05-2010 07:20:57 PM
The document is talking about IOS configuration.
It's common that Tcl application taking the parameter from the IOS and change the name in Tcl script
 
For example.
 
 if [infotag get cfg_avpair_exists welcome-prompt] {
          set welcomePrompt [string trim [infotag get cfg_avpair welcome-prompt]]
    } else {
          set welcomePrompt flash:en_bacd_welcome.au
    }
 
Anyway, so far I haven't seen script  using redirect-at-xxx.
 
Did you try it out ?
 
 
Thanks,
 
Yawming

Subject: RE: TBCT TCL Script template
Replied by: Edson Lopes Filho on 11-08-2010 03:04:48 PM
Hi,
 
Is this tbct script working right now? If so, could you share it with us?
 
Best Regards!
 
I am stuck in programing the Cisco voice gateway to support TBCT (ISDN Two B-Channel Transfer) using TCL scripting. I could not find a template from Cisco.com for the scripting and need a help from you guys to see whether any help be available for the template.


Subject: RE: TBCT TCL Script template
Replied by: Yaw-Ming Chen on 11-08-2010 03:38:41 PM
Use Tcl to do TBCT should work but there are many different scenarios to implement TBCT so there is no standard TBCT script can fit all.
 
You also can open a Cisco Developer Support SR to get help.
 
Thanks !
Comments
Tervis Tumbler
Beginner

Hello,

I have simple situation that I want to get the call then transfer it to external number from VoiceGateway. So, when call hits my dial-peer script place call to that external number, and and that point I need both call legs get release.

Is this happening in this part of scrip:

proc act_CallSetupDone { } {

global beep

set status [infotag get evt_status]

if { $status == "ls_000"} {

puts " call has been hairpinned "

puts "CLI_3:END:FAIL "

} elseif {$status == "ls_040" } {

puts "call transfer sucessful status is $status "

puts "CLI_3:ENDASSED "

act_Cleanup

} else {

puts " transfer status is $status "

Let's say customer calls 4444 which is DID, then under Dial-Peer that I make exactly for that called number I send call to external number. Now at this point script receives Ls_040 as a status then call get closed.

Is this how TBCT work. Or I am not understanding this correctly?

Raghavendra G V
Cisco Employee

There are REDIRECT_AT_ALERT and REDIRECT_AT_CONNECT, commonly used for TBCT.

REDIRECT_AT_ALERT -- if doing TBCT, PSTN switch will disconnect transfer by leg and trying to connect to transfer to leg. (there is a chance that transfer to leg won't get connected but transfer by leg disconnected already)

REDIRECT_AT_CONNECT transfer by leg is disconnected only when the transfer to leg is connect.


Apart from TCL script , you also need to configure IOS side for TBCT.


Thanks,

Raghavendra

Tervis Tumbler
Beginner

Thank you,

For the IOS side,  since we set " set callInfo(mode) redirect-at-alert  " in our script, do we still need to do:

" Configuring the Parameter Routing Method" and 

" Configuring the Call Rerouting Method" 

for the IOS configuration?

Raghavendra G V
Cisco Employee

Since you have set CallInfo mode in TCL script, you don't need  IOS config for this.

You need to configure TBCT commands and subscribe to TBCT from Service provider.

Thanks,

Raghavendra

Tervis Tumbler
Beginner

Thank you,

In my case I have one PRI line, so incoming and outgoing call are both in the same PRI.  So, do I still need " trunk group" , "Carrier-id ",  or even "configuring outbound dial-peer for TBCT" .

My understanding says these are all needed  if I have more than one PRI, otherwise the only command needed is:

isdn supp-service tbct under interface serial 0/0/0:23.

Am I correct, or those commands are all needed.

Raghavendra G V
Cisco Employee

If you are using same PRI then no need of trunk group.To use TBCT, the following conditions must be met: 
•PRI interface is subscribed to TBCT service from ISDN service provider. 
•Both calls are voice calls. 
•Both calls use the same PRI or both PRIs are part of the same trunk group. 
•Incoming call is answered. 
•Transfer-to number is placed as a separate call.

please refer http://www.cisco.com/c/en/us/td/docs/ios/voice/ivr/configuration/guide/tcl_c/ivr_tbct.html#wp1011922

Please contact cisco TAC  if you face any issues with  IOS TBCT config.

Thanks,
Raghavendra

Tervis Tumbler
Beginner

Thank you,

I have a question about the template script. First, is this script correct and is it supposed to work?

Second,could you please briefly explain one scenario in that call gets transferred, and how script handed that. I really need to understand this.

In my situation, call hit the voicegateway, the it goes to CUCM and call gets answered. Caller and called person are talking until the called person decide to transfer call. How this activity is being handled by scrip.

The calling number is DID, so the first if is true, then call get connected ( or hairpinned) then it get transfer to external number. I want to know how it gets handle by script, while call is in a CALLACTIVE state, and I do not see :

set fsm(CALLACTIVE,ev_transfer_status) "act_CallSetupDone CALLACTIVE"

how script does the transfer part.

I really appreciated for help.

Raghavendra G V
Cisco Employee

When called party decide to transfer call then the TCL script should get "ev_transfer_request"  event.

Make sure that you use this command initially for reporting transfer event "infotag set evt_report "ev_transfer_request"

For more information please refer TCL IVR programming guide in below location.

Cisco DevNet: Voice Gateway API (VGAPI) - API Documents

Thanks,

Raghavendra

Tervis Tumbler
Beginner

Thank you,

I used  this script, then call rings to 4659 ( which is registered on CUCM) then 4659 transfer calls to external number, but I do not see ev_transfer_status coming to TCL.

I have application under pots dial-peer, for original incoming call to gateway from outside, BUT do I need to have application under the voip dial-peer that match with external number that 4659 transfer caller to, or that is not necessary?

yawming
Cisco Employee

I like to bring this discussion back in forum so please see my reply overther

Content for Community-Ad

This widget could not be displayed.