VoiceGuide IVR Software Main Page
Jump to content

Switch Functionality

Recommended Posts

IS possible to make with VG a switch functionality:

user A calling VG server and call is transfered to User B. User B transfer user A call to User C using VG server.

 

So like:

When A and B are connected user B pressing for example * key then User A waiting on hold, in next module use B tipping user C phone number and when C answered B with keyboard code connecting A and C. Or how to make an conference with A, B, C?

Share this post


Link to post

This is possible. You would basically need to:

 

1. disconnect the 2-line cross-connection,

2. start playing a sound file to A,

3. start playing a sound file to B,

4. load a new outbound call to C.

 

The above all needs to be done using the vgServices interface from VBScript module.

 

On the outbound call to C specify a script that just does a 2-line cross-connection to B upon answer. So as soon as C answers they will be talking to B.

(pass As and Bs line details on the outgoing call - as RVs)

 

B and C can talk for a while, and then when ready set the script so that either B or C can press a button to perform the cross-connection between A and C.

(C can pass it's line details to B using RVSet)

This cross-connection needs to be done using the vgServices interface from VBScript module.

 

B can then hangup.

Share this post


Link to post

Attached scripts demonstrate approach.

 

'ScriptA' runs when new caller dials into system.

'ScriptB' runs when call to B is answered by B.

'ScriptC' runs when call to C is answered by C.

 

If you have any questions please post the actual scripts that you are using yourself, along with .ZIPed up vgEngine and ktTel traces.

scriptA.vgs

scriptB.vgs

scriptC.vgs

Share this post


Link to post

How to finish transfered call (disconnect Person B) and forward Person A to other script module (for example: back to menu)?

 

We use standard transfer module not VG script to transfer call.

Share this post


Link to post

Reacting to second other party hanging up can be done by using the OTHER_LEG_DISCONNECTED path.

(looking at vgEngine trace will let you see what other events get generated that you can attach a path to).

 

Disconnecting the other party from within VoiceGuide script and hanging up the second leg of the call would involve calling Bridge_Disconnect and Line_Hangup vgService APIs.

 

Please see:

 

http://www.voiceguide.com/vghelp/source/html/com_bridge_disconnect.htm

 

http://www.voiceguide.com/vghelp/source/html/com_line_hangup.htm

Share this post


Link to post

I tried to disconnect or hangup connection on second line and VG terminate both connections.

 

Terminating of second line was Ok but in this same time caller A was disconnected too.

 

I used:

set vg = CreateObject("vgServices.CommandLink")
vg.Line_Hangup $RV[Conf_LineId_2]
set vg = Nothing

Share this post


Link to post

You would need to call the Bridge_Disconnect first.

 

Please post vgEngine trace that captures the call as well as the VoiceGuide script used.

 

Please .ZIP up traces before posting.

Share this post


Link to post

So at first:

 

set vg = CreateObject("vgServices.CommandLink")
vg.Bridge_Disconnect $RV[Conf_LineId_1], $RV[Conf_LineId_2]

set vg = Nothing

 

 

and then

 

set vg = CreateObject("vgServices.CommandLink")
vg.Line_Hangup $RV[Conf_LineId_2]

 

set vg = Nothing

 

Share this post


Link to post

In one script like this:

set vg = CreateObject("vgServices.CommandLink")
vg.Bridge_Disconnect $RV[Conf_LineId_1], $RV[Conf_LineId_2]
vg.Line_Hangup $RV[Conf_LineId_2]
set vg = Nothing

Depending on version of VG used you may need to clear some RVs as well.

 

This is why we need to see the vgEngine trace and the VoiceGuide .VGS script as well to fully advise.

Share this post


Link to post

The main call was hung up as the module "disconect and back to menu" that runs the VBScript did not have the "Fail" path defined. As path was not defined the call was ended.

 

Probably best to change VBScript in that module to:

set vg = CreateObject("vgServices.CommandLink")
vg.Bridge_Disconnect $RV[Conf_LineId_1], $RV[Conf_LineId_2]
vg.Line_Hangup $RV[Conf_LineId_2]
vg.Run_ResultReturn $RV_LINEID, "success"
set vg = Nothing

And then use a "Success" path to go to next module.

130818.847  4   2   1       q scr add   evScriptEvent 9007 EV_TIMEOUT_CHECKONSTATE
130818.847  6   2   1       q scr run   evScriptEvent sCode=[EV_TIMEOUT_CHECKONSTATE] iActionID=0, crn=0[0|0|0|0|0][|||||] 00:00:00 max:7|00:00:00.1950112
130818.847  6   2   1       scriptevent EV_TIMEOUT_CHECKONSTATE  0|0|0  || LineState=LS_RUN_WAITTILLFINISHED
130818.847  6   2   1       LsRunWaitTillFinished EV_TIMEOUT_CHECKONSTATE lCode2Str=EV_TIMEOUT_CHECKONSTATE
130818.847  6   2   1       Process.HasExited is true (System.Diagnostics.Process (wscript))
130818.847  6   2   1       task completed. vgm=406, iRunWait=1, iRunWait_ExeResult_NextVgm=0=[]
130818.847  6   2   1       moh not stopping play, bDoNotStopMoh==true
130818.848  6   2   1       ExeResult_NextVgm has not been set. check for Result file.
130818.848  6   2   1       no result file returned from program (VGRUNRESULT_2.TXT).
130818.848  6   2   1       q tel add   cmd_PlayStop [0,0,0,0,0][||||]
130818.848  6   2   1       play  PlaySoundStop ok
130818.848  7   2   1       q tel run   cmd_PlayStop 00:00:00 max:60|00:00:03.4641982
130818.848  6   2   1       HangupCall, source=WaitTillFinished - next module not specified, WorkModeScript=Running_Normal, yLineStateAppPov=[Connected], lPlayId=99, lRecId=350937
130818.848  6   2   1                   moduleTitle=[disconect and back to menu]
130818.849  6   2   1       ScriptWorkingMode set Stopping, (called from HangupCall)
130818.849  6   2   1       ls    set   Disconnect_Pending   (scriptstate=LS_ENDINGCALL)
130818.849  6   2   1 state Hanging up... [WaitTillFinished - next module not specified]

Share this post


Link to post

Have you tried issuing Play_Stop function ?

 

Trace shows:

133716.068  6   2   1 state [ID_menu] Playing wav (\manager11\50021.wav)
133716.069  6   2   1       sound file not played as bDoNotStopMOH set and lPlayId=99

So probably try using:

set vg = CreateObject("vgServices.CommandLink")
vg.Bridge_Disconnect $RV[Conf_LineId_1], $RV[Conf_LineId_2]
vg.Line_Hangup $RV[Conf_LineId_2]
vg.Play_Stop $RV_LINEID
vg.Run_ResultReturn $RV_LINEID, "success"
set vg = Nothing

Also, if you no longer need the $RV[DoNotStopMOH] flag to be set to true then it should be set back to false. That flag affects normal play stop/start.

Share this post


Link to post

Last post is no longer actual because I change DoNotStopMOH=0 and now working properly.

 

Second functionality: whisper message.

 

1. In our script during conference between two callers after pressing digit 9 call forwarding to play module and VG playing prompt but only for caller A not for call target person.

How to declare which person should to hear whisper message?

 

2. after pressing any key (like to play whisper message) during recorded conference VG stopping call recording. Is possible to continue recording until disconnect caller A?

Share this post


Link to post

 

1. In our script during conference between two callers after pressing digit 9 call forwarding to play module and VG playing prompt but only for caller A not for call target person.

How to declare which person should to hear whisper message?

 

 

It is possible to play a whisper to party A side when party B presses a DTMF tone - that would require that the conference be disconnected - and then the message played, but A and B would not be able to hear each other during the play. Conference would then need to be reconnected after the message completes playing.

 

The process of disconnecting calls and playing message can be done like this (note that we save the LineID of the 2nd leg of conference first).

set vg = CreateObject("vgServices.CommandLink")
vg.RvSet $RV_LINEID, "mySave_LineId_2", "$RV[Conf_LineId_2]"
vg.Bridge_Disconnect $RV_LINEID, 0
vg.Run_ResultReturn $RV_LINEID, "success"
set vg = Nothing

Then a normal Play module can be used to play a message, and then calls can be reconnected like this:

set vg = CreateObject("vgServices.CommandLink")
vg.Bridge_Connect $RV_LINEID, $RV[mySave_LineId_2]
vg.Run_ResultReturn $RV_LINEID, "success"
set vg = Nothing

but note that now the 2-line call recording would need to be done like this:

strRet = vg.Record_2Lines_Start($RV[Conf_LineId_2], $RV[Conf_LineId_1], $RV[Conf_LineId_2], "C:\callrecord\$RV[session_id].wav", "")

with $RV[Conf_LineId_2] used as the recording device, as the audo device on $RV[Conf_LineId_1] is now getting used to play the whispers to original caller.

 

 

The script needs to react to DTMFs pressed by party B (the recipient of the 2nd leg of the call transfer). As right now the script that you have moves on past the Call Transfer module (while maintaining the transfer) the DTMF keypresses of party B are not relayed to the script. A change to the engine would be required to make this happen.

 

 

2. after pressing any key (like to play whisper message) during recorded conference VG stopping call recording. Is possible to continue recording until disconnect caller A?

 

2-line call recording should not stop when DTMF tone is pressed. Perhaps the script as it is right now reacts to DTMF presses and ends the call - which also stops the recording...?

Would need to see traces to confirm.

Share this post


Link to post

Ad. 1.

In case we need keep alive bridge connect ( conference ) and playing whisper this working properly for caller A but not for caller B.

Is possible use VGS module to play whisper to caller B or for both caller (a & B )?

 

how to record caller A and whisper prompt in this same time?

 

In case we can't record whole call (1st conference (caller A and Agent B ) , whisper, 2. conference (caller A and agent C ) after disconnecting Agent B) we need to record caller A (client) terms acceptation played in whisper prompt saying like: 'Yes, I accept' and come back to Agent B or C.

 

We can adding few call records (conversation A&B, whisper with terms acceptation, conversation A & C ).

 

Share this post


Link to post

Is possible use VGS module to play whisper to caller B or for both caller (a & B )?

 

Playing sound on leg of call connected to B would need to done using the COM/WCF interface.

VGS script runs on A caller's line.

 

 

how to record caller A and whisper prompt in this same time?

 

 

This was outlined in previous post. If Voice device from B leg of call is used todo 2-line recording then whispers can be played to A using voice device from leg A.

 

If you want to have whispers played to both A and B and doing a 2-line recording at same time then you would need to have additional voice resources in system that are not used for active dti channels and VG would need to use those spare voice resources to do the 2-line recording.

 

 

conversation A&B, whisper with terms acceptation, conversation A & C

 

This scenario is just a normal conference that is then stopped (B disconnects and 2-line call recording stopped), and then a sound file is played to caller, and then a new conference is set up to C (with new 2-line recording started).

If you want the recording of the terms and callers spoken reply to terms then you would need to have separate voice resource to do that.

(recording of the single call like this is possible as well).

the 3 recordings can be then concatenated to give one recording of the entire call.

 

Looks like initiation of playing of 'terms' would be done by agent B - so VGS script would need to see the DTMF keypresses from B.

Share this post


Link to post

Version below will have .VGS script receive a signal when second leg of conference call presses a DTMF key.

This event will now be received even when the .VGS script has moved to another module.

The event will be:

OTHER_LEG_X

where X is the DTMF key.

so in modules that should watch out for this event the paths should be defined like this (dtmf 7 used in example below):

on {OTHER_LEG_7} goto [react to keypress]

 

 

Please update system to this version:

 

[old link removed]

 

Please note that above is a 'pre-release' version of VG v7.4

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×