cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
550
Views
0
Helpful
4
Replies

IVR TCL question, please help

Alex55555
Level 1
Level 1
  1. I make a call to number ZZZ;
  2. I hear welcome.au prompt;
  3. I dial valid extension and see call is transferred to that extension;
  4. I see incoming call on the extension number;
  5. I decline the call on the extension called number;
  6. Then I see that my call is not disconnected (as it supposed to be) but it is then transferred to operator number 1330. Why? I want it to be disconnected.

 

How to disconnect the call after decline on called number?

 

Here my config:

Incoming dial-peer:

dial-peer voice 5 voip

description Optimum SIP trunk Incoming

translation-profile incoming SIPInbound

service ivr_optimum

session protocol sipv2

incoming called-number ZZZ

voice-class sip bind control source-interface FastEthernet0/1

voice-class sip bind media source-interface FastEthernet0/1

dtmf-relay rtp-nte sip-notify

codec g711ulaw

 

Application:

application

service ivr_optimum flash:optimum/optimum.tcl

  paramspace english language en

  paramspace english index 0

  param aa-pilot ZZZ

  param operator 1330

  paramspace english location flash:optimum/

 

Files on router flash:

voice02#sh flash: | i optimum/

8185 Nov 6 2020 16:17:18 +03:00 optimum/optimum.tcl

00523 Nov 6 2020 16:18:46 +03:00 optimum/en_welcome.au

 

TCL script in the attachment (I found it in the Internet and changed only name not itself).

 

Besides this problem all is working well.

4 Replies 4

Alex55555
Level 1
Level 1

# Script Locked by: khom
# Script Version: 2.0.2.0
# Script Name: its_CISCO
# Script Lock Date: Wed Jul 2 09:22:04 2003
#------------------------------------------------------------------
#
# November 27, 2001, Satish Ananthanarayana (sanantha@cisco.com)
#
# Modification History:
# --------------------
# May 20, 2008, Jasmine Kalaiselvan (jkalaise@cisco.com)
#
# Modified the script to do leg setup and then handovers the call
# to Default IOS app. DDTS for this change: CSCsq35953 CSCsl08148
#
# --------------------------------------------------------
# Copyright (c) 2001 by cisco Systems, Inc.
# All rights reserved.
#------------------------------------------------------------------
#
# Description:
# This is a TCL IVR script for the IOS Telephony Service and
# Call Manager (CM) offload scenario. The IVR script plays a
# welcome prompt to the user and prompts the user to enter a
# destination number when the user dials the auto-attendant number
# (aa-pilot configured in the CLI). The script collects the digits that
# the user has entered and hands the call to the enhanced session
# application (named Default). The session application
# returns once there is a disconnect (if the call is established)
# or if a call setup problem occurs.
# The operator support is also included, if the user does not dial
# any number or enters "0" the user will be transfered to an operator
# (if operator number is configured in the CLI). If the user enters
# an invalid number, the user will be prompted again to re-enter
# the number for upto 3 times before disconnecting the call.
#
#-------------------------------------------------------------------
#


proc init { } {
global param1
global selectCnt
global callInfo
global legConnected
global maxExtensionLen

set param1(interruptPrompt) true
set param1(abortKey) *
set param1(terminationKey) #

set selectCnt 0
set legConnected false
}

proc init_ConfigVars { } {
global destination
global aaPilot
global oprtr
global maxExtensionLen

# aa-pilot is the IVR number configured on the gateway to be used by the customer
# operator is the operator number for assisted calling

if [infotag get cfg_avpair_exists aa-pilot] {
set aaPilot [string trim [infotag get cfg_avpair aa-pilot]]
} else {
set aaPilot "NONE"
}
if [infotag get cfg_avpair_exists operator] {
set oprtr [string trim [infotag get cfg_avpair operator]]
} else {
set oprtr "NONE"
}
if [infotag get cfg_avpair_exists max-extension-length] {
set maxExtensionLen [string trim [infotag get cfg_avpair max-extension-length]]
if { $maxExtensionLen < 0 } {
call close
}
} else {
set maxExtensionLen 5
}
}

proc init_perCallVars { } {
puts "\nproc init_perCallvars"
global ani
global digit_enabled
global fcnt
global retrycnt
global dnis

set fcnt 0
set retrycnt 6
set ani ""
set dnis ""

set digit_enabled "FALSE"
set ani [infotag get leg_ani]
puts "\nANI $ani"
set dnis [infotag get leg_dnis]
puts "\nDNIS $dnis"
}

proc act_Setup { } {
global param1
global selectCnt
global dest
global beep
global callInfo
global dnis
global fcnt
global aaPilot
global oprtr
global busyPrompt
global legConnected

puts "proc act_Setup"
set busyPrompt _dest_unreachable.au
set beep 0
init_perCallVars
infotag set med_language 1

if { ($dnis == "") || ($dnis == $aaPilot) } {
leg setupack leg_incoming
leg proceeding leg_incoming
leg connect leg_incoming
set legConnected true

puts "\nNo DNIS\n"
set param1(dialPlan) true
leg collectdigits leg_incoming param1

media play leg_incoming _welcome.au %s1000 _enter_dest.au
} else {
set fcnt 6
leg setupack leg_incoming
#handoff callappl leg_incoming default "DESTINATION=$dnis"
set callInfo(alertTime) 30
leg setup $dnis callInfo leg_incoming
fsm setstate HANDOFF
}


}

proc act_GotDest { } {
global dest
global maxExtensionLen
global destExtLen
global callInfo
global oprtr
global busyPrompt
puts "\n proc act_GotDest"
set status [infotag get evt_status]
set callInfo(alertTime) 30
puts "\n STATUS: $status"
puts "\n MAXEXTENSION: $maxExtensionLen"
if { ($status == "cd_004") } {
set dest [infotag get evt_dcdigits]

set destExtLen [string length $dest]
puts "\n DESTLEN: $destExtLen"
set extLength [expr $maxExtensionLen - $destExtLen]
if { $dest == "0" } {
set dest $oprtr
}
puts "\n extLength: $extLength"

#handoff callappl leg_incoming default "DESTINATION=$dest"
if {($maxExtensionLen > 0) && ($extLength >= 0)} {
leg setup $dest callInfo leg_incoming
} else {
set busyPrompt _bacd_invalidoption.au
act_Select
}
} elseif { ($status == "cd_001") || ($status == "cd_002") } {
set dest $oprtr
#handoff callappl leg_incoming default "DESTINATION=$dest"
leg setup $dest callInfo leg_incoming
} else {
if { $status == "cd_006" } {
set busyPrompt _dest_unreachable.au
}
puts "\nCall [infotag get con_all] got event $status collecting destination"
set dest [infotag get evt_dcdigits]
if { $dest == "0" } {
set dest $oprtr
#handoff callappl leg_incoming default "DESTINATION=$dest"
leg setup $dest callInfo leg_incoming
} else {
act_Select
}
}
}

proc act_CallSetupDone { } {
global busyPrompt
global legConnected

set status [infotag get evt_status]
if { $status == "ls_000" } {
puts "\n Connection success"
handoff appl leg_all default
act_Cleanup
} else {
if { $legConnected == "false" } {
leg proceeding leg_incoming
leg connect leg_incoming
set legConnected true
}
puts "\n Call failed. Play prompt and collect digit"
if { ($status == "ls_007") } {
set busyPrompt _dest_busy.au
}
act_Select
}
}

proc act_Select { } {
global destination
global promptFlag2
global destBusy
global param1
global fcnt
global retrycnt
global busyPrompt

puts "\n proc act_Select"

set promptFlag2 0
set param1(interruptPrompt) true
set param1(abortKey) *
set param1(terminationKey) #
set param1(dialPlan) true
set param1(dialPlanTerm) true

leg collectdigits leg_incoming param1
if { $fcnt < $retrycnt } {
media play leg_incoming $busyPrompt %s500 _reenter_dest.au
incr fcnt
fsm setstate GETDEST
} else {
act_DestBusy
}
}

proc act_DestBusy { } {
puts "\n proc act_DestBusy"
media play leg_incoming _disconnect.au
fsm setstate CALLDISCONNECT
}

proc act_Cleanup { } {
call close
}

requiredversion 2.0
init

init_ConfigVars
#----------------------------------
# State Machine
#----------------------------------
set fsm(any_state,ev_disconnected) "act_Cleanup same_state"

set fsm(any_state,ev_disconnect_done) "act_Cleanup same_state"

set fsm(CALL_INIT,ev_setup_indication) "act_Setup GETDEST"

set fsm(GETDEST,ev_collectdigits_done) "act_GotDest HANDOFF"

#set fsm(HANDOFF,ev_returned) "act_CallSetupDone CONTINUE"

set fsm(HANDOFF,ev_setup_done) "act_CallSetupDone CONTINUE"

set fsm(CALLDISCONNECT,ev_media_done) "act_Cleanup same_state"

fsm define fsm CALL_INIT
# Script Approval Signature: C/775c

 

Alex55555
Level 1
Level 1

any idias?

still need it

thank for share

IONIA
https://ionia.com.vn/6-cach-lua-chon-may-loc-nuoc-ion-kiem-tot-nhat

Alex55555
Level 1
Level 1

what the use of the link?

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: