cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
10069
Views
0
Helpful
14
Replies

TCL IVR does play busy tone to PSTN callers

KY_
Enthusiast
Enthusiast

Hello Everyone

 

I have a problem about TCL IVR in my case  gw does not play busy tone pstn callers. Do you have any ideas what causes the trouble? I have seen smilar case as follows. Call legs is return ls_007  I think some more parameters needs to be added.

 

Call FLow....

ITSP....E1....ISRG2(2901).....H323 Gw....CUCM... Ip Phone...

 

https://community.cisco.com/t5/collaboration-documents/tcl-script-does-not-allow-busy-tone-to-pstn-callers/ta-p/3626333

 

  1. check leg setup status if return ls_007 then play busy tone

    2. replace leg setup by "handoff appl leg_incoming default "DESTINATION=$dnis" . Handoff back to IOS let IOS handle busy tone. But watch if displayinfo is passed.

 

calling number: 05342992223

called number:   02324638011  then I  dial : 8097

 

You can see my tcl script and gw trace attached file.

 

1 ACCEPTED SOLUTION

Accepted Solutions

Looks like some extra character added for below line, while your are converting text file to tcl file.

o;?#TCL IVR Script, accepts calls and plays welcome AA, if busy or no answer, IVR responds

 

You need to make below changes in your original TCL script and try.

proc act_InvalidExt { } {
    global langselect
    global pilotno

    puts "\n(act_InvalidExt) Entering Procedure\n"
    set status [infotag get evt_status]
        puts "\nDEBUG STATUS: $status\n"
    if { $status == "ls_007" } {
      playtone leg_incoming tn_busy
      timer start leg_timer 5 leg_incoming
      fsm setstate CLEANUP
      return
    }
    playtone leg_incoming tn_none   
    if { $status != "ls_000"} {
                puts "\n(act_InvalidExt) Status is not 000. (Status=$status)\n"

                if { $langselect == "Turkish" } {
                        puts "\n(act_InvalidExt) Playing Turkish prompt\n"
                        media play leg_incoming flash:Transfer_To_Operator.au
                }

                if { $langselect == "English" } {
                        puts "\n(act_InvalidExt) Playing English prompt\n"
                        media play leg_incoming flash:Transfer_To_Operator.au
                }

                leg setup $pilotno callInfo leg_incoming
                puts "\n(act_InvalidExt) Cannot connect so Xfer to OP ($pilotno)\n"
            }
}

 

set fsm(SELECTOPT,ev_collectdigits_done)        "act_Collected  TRANSFERTOEXT"
set fsm(SELECTOPTENG,ev_collectdigits_done)     "act_eng_Collected  TRANSFERTOEXT"

 

Thanks,

Raghavendra

View solution in original post

14 REPLIES 14

yawming
Cisco Employee
Cisco Employee

set fsm(TRANSFERTOEXT,ev_setup_done) "act_InvalidExt same_state"

 

In proc act_InvalidExt I don't see you handle ls_007

 

for example:

 

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
}
}

Hi Yawming

 

In my case do need upload  busy.au file  on the flash ? ist it possible to generate busytone  without this file ?

 

set busyPrompt _dest_busy.au

 

Can you create it on my tcl script ?

 

Thanks

Hi ,

 

You can use below command to play busy tone when you receive ls_007.

playtone leg_incoming tn_busy

 

Thanks,

Raghavendra

H, Ravindra

 

Where should be use this command ? on dp delevel or TCL script ?

 

Can you please do it for me on my TCL file ?

 

Thanks

I don't see you haven't set state "TRANSFERTOEXT" anywhere, when you are planning to call procedure act_InvalidExt.

you need to call this in procedure when TCL script get ev_setup_done event with status code ls_007
if { ($status == "ls_007") } {
   playtone leg_incoming tn_busy
}

What you are planning to do after playing busy tone , close the call ?

 

Thanks,
Raghavendra

Yes,

 

When the pstn callers hear busy tone then call should be close... Can you create it for me ? I'm not familar TCL

 

 

Thanks

You can test with the attached script, added below code in the script.

if { $status == "ls_007" } {
      playtone leg_incoming tn_busy
      timer start leg_timer 5 leg_incoming
      fsm setstate CLEANUP
      return
    }

 

Thanks,

Raghavendra

Thank you Raghavendra, I will make test and update you. 

KY_
Enthusiast
Enthusiast

Hello I Tried this tcl but its not activated  when the tcl is changed  it does not find by gw.

I found the logs provide but its already cofnigured on dp 65 

 

 

dial-peer voice 65 pots
service ivr
incoming called-number 0654645645
direct-inward-dial
forward-digits all

 

This is working TCL.

 

application
service IVR tcl.tcl

 

Non working TCL

 

application
service IVR test_ivr.tcl

 

Nov 29 09:29:50.420: %CALL_CONTROL-6-APP_NOT_FOUND: Application ivr in dial-peer 65 not found. Handing callid 410703 to the alternate app .

 

KY_
Enthusiast
Enthusiast

Collected working and non workin calls.

 

working tcl: test_ivr.tcl

non working: TCL.tcl

Looks like some extra character added for below line, while your are converting text file to tcl file.

o;?#TCL IVR Script, accepts calls and plays welcome AA, if busy or no answer, IVR responds

 

You need to make below changes in your original TCL script and try.

proc act_InvalidExt { } {
    global langselect
    global pilotno

    puts "\n(act_InvalidExt) Entering Procedure\n"
    set status [infotag get evt_status]
        puts "\nDEBUG STATUS: $status\n"
    if { $status == "ls_007" } {
      playtone leg_incoming tn_busy
      timer start leg_timer 5 leg_incoming
      fsm setstate CLEANUP
      return
    }
    playtone leg_incoming tn_none   
    if { $status != "ls_000"} {
                puts "\n(act_InvalidExt) Status is not 000. (Status=$status)\n"

                if { $langselect == "Turkish" } {
                        puts "\n(act_InvalidExt) Playing Turkish prompt\n"
                        media play leg_incoming flash:Transfer_To_Operator.au
                }

                if { $langselect == "English" } {
                        puts "\n(act_InvalidExt) Playing English prompt\n"
                        media play leg_incoming flash:Transfer_To_Operator.au
                }

                leg setup $pilotno callInfo leg_incoming
                puts "\n(act_InvalidExt) Cannot connect so Xfer to OP ($pilotno)\n"
            }
}

 

set fsm(SELECTOPT,ev_collectdigits_done)        "act_Collected  TRANSFERTOEXT"
set fsm(SELECTOPTENG,ev_collectdigits_done)     "act_eng_Collected  TRANSFERTOEXT"

 

Thanks,

Raghavendra

My original tcl as follows , where should be added additonal l rows ? Im confuse that point.

 

proc act_InvalidExt { } {
global langselect
global pilotno

puts "\n(act_InvalidExt) Entering Procedure\n"
set status [infotag get evt_status]
puts "\nDEBUG STATUS: $status\n"
playtone leg_incoming tn_none
if { $status != "ls_000"} {
puts "\n(act_InvalidExt) Status is not 000. (Status=$status)\n"

if { $langselect == "Turkish" } {
puts "\n(act_InvalidExt) Playing Turkish prompt\n"
media play leg_incoming flash:Transfer_To_Operator.au
}

if { $langselect == "English" } {
puts "\n(act_InvalidExt) Playing English prompt\n"
media play leg_incoming flash:Transfer_To_Operator.au
}

leg setup $pilotno callInfo leg_incoming
puts "\n(act_InvalidExt) Cannot connect so Xfer to OP ($pilotno)\n"
}
}

proc donothing { } {
puts "\n(donothing) Cannot end up here\n"
}

init
set delay 5

#----------------------------------
# State Machine
#----------------------------------

set fsm(any_state,ev_disconnected) "act_Cleanup same_state"
set fsm(CALL_INIT,ev_setup_indication) "act_Setup same_state"
set fsm(SELECTOPT,ev_collectdigits_done) "act_Collected same_state"
set fsm(PLACECALL,ev_leg_timer) "act_Cleanup same_state"
set fsm(SELECTOPTENG,ev_collectdigits_done) "act_eng_Collected same_state"
set fsm(CLEANUP,ev_leg_timer) "act_Cleanup same_state"
set fsm(TRANSFERTOOP,ev_media_done) "optransfer same_state"
set fsm(TRANSFERTOEXT,ev_collectdigits_done) "exttransfer same_state"
set fsm(TRANSFERTOEXT,ev_setup_done) "act_InvalidExt same_state"

fsm define fsm CALL_INIT

please make highlighted changes mentioned in the above post into your original script.

 

Thanks,

Raghavendra 

 

 Hi Raghavendra
 
 
 

 TCL is working perfectly. Thank you :)

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: