The solution - pbx - is from Frequentis - specialized equipment. The do SIP-Info - is this the same as SIP-NOTIFY? They were not successful with that test. I'm wondering if I look at specific SIP messaging to try and trigger the hookflash if they can't generate the proper DTMF. Any suggestions?
... View more
ok - we will try that. Thanks. DTMF detection will work for rtp-nte (we've seen that) and hopefully it's supported for sip-info - i'm not in front of my router now, but sip-notify enables dtmf for SIP info? Jim
... View more
Hi Rahavendra, I was at site this AM and tested - I was able to generate a hookflash from the TCL script when using an 8851 registered to the CME via SIP out the local FXO. I applied the TCL to the FXO port and it worked. When I tried using the SIP soft client they have I was not able to make it work. I can see the * but the tone duration is 150 ms whereas I think on the the 8851 it is 380 ms. Or maybe it's a difference of the DTMF encoding - the 8851 uses RTP-NTE, and i'm not sure what their softclient does. Either way - I was able to grab dial tone via the flashhook initiated by the *. Are you able to see what the differences could be? thanks, Jim
... View more
Thanks - I am at site tomorrow and will grab some logs. I think the far end system does not support dtmf-relay rtp-nte. will let you know what I find - thanks. jim
... View more
Tested at site - and on the inbound call from the FXO the call is immediately placed on hold. The caller hears ringback and then MOH from the ACD that is transfering out of the PBX to the FXO on the router. So i think the app is flashing the PBX, but why? it's not lettign the call get through and having the user initiate the flash. I see invalid command "B" in the logs. Any reason why it would be triggered?
... View more
hi I made the changes to jimflash.tcl - applied it to the dial-peer. when the call came in (after a reboot of router) when I hit * I put the far end on hold... awesome. this is my home line and I'm not sure I have capability to transfer so will try at site. I heard dial tone on the ip phone, and on the phone call that was called in - I heard that I was on hold. The mechanism for transfer should just be dialing digits and hanging up as technically the dial tone heard was from the FXS on the other side of the FXO (in this case my home telephone line provider). Will test at site. thanks. Jim
... View more
Hi. The call original ages from the fxo to the 8851 sip phone registered on another CME at 10.10.20.90. Once I had the call established i pressed transfer on the 8851 (far end CME) - and then those event messages on the fxo router were created. I thought that the script triggered those messages based on the transfer button being pressed causing a sip refer - but I guess not. I'll look at it again. There is a sip trunk between the router with the fxo and the CME with the 8851 registered. I figured this was the best way to simulate the environment as they have sip clients registered off of a proxy server and that talks to their 2921 router. They also have similar sip protocol based dual peers. Should I be looking for some messages on the cme side as well - se if it sends sip refer to fxo router where the tcl script is loaded on the pots dial peer? No reason to load the script on the dial beer from the fxo router out to the CME is there? Thanks Jim
... View more
I am going through the logs - I see: p 9 03:52:05.741: (CALLDISCONNECT(2), ev_leg_timer(1)--(act_Cleanup)-->(any_state(0)) Sep 9 03:52:05.741: (IVRACTIVE(3), ev_transfer_request(230)--(act_IVRActive)-->(SENDHFLASH(4)) Sep 9 03:52:05.741: (CALLDISCONNECT(2), ev_media_done(200)--(act_Cleanup)-->(any_state(0)) Sep 9 03:52:05.741: (SENDDIGITS(5), ev_media_done(200)--(act_DigitSend)-->(CALLEND(6)) Sep 9 03:52:05.741: (SENDHFLASH(4), ev_disconnect_done(23)--(act_HookFlash)-->(SENDDIGITS(5)) Sep 9 03:52:05.741: (any_state(0), ev_disconnected(22)--(act_Cleanup)-->(any_state(0)) Sep 9 03:52:05.741: (CALLEND(6), ev_media_done(200)--(act_Cleanup)-->(CALLDISCONNECT(2)) Sep 9 03:52:05.741: (CALLDISCONNECT(2), ev_disconnect_done(23)--(act_Cleanup)-->(any_state(0)) Sep 9 03:52:05.741: (CALLDISCONNECT(2), ev_disconnected(22)--(act_Cleanup)-->(any_state(0)) Sep 9 03:52:05.741: (CONNECTIVR(7), ev_setup_done(257)--(act_IVRConnected)-->(IVRACTIVE(3)) Sep 9 03:52:05.741: (CALL_INIT(1), ev_setup_indication(37)--(act_Setup)-->(CONNECTIVR(7)) Sep 9 03:52:05.741: FSM start state CALL_INIT(1) Sep 9 03:52:05.741: //-1//AFW_:EE3E7F4100000:/Tcl_Link: Script hookflash succesfully linked. Sep 9 03:52:05.741: //-1//AFW_:EE3E7F4100000:/AFW_ExecEnv_SetScript: Num of packTable entries: 26 Sep 9 03:52:05.741: //-1//AFW_:EE3E7F4100000:/AFW_ExecEnv_RestoreDataBackup: Script DataArea empty, do backup Sep 9 03:52:05.741: //-1//AFW_:EE3E7F4100000:/AFW_ExecEnv_RestoreDataBackup: Script TokenTable empty, do backup Sep 9 03:52:05.741: //-1//AFW_:EE3E7F4100000:/AFW_ExecEnv_Initiate: Execenv = 0x3E7F4100 Sep 9 03:52:05.741: //-1//AFW_:EE3E7F4100000:/AFW_ExecEnv_SetCallCorID: Sep 9 03:52:05.741: CallCorID is Ig}WW,p so I think I'm close - as I'm seeing the ev_transfer_request and the sendhflash if this is working i'll need to somehow modify this so it's not tied to this specific IVR number of 253 (I sent it to 101) - it would be good to have this invoked and have the voice port connect to the appropriate number via the connection plar opx XXX command and not have it hardwired. then - if this is working it could be used for all numbers. anyways - was exciting to see the SENDHFLASH message.... cheers.
... View more
this is the result of using the script that is suppose to take the refer and do a hookflash. The issue is the parameters = it was originally written to reference a IVR at ext 253. I used the same parameters but pointed it to 101 and removed the connection plar opx 101 command. Instead the service hookflash command in the dial-peer voice 201 pots invoked the tcl and it dialed 101 for me - from there once answered at 101 I hit the transfer key in an attempt to generate a sip refer to trigger a hookflash... attached are the debugs. thanks
... View more
I realize I used the script for using *8 to detect a transfer request instead - here is what happened after I hit *8 I'll load the other script and try to set the variables properly. thanks.
... View more
Hi, I was able to reproduce my diagram and I made calls in - I don't think I have the script initialized properly as there are some parameters I think I need to populate - perhaps you can verify - attached is the debug and script and configuration of the router connected to the FXO. Call came in from PSTN onto FXO and was Connection PLAR OPX to 101. 101 is a sip phone on a cme system. once the call was up I would hit transfer - I indicated where in the logs - to see what would happen - after the timeout I attempted to transfer again, and then I hung up.
... View more
Raghanvendra, I now have the exact scenario as per my diagram above. I will receive an inbound call via the FXO. Send it out via PLAR to proxy, with a SIP phone registered to it. Once answered i will attemp to transfer and see what messages get generated based on the recommended debug. I will use: voice port 0/2/0 description "FXO port to PBX" connection plar opx 101 Dial-peer 101 voip description "dial peer to sip proxy with extension 101" destination-pattern 101 session target ipv4: 10.10.10.90 session protocol sipv2 codec g711ulaw dtmf-relay rtp-nte dial-peer voice 201 pora port 0/2/0 service jimflash And i will look for the messages - the tcl script i load is the one i shared with you over email, not the one pasted above from Bryan Deaver that is looking for DTMF events - correct? I'll grab the logs and see what is going on. Thanks so much for the assistance. Jim
... View more
Raghavendra and Yaw-Ming, i am testing as follows - so i may be introducing different errors... while i wait for my FXO card for my lab i'm running the 2911 in CME mode and have a SIP registered phone. Extension 101. I also have a FXS voice-port 0/1/0 and reference that from dial peer 200 pots service jimflash destination-pattern 200 port 0/1/0 The jimflash is the tcl that has a lot of parameters, including an ivr number, etc To test i dial 200 from 101 - i would hope that gets 2 call legs set up. i then am looking for any events i can generate from the SIP phone (dtmf, sip REFER, etc) that i can use to trigger the hookflash to the FXS port. Again - this is a quick lab based on the fact that i don't have my fxo in place - i would think that hooklash should work the same to either fxo or fxs. I'm not referencing the service or call appliation in the CME portion, when i do - calls don't complete , so i think it only should exist in the dial-peer portion of the call. using the above log captures - there is a lot of information, but i'm not seeing "ev_transfer_request" at all. I tried referencign the above tcl script that Bryan Deaver did where he looks for DTMF and applied that to the dial peer via service hookflash command (both jimflash and hookflash are in the flash:) and i saw no dtmf events. I am going to be at the site tomorrow and i can load both tcl - i just want to make sure i'm invoking them properly via the dial-peer sub command. I will be using FXO tomorrow and the call that comes in via sip will be either a cme registered sip client (7841) or the remote soft client tied to the proxy server and referenced with a dial-peer voice xxxx voip command. Anyways - if you can confirm where i should put the service <tcl application name> if it's needed other than on those dial peers. I don't know if it will get invoked properly via CME. thanks, Jim
... View more
Yawming - you have the callflow exactly. External caller A calls hunt group 5000 (the ACD) - that gets routed to the FXS lines on the PBX and then PLAR'd via the FXO to the SIP extensions. Say 1001 answers on the SIP endpoint. They require to transfer BACK through the FXS-FXO That's where we need the hookflash out to the FXO, grab dialtone off the pbx, then transfer back into the pbx. I thought originally we could look for a SIP REFER but they are very capable on the SIP side, and can program a "flash" key if required. I think they can send "*8" or any combination of DTMF to be recognized to trigger the send hookflash to the call let attached to the FXO. I found an older TCL script that Bryan Deaver put toghether and haven't been back to the customer site yet to test - and I only just got my lab up and working yesterday but my FXO is not recognized.... Does that help clear up the call flow - but yes - you are 100% correct on the requirement. --- this was Bryan Deaver's script that references using DTMF as a reference. app_hookflash.tcl # # written by Bryan Deaver based on the default session application. # This is an example of converting a * dtmf event into hookflash out the fxo port. # # This is written as is with no claims of support. It has been shown to work # to convert a * h245-alhpanumeric event from callmanager while running on a c2800 # gateway running 12.4(20)T. There are other modifications that would be done # for example look at * 8 before forwarding the other digits. # Or converting an A/B/C/D dtmf event into hookflash to interwork with # other applications. If you find a useful modification, please do drop me a note # at bdeaver@cisco.com # # This is based upon the default session application as seen with # "show call application voice session" on the router. This provides an # easy start by which to modify scripts to fit your needs. # # The modification of the session script was to add the act_ProcessDTMF function, # add a section to look for digits coming in from the outgoing call leg # as well as add an entry to the fsm table. # #--------------------------------- # Example Script #----------------- proc act_Setup { } { global dest global beep set beep 0 if { [infotag get leg_isdid] } { set dest [infotag get leg_dnis] leg proceeding leg_incoming 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" # use invalid-number cause code leg disconnect leg_incoming -c28 call close } } # here is the process that intercepts the '*' and sends out a hookflash proc act_ProcessDTMF { } { # get the dtmf and duration set dtmf_value [infotag get evt_digit] set dtmf_duration [infotag get evt_digit_duration] if {$dtmf_value == "A"} { leg sendhookflash leg_incoming } else { # ok, not a * so playout the dtmf event with the same duration leg senddigit leg_incoming $dtmf_value -t $dtmf_duration } } proc act_CallSetupDone { } { global beep set status [infotag get evt_status] if { $status == "ls_000"} { set creditTimeLeft [infotag get leg_settlement_time leg_all] if { ($creditTimeLeft == "unlimited") || ($creditTimeLeft == "uninitialized") } { puts "\n Unlimited Time" } else { # start the timer for ... if { $creditTimeLeft < 10 } { set beep 1 set delay $creditTimeLeft } else { set delay [expr $creditTimeLeft - 10] } timer start leg_timer $delay leg_incoming } # setup the outgoing leg to monitor for digits set param(consumeDigit) true set param(enableReporting) true leg collectdigits leg_outgoing param } else { puts "Call [infotag get con_all] got event $status collecting destination" call close } } 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_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 } #------------------ # State Machine #---------------------------------- set fsm(any_state,ev_disconnected) "act_Cleanup same_state" set fsm(any_state,ev_digit_end) "act_ProcessDTMF 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(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
... View more
Thanks – i’m trying now – that script had a bit much for me to process. I think I just need to focus on identifying the inbound and outbound call legs and then identifying a message to trigger the transfer and hookflash – i’m setting up the router right now. Thanks for the tips i’ll see where I get today. jim Sent from Mail for Windows 10
... View more