Guest miva Report post Posted 04/28/2009 05:42 AM Hi, Using VG7. We're utilising a dial and conference module and initiating a bridged call between two lines to connect an incoming call with an external party. What we'd like to do is, during the call, drop the outgoing leg of this call (the external party) on a given criteria (say a DTMF PIN) and initiate another dial and conference to bridge the original caller with another external party. The basic idea is if the first support person can't assist they dial a code and connect the caller to another party (escalating the call). Essentially it's a transfer. Had a look through the help file and searched the forum but was unable to find a solution. Thanks, Ben. Share this post Link to post
SupportTeam Report post Posted 04/28/2009 06:09 AM You should be able to issue a Line_Hangup command (using COM, WCF or Remoting) to the call on the second (outgoing) leg, and then intercept the even on the main leg of the call (the leg that is running the script) and point the path that triggers of that event to another transfer module, which will then do another transfer. See: http://www.voiceguide.com/vghelp/source/ht...line_hangup.htm See the vgEngine trace for which RVs are defined when a transfer is made. You will need to sue one of those RVs as the LineId parameter in the Line_Hangup command call. If you can post traces (vgEngine and ktTel) that capture the first transfer and the issuing of the Line_Hangup command then we can advise what path you will need to declare in the original transfer module to intercept the hangup event sent to the first leg and redirect that event to the next transfer module. Share this post Link to post
Guest enadhazeem Report post Posted 04/28/2009 01:14 PM I have prceisely the same problem. In my scenario, an outside caller comes in: dials a PIN code, and the is transferred on an outgoing leg to the destination. (Typical Phone Debit Card application). When the caller needs to make a second call, he does not have to hang up and call again and having to go through entering the PIN code one more time. All what I need the caller to do is just hit the "*" or "#" to drop the second leg of the call and be prompted for a destination number. Here is the portion of the log file after the conference was started, in this case I pressed "*" to terminate both legs of the call as is the default in the Conference Module 151327.09 3 state [Transfer Call] Blind Dial and Connect to 18005551212# 151327.09 dial search for free lines in list [4] in LineID range [0-4] 151327.09 1 dial device dxxxB1C1 (voice) not in selection list [,4,] 151327.09 1 dial device dxxxB1C1 (intfc) not in selection list [,4,] 151327.10 2 dial device dxxxB1C2 (voice) not in selection list [,4,] 151327.10 2 dial device dxxxB1C2 (intfc) not in selection list [,4,] 151327.10 3 dial not available as used for incoming or VGDialer call or still in guard time after call. iDialoutReadyToDialout=0 151327.10 4 dial reserving: found in comma delimited id list [,4,] 151327.10 3 dial found free dev=4 (LineId=4) in XferDialAndConference 151327.10 3 play on-hold sound file 151327.10 3 state [Transfer Call] Playing (PleaseHold.wav) 151327.10 3 timer clear bForceClear=False 151327.11 3 play start ok, lPlayId=54808 151327.12 4 state dialing 18005551212# (for conference with dxxxB1C3) iXferBridgeCallsWhen=0, sCallProgressOption=CONNECT_IMMEDIATELY (Immediately after dialing.) 151327.12 3 setting CONNECT_IMMEDIATELY as iXferType = XT_DC_BLIND 151327.15 4 lineMakeCall(18005551212#,CONNECT_IMMEDIATELY) (in XferDialAndConference) => 151327.15 3 blind DC transfer (31) 151327.15 3 timer set 30 EV_TIMEOUT_GOTOMODULE 151327.69 4 tw DialogicEvent 135,TDX_SETHOOK,0,0,0,DX_OFFHOOK,CALL_OUTBOUND, 151327.69 4 event TDX_SETHOOK, iCode=135 state=1922 151327.69 4 LsXfer_6_dc_WaitOutcomeOutgoingCall_OutLeg : 135,[TDX_SETHOOK],0,0,0,DX_OFFHOOK,CALL_OUTBOUND, 151327.69 4 LsXfer_6_dc_WaitOutcomeOutgoingCall_OutLeg : iConferenceOtherLegLid=3 iModuleIdx_InLeg=13, opt=[] 151327.69 3 LsXfer_6_dc_WaitOutcomeOutgoingCall_InLeg : [TDX_SETHOOK], 135(EV_UNKNOWN_135),0,0,0,DX_OFFHOOK,CALL_OUTBOUND, 151327.69 3 xferType=31 otherLeg=4 151327.69 3 path {tdx_sethook} not found 151328.43 3 tw PlayEnd 3 54808 151328.43 3 play end id=54808, (current ID) 151328.43 3 event EV_PLAY_FINISHED, iCode=8001 state=1921 151328.43 3 LsXfer_6_dc_WaitOutcomeOutgoingCall_InLeg : [EV_PLAY_FINISHED], 8001(EV_PLAY_FINISHED),0,0,0,,, 151328.43 3 xferType=31 otherLeg=4 151328.43 3 path {ev_play_finished} not found 151328.43 3 tw DialogicEvent 129,TDX_PLAY,54808,0,0,,, 151328.43 3 event TDX_PLAY, iCode=129 state=1921 151328.43 3 LsXfer_6_dc_WaitOutcomeOutgoingCall_InLeg : [TDX_PLAY], 129(EV_UNKNOWN_129),54808,0,0,,, 151328.43 3 xferType=31 otherLeg=4 151328.43 3 path {tdx_play} not found 151329.46 4 tw DialogicEvent 132,TDX_DIAL,0,0,0,,, 151329.46 4 event TDX_DIAL, iCode=132 state=1922 151329.46 4 LsXfer_6_dc_WaitOutcomeOutgoingCall_OutLeg : 132,[TDX_DIAL],0,0,0,,, 151329.46 4 LsXfer_6_dc_WaitOutcomeOutgoingCall_OutLeg : iConferenceOtherLegLid=3 iModuleIdx_InLeg=13, opt=[] 151329.46 4 bridging two lines as sCallProgressOption=CONNECT_IMMEDIATELY 151329.46 3 conf TwoCalls_Bridge 3<=>4 (dxxxB1C3<=>dxxxB1C4) 151329.46 3 play PlayStop ok 151329.46 4 play PlayStop ok 151329.46 3 rvns add [TsRoutedTo]{4} 151329.46 4 rvns add [TsRoutedTo]{3} 151329.46 4 rvns add [Conf_DevName_1]{dxxxB1C3} 151329.46 4 rvns add [Conf_LineId_1]{3} 151329.46 4 rvns add [Conf_LineNbr_1]{3} 151329.46 4 rv add [Conf_DevName_2]{dxxxB1C4} 151329.46 4 rv add [Conf_LineId_2]{4} 151329.46 4 rv add [Conf_LineNbr_2]{4} 151329.46 3 rvns add [Conf_DevName_1]{dxxxB1C3} 151329.46 3 rvns add [Conf_LineId_1]{3} 151329.48 3 rvns add [Conf_LineNbr_1]{3} 151329.48 3 rv add [Conf_DevName_2]{dxxxB1C4} 151329.48 3 rv add [Conf_LineId_2]{4} 151329.48 3 rv add [Conf_LineNbr_2]{4} 151329.48 3 TsRoute dxxxB1C3<=>dxxxB1C4 call 151329.50 3 TsRoute dxxxB1C3<=>dxxxB1C4 SC_FULLDUP: 151329.50 3 state [Transfer Call] bridged with dxxxB1C4 (incoming leg) 151329.50 4 state [Transfer Call] bridged with dxxxB1C3 (outgoing leg) 151329.50 4 event callstate CONNECTED 4 256,0,0 151329.50 3 event CONNECTED, iCode=10256 state=1910 151329.50 3 LsXfer_8_WaitEndCall_InLeg : 10256(EV_UNKNOWN_10256),CONNECTED,256,0,0,,, (iModuleIdx=13) 151329.50 3 path {connected} not found 151329.50 4 LineEvCallState_Connected hDevice=4 params=256,0,0 151329.51 4 WorkingModes tapi= script= LineState().iState=1911 151329.51 4 connected event no action as: outgoing leg of call now awaits end of call (state=waitendcall) 151329.51 4 set LineState().hCall = 4 in LineEvCallState_Connected 3 151329.51 4 tw DialogicEvent 134,TDX_CST,65535,0,0,DE_LCON,, 151329.51 4 event TDX_CST, iCode=134 state=1911 151329.51 4 LsXfer_8_WaitEndCall_OutLeg : 134(), [TDX_CST], 65535,0,0,DE_LCON,, 151329.51 3 LsXfer_8_WaitEndCall_InLeg : 134(EV_UNKNOWN_134),tdx_cst,65535,0,0,DE_LCON,, (iModuleIdx=13) 151329.51 3 path {tdx_cst} not found 151350.46 3 tw dtmf * (3,42,42) 151350.46 3 event *, iCode=42 state=1910 151350.46 3 LsXfer_8_WaitEndCall_InLeg : 42(*),*,0,0,0,,, (iModuleIdx=13) 151350.46 3 path {*} not found 151350.46 3 HangupCall start (* pressed) 151350.46 3 rv add [Hangup Time]{4/28/2009 3:13:50 PM} 151350.46 3 state Hanging up call... [* pressed] 151350.46 3 rvns add [TsRoutedTo]{} 151350.46 4 rvns add [TsRoutedTo]{} 151350.46 3 TsReset dxxxB1C3</>dxxxB1C4 MATCH_ call 151350.51 3 TsReset dxxxB1C3</>dxxxB1C4 MATCH_ => [] 151350.51 4 HangupCall start (2nd leg (Hangup Call)) 151350.51 4 rv add [Hangup Time]{4/28/2009 3:13:50 PM} 151350.51 4 state Hanging up call... [2nd leg (Hangup Call)] 151350.51 4 HangupCall_Common hCall=4 151350.52 4 play PlayStop ok 151350.52 4 timer set 1 EV_TIMEOUT_DOLINEDROP 151350.52 4 state Waiting for a call... 151350.52 4 fnHangupCall end 151350.52 3 HangupCall_Common hCall=3 151350.52 3 play PlayStop ok 151350.52 3 timer set 1 EV_TIMEOUT_DOLINEDROP 151350.52 3 fnHangupCall end 151351.32 3 tw DialogicEvent 134,TDX_CST,191,0,0,DE_TONEON,FAX, 151351.32 3 event FAX, iCode=134 state=900 151351.32 3 LsAwaitingCalls EV_UNKNOWN_134 151351.32 3 event TDX_CST, iCode=134 state=900 151351.32 3 LsAwaitingCalls EV_UNKNOWN_134 151351.43 3 timer fired EV_TIMEOUT_DOLINEDROP 151351.43 3 event EV_TIMEOUT_DOLINEDROP, iCode=9102 state=900 151351.43 3 timer set 2 EV_TIMEOUT_WAITFORIDLEAFTERLINEDROP 151351.43 4 timer fired EV_TIMEOUT_DOLINEDROP 151351.43 4 event EV_TIMEOUT_DOLINEDROP, iCode=9102 state=900 151351.43 4 timer set 2 EV_TIMEOUT_WAITFORIDLEAFTERLINEDROP 151351.50 3 tw DialogicEvent 135,TDX_SETHOOK,0,0,0,DX_ONHOOK,, 151351.50 3 event TDX_SETHOOK, iCode=135 state=900 151351.50 3 LsAwaitingCalls EV_UNKNOWN_135 151351.50 3 event callstate IDLE 3 1,0,0 151351.50 3 WorkingMode@Idle= 151351.50 3 set LineState().hCall = 0 LineEvCallState-LINECALLSTATE_IDLE 151351.50 3 timer clear bForceClear=True 151351.50 3 rec RecSoundStop ok 151351.50 3 play PlayStop ok 151351.50 3 rv add [CallEndTime]{4/28/2009 3:13:51 PM} Share this post Link to post
SupportTeam Report post Posted 04/28/2009 08:13 PM enadhazeem: You will need to upgrade to VoiceGuide v7 in order to be able to drop just the second leg of the call. Share this post Link to post