cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
112
Views
0
Helpful
0
Comments
cdnadmin
Level 11
Level 11
This document was generated from CDN thread

Created by: Marat Rabidinov on 26-05-2011 03:54:15 AM
I need to create a tcl script, which will be initiated by incoming call into Cisco Router. The script must make a multiple calls to many phones and play media files.
But when initiated call is down, the script is stoped. But I need that the script goes on to make a calls and plays a media files.
 
How can I make to not stop execution of tcl script after the initiated call is closed?

Subject: RE: How to go on tcl script execution after call close
Replied by: Max Lamovich on 26-05-2011 05:07:16 AM
Hi Marat!

You need use session tcl application, You can find about that in "Tcl IVR 2.0 Programming Guide" chapter "Application Instances" (1-38)
This type of tcl Application running(initiated) without incoming call and in this application You can make external request through http or radius,
get data from request and start outgoing call.

I wrote similar application, but without play sound.


service srvtest flash:service.tcl
  param debug 0
  param cbsrvnum ______NumberforCALL____

session
  start WatchCall srvtest




set myname "Deamon"

proc act_Terminate { } {
    msgSend "act_Terminate"
    msgSend "received a terminate event, closing up."

    call close
}

proc act_Session { } {
    init_data

    msgSend "act_Session"

    set r [service register data_service]

    msgSend "Register of data_service returned $r"

    act_Timer
}

proc init_data { } {
    global debug
    global cb_srv_num
   
    set debug [string trim [infotag get cfg_avpair debug]]
    set cb_srv_num [string trim [infotag get cfg_avpair cbsrvnum]]

    msgSend "DEBUG: $debug"
    msgSend "CALLNUM: $cb_srv_num"

}

proc get_data { } {
    set time [clock format [clock seconds] -format "%H:%M:%S"]

    msgSend "get_data $time"
   
    aaa authenticate " CallBack" ""
}

proc act_AuthDone { } {
    msgSend "act_AuthDone"
   
    set auth_st [infotag get evt_status]
   
    msgSend "status AU: $auth_st"
   
    if { $auth_st != "au_000"} {
        msgSend "Not authenticate"
    } elseif { $auth_st == "au_000" } {
        msgSend "authenticate"
        timer stop call_timer0
        act_CallSetup
        fsm setstate CALL
    } else {
        msgSend "Not authenticate end"
    }
}

proc act_Timer { } {
    msgSend "act_Timer"

    get_data
   
    timer start call_timer0 10
}

proc act_CallSetupDone { } {
    msgSend "act_CallSetupDone"

    set inf_leg [infotag get evt_legs]
    msgSend "ID_LEG:$inf_leg"
   
    leg disconnect $inf_leg
   
    set leg_st [infotag get evt_status]
    msgSend "Status:$leg_st"   
}

proc act_CallDone { } {
    msgSend "act_CallDone"

    #set ev [infotag get evt_event]
    #msgSend "Event $ev"
    #set ev [infotag get evt_status]
    #msgSend "Status event $ev"

    act_Timer
}

proc act_CallSetup { } {
    msgSend "act_CallSetup"

    global cb_srv_num
   
    set destination $cb_srv_num
    set callInfo(accountNum) ____Account____
    set callInfo(originationNum) 1212121212
    set callInfo(redirectCount) 1
    set callInfo(alertTime) 1
    leg setup $destination callInfo leg_outgoing
}

proc act_Ignore { } {
    set ev [infotag get evt_event]
    msgSend "is ignoring event $ev"
}

proc msgSend {str} {
    global debug
    global myname
    if {$debug == 1} { puts "$myname $str" }
}

#----------------------------------
#   State Machine
#----------------------------------
set fsm(any_state,ev_session_indication) "act_Session           same_state"
set fsm(any_state,ev_session_terminate)  "act_Terminate         same_state"
set fsm(any_state,ev_call_timer0)        "act_Timer             same_state"
set fsm(any_state,ev_authenticate_done)  "act_AuthDone          same_state"

set fsm(CALL,ev_call_timer0)             "act_Timer             same_state"
set fsm(CALL,ev_setup_done)              "act_CallSetupDone     same_state"
set fsm(CALL,ev_disconnect_done)         "act_CallDone         start_state"
set fsm(CALL,ev_disconnected)            "act_CallDone         start_state"

set fsm(any_state,ev_disconnected)       "act_Timer             same_state"
set fsm(any_state,ev_any_event)          "act_Ignore            same_state"

fsm define fsm start_state


____Account____ - for radius
______NumberforCALL____ - Number for outgoing call

Subject: RE: How to go on tcl script execution after call close
Replied by: Raghavendra Gutty Veeranagappa on 26-05-2011 05:34:00 AM
Hi Marat,

please raise developer support case using below link we will help you to create tcl script for your requirements, since forum is to discuss only simple queries.

http://developer.cisco.com/web/devservices/alldevs

Thanks,
Raghavendra
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:

Quick Links