
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 01-24-2014 01:41 AM
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:END

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
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 !
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
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?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
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
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
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?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
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
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
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.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
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
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
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.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
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
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
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?

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
I like to bring this discussion back in forum so please see my reply overther