Guest miva Report post Posted 08/02/2016 01:10 AM Some of our outbound calls do not detect callers on the other end when they speak. Sometimes the person answering will try and say hello and wait 20 times in a row without detection. Most calls work, but some take around 10 seconds to react to someone speaking. Not sure if this is background noise, VM detection etc. As these calls are going to people that are expecting them, is it possible after the call is answered and where normally they would say hello, instead they press a DTMF key to trigger connection, vs talking and waiting to see if it gets detected? Share this post Link to post
SupportTeam Report post Posted 08/02/2016 01:24 AM We would need to see the trace that captures the outgoing call. Please post the vgEngine traces and we would then be able to comment on what has happened during that call. Please .ZIP up any traces before posting. Share this post Link to post
SupportTeam Report post Posted 08/02/2016 01:28 AM It is possible to set up the system to just get call recipient to press a DTMF tone to confirm that a live person has answered the call. Would you like to use that in conjunction with the usual answering machine detection? Or would you like the system to just play "Press 1 to accept call" straight after the outgoing call gets answered ? Share this post Link to post
Guest miva Report post Posted 08/02/2016 10:41 PM Yes we would like to use it in conjunction with live answer detection. Thanks for your reply. Share this post Link to post
SupportTeam Report post Posted 08/03/2016 12:59 AM Are the calls going out on analog lines or over VoIP or ISDN trunks ? If VoIP or ISDN is used then VoiceGuide will be advised the exact moment at which the handset was picked up - and it can then then immediately start a script that starts by playing a message "press1 to accept the call". Then, after playing that message once, the VoiceGuide script should go to a record module. This is in case call was answered by an answering machine or voicemail system. If the record module completes recording due to silence then you can assume that the call was answered by an answering machine or voicemail system - and the script can then play a message that you would like to leave. The "on {silence}" path is taken if the recording completes due to silence. Please see: http://www.voiceguide.com/vghelp/source/html/modrecord.htm Share this post Link to post
Guest miva Report post Posted 08/03/2016 06:35 AM Please find trace attached. The call at 14:07 to 0477359 (last three digits left off for privacy) is an example, the called party said they waited around 40 seconds for it to detect their voice saying "hello" multiple times. They did pause for silence to see if it worked each time. Re the on silence detection, the problem is getting to the script. Can we do <OnSilence> in the XML file that initiates the dial out? Yes the system is running on ISDN lines. 0803_1047_vgEngine.zip Share this post Link to post
SupportTeam Report post Posted 08/03/2016 07:01 AM This is an E1 ISDN system and the provided trace captures 57 outgoing calls that were answered. Trace shows that at 14:07 the call to 0477359XXX was answered and Dialogic card recognized it as a Human answer. The script WilsarOut.vgs was started, playing the "WelfareCheck.wav,month08.wav,place03.wav,12.wav,0.wav, ... etc" sound files. Call recipient hung up 2 seconds after the sound files commenced playing (4 seconds after call was answered). Here is the summary of events on that call: Line 16690: 140708.513 6 16 5 state Dialing 0477359XXX... Line 16868: 140713.205 20 16 5 state Dialing 0477359XXX... Ringing... Line 17040: 140717.336 20 16 5 ev CallState GCEV_CONNECTED, crn=6020010, Line 17054: 140717.337 6 16 5 state Dialing 0477359XXX... Ringing..., doing answer detection... (DX_PAMDOPTEN) Line 17254: 140719.286 20 16 5 ev Dialogic 133,TDX_CALLP, crn=6020010, 10,3,0,CR_CNCT,CON_PVD, Line 17285: 140719.288 6 16 5 state Human answer. Start [d:\Dialler\Wilsar\WilsarOut.vgs] Line 17332: 140719.295 6 16 5 state [HTTP-WilsarOut] Say Numbers: 08031205 as Date & Time - MMDDHHNN Line 17365: 140721.141 20 16 5 ev CallState GCEV_DISCONNECTED, crn=6020010, Line 17374: 140721.141 6 16 5 state Hanging up... [LINECALLSTATE_DISCONNECTED] Line 17394: 140721.206 20 16 5 ev CallState GCEV_DROPCALL, crn=6020010, Line 17468: 140721.217 6 16 5 state [DetailsHangup] DB Query Line 17515: 140721.226 20 16 5 ev CallState GCEV_RELEASECALL, crn=6020010, also see attached except for that call. 1407_0477359_oubound_call.txt Share this post Link to post
SupportTeam Report post Posted 08/03/2016 07:16 AM A call to the same number at 14:13 was categorized as an answering machine. Is that the call that you are referring to? VoiceGuide records what happens on the line while it waits for the answering machine message to complete. The recording for that call was saved in file: C:\Program Files\VoiceGuide\temp\RecAm_10.wav Looking at that file would help establish what happened. Note that this file would be overwritten if any future calls on that line that detected the answering machine / voicemail, and the trace shows that this file was overwritten multiple times afterwards: 150619.595 6 10 3 RecSoundStart [C:\Program Files\VoiceGuide\temp\RecAm_10.wav] ok 154233.183 6 10 3 RecSoundStart [C:\Program Files\VoiceGuide\temp\RecAm_10.wav] ok 160828.753 6 10 3 RecSoundStart [C:\Program Files\VoiceGuide\temp\RecAm_10.wav] ok Current version of VoiceGuide can be made to save these recordings into uniquely named individual files, so that they are not overwritten. This feature would help in debugging the issue here. In the version of software that is now installed on your system those recordings are always overwritten. 141316.640 6 10 3 state Dialing 0477359XXX... Ringing..., doing answer detection... (DX_PAMDOPTEN) 141316.640 6 10 3 CDRCallOutcomeSet setting CallData.dateCallAnswerTime 141322.849 20 10 3 ev Dialogic 133,TDX_CALLP, crn=608000a, 10,4,0,CR_CNCT,CON_PAMD, 141322.849 20 10 3 q scr add evScriptEvent 133 CON_PAMD 141322.849 20 10 3 q scr add evScriptEvent 133 TDX_CALLP 141322.849 6 10 3 q scr run evScriptEvent sCode=[CON_PAMD] iActionID=0, crn=608000a[10|4|0|0|0][CR_CNCT|CON_PAMD||||] 141322.849 6 10 3 scriptevent CON_PAMD 10|4|0 CR_CNCT|CON_PAMD| 141322.849 6 10 3 LsWaitAfterDialingOut : 133,608000a,CON_PAMD,10,4,0,CR_CNCT,CON_PAMD, 141322.849 6 10 3 q scr run evScriptEvent sCode=[TDX_CALLP] iActionID=0, crn=608000a[10|4|0|0|0][CR_CNCT|CON_PAMD||||] 141322.849 6 10 3 scriptevent TDX_CALLP 10|4|0 CR_CNCT|CON_PAMD| 141322.849 6 10 3 LsWaitAfterDialingOut : 133,608000a,TDX_CALLP,10,4,0,CR_CNCT,CON_PAMD, 141322.849 6 10 3 ScriptWorkingMode set Running_Normal, (called from CR_CNCT on outbound call) 141322.849 6 10 3 CDRCallOutcomeSet setting CallData.dateCallAnswerTime 141322.849 6 10 3 OnOutboundCallAnswered_Start_AnsweringMachine_Option 10,4,0 141322.850 6 10 3 rv add [$RV_STARTTIME]{2016-08-03 14:13:22} 141322.850 6 10 3 rv add [$RV_DEVICEID]{10} 141322.850 6 10 3 rv add [DlgcVoice]{dxxxB1C3} 141322.850 6 10 3 rv add [DlgcNetwork]{dtiB1T3} 141322.851 6 10 3 rv ScriptsPath could not be set as LineState[iLineId].iVgsIdx = 0 in InitSeedRvs 141322.851 6 10 3 rv add [$RV_DIALEDNUMBER]{0477359XXX} 141322.851 6 10 3 CDRCallOutcomeSet setting CallData.dateCallAnswerTime 141322.851 6 10 3 dial DeleteFromOutDialQue ID=412541 141322.851 6 10 3 state Machine Answer. Wait for end of welcome message... 141322.851 6 10 3 dial awaiting end of answering machine message (lvl:10 for 20) 141322.851 6 10 3 q tel add cmd_SilenceDetectSet [20,10,0,0,0][||||] 141322.851 6 10 3 q tel add cmd_RecordFileStart [6,0,0,0,0][||||] 141322.851 6 10 3 RecSoundStart [C:\Program Files\VoiceGuide\temp\RecAm_10.wav] ok 141322.851 7 10 3 q tel run cmd_SilenceDetectSet 141322.851 6 10 3 t timer set 120 sec : EV_TIMEOUT_HANGUP 141322.852 7 10 3 q tel run cmd_RecordFileStart 141355.848 20 10 3 q scr add evScriptEvent 9300 EV_SILENCE_DETECTED 141355.848 20 10 3 ev Dialogic 130,TDX_RECORD, crn=608000a, 0,0,0,TM_MAXSIL,, 141355.848 6 10 3 q scr run evScriptEvent sCode=[EV_SILENCE_DETECTED] iActionID=0, crn=0[0|0|0|0|0][|||||] 141355.848 20 10 3 q scr add evScriptEvent 130 TDX_RECORD 141355.848 6 10 3 scriptevent EV_SILENCE_DETECTED 0|0|0 || 141355.848 6 10 3 LsDialoutRecAnswerMachineWelcMsg EV_SILENCE_DETECTED, EV_SILENCE_DETECTED 141355.848 6 10 3 RecSoundStop begin trunc100ms=0, sCaller=LsDialoutRecAnswerMachineWelcMsg 141355.848 6 10 3 q tel add cmd_RecordStop [0,0,0,0,0][||||] 141355.848 6 10 3 rv rec length: AmWelcMsg_RecLen100ms = 329 141355.848 6 10 3 rv add [AmWelcMsg_RecLen100ms]{329} 141355.848 7 10 3 q tel run cmd_RecordStop 141355.849 6 10 3 t timer set 1 sec : EV_REC_FINISHED 141355.849 6 10 3 q scr run evScriptEvent sCode=[TDX_RECORD] iActionID=0, crn=608000a[0|0|0|0|0][TM_MAXSIL|||||] 141355.849 20 10 3 q scr add evScriptEvent 8003 EV_REC_FINISHED 141355.849 6 10 3 scriptevent TDX_RECORD 0|0|0 TM_MAXSIL|| 141355.849 6 10 3 LsDialoutRecAnswerMachineWelcMsg EV_UNKNOWN_130, TDX_RECORD 141355.849 6 10 3 q scr run evScriptEvent sCode=[EV_REC_FINISHED] iActionID=0, crn=0[0|0|0|0|0][|||||] 141355.849 6 10 3 scriptevent EV_REC_FINISHED 0|0|0 || 141355.849 6 10 3 LsDialoutRecAnswerMachineWelcMsg EV_REC_FINISHED, EV_REC_FINISHED 141355.849 6 10 3 iRecLen=329 (3/08/2016 2:13:22 PM) 141355.849 6 10 3 rv add [AmWelcMsg_RecLen100ms]{329} 141355.849 6 10 3 state Run Answer Machine script [d:\Dialler\Wilsar\WilsarOut.vgs] Share this post Link to post
Guest miva Report post Posted 08/03/2016 07:53 AM Sorry, yes that is the call, around 40 seconds, answer machine script was run. I suspect it may be background noise causing the issue. I think I recall the timeout can also be reduced so this 40 seconds is greatly reduced? Perhaps we could just remove the voicemail detection altogether? Share this post Link to post
SupportTeam Report post Posted 08/03/2016 08:17 AM The timeout is actually 120 seconds on that record. Changing timeout would result in longer voicemail/machine messages not being given the opportunity to finish - so that would break correct system operation in those cases. So advise not changing the timeout. On this call the 'end of message' was triggered and script was started and call recipient did press a key in response to the prompt (see below) If there is significant background noise interfering with the call then the better approach may be to just play once a short "Press 1 to accept call" message at beginning of call - right after call being answered/connected, and then follow approach outlined here: http://voiceguide.com/forums/index.php?showtopic=12279&do=findComment&comment=41622 To disable the Answering Machine detection please specify: disable as the 'Answering Machine Script'. Please see: http://www.voiceguide.com/vghelp/source/html/detectcallanswer.htm (uppercase or lowercase is fine) 141322.851 6 10 3 state Machine Answer. Wait for end of welcome message... 141322.851 6 10 3 dial awaiting end of answering machine message (lvl:10 for 20) 141322.851 6 10 3 q tel add cmd_SilenceDetectSet [20,10,0,0,0][||||] 141322.851 6 10 3 q tel add cmd_RecordFileStart [6,0,0,0,0][||||] 141322.851 6 10 3 RecSoundStart [C:\Program Files\VoiceGuide\temp\RecAm_10.wav] ok 141322.851 7 10 3 q tel run cmd_SilenceDetectSet 141322.851 6 10 3 t timer set 120 sec : EV_TIMEOUT_HANGUP 141322.852 7 10 3 q tel run cmd_RecordFileStart 141355.848 20 10 3 q scr add evScriptEvent 9300 EV_SILENCE_DETECTED 141355.848 20 10 3 ev Dialogic 130,TDX_RECORD, crn=608000a, 0,0,0,TM_MAXSIL,, 141355.848 6 10 3 q scr run evScriptEvent sCode=[EV_SILENCE_DETECTED] iActionID=0, crn=0[0|0|0|0|0][|||||] 141355.848 20 10 3 q scr add evScriptEvent 130 TDX_RECORD 141355.848 6 10 3 scriptevent EV_SILENCE_DETECTED 0|0|0 || 141355.848 6 10 3 LsDialoutRecAnswerMachineWelcMsg EV_SILENCE_DETECTED, EV_SILENCE_DETECTED 141355.848 6 10 3 RecSoundStop begin trunc100ms=0, sCaller=LsDialoutRecAnswerMachineWelcMsg 141355.848 6 10 3 q tel add cmd_RecordStop [0,0,0,0,0][||||] 141355.848 6 10 3 rv rec length: AmWelcMsg_RecLen100ms = 329 141355.848 6 10 3 rv add [AmWelcMsg_RecLen100ms]{329} 141355.848 7 10 3 q tel run cmd_RecordStop 141355.849 6 10 3 t timer set 1 sec : EV_REC_FINISHED 141355.849 6 10 3 q scr run evScriptEvent sCode=[TDX_RECORD] iActionID=0, crn=608000a[0|0|0|0|0][TM_MAXSIL|||||] 141355.849 20 10 3 q scr add evScriptEvent 8003 EV_REC_FINISHED 141355.849 6 10 3 scriptevent TDX_RECORD 0|0|0 TM_MAXSIL|| 141355.849 6 10 3 LsDialoutRecAnswerMachineWelcMsg EV_UNKNOWN_130, TDX_RECORD 141355.849 6 10 3 q scr run evScriptEvent sCode=[EV_REC_FINISHED] iActionID=0, crn=0[0|0|0|0|0][|||||] 141355.849 6 10 3 scriptevent EV_REC_FINISHED 0|0|0 || 141355.849 6 10 3 LsDialoutRecAnswerMachineWelcMsg EV_REC_FINISHED, EV_REC_FINISHED 141355.849 6 10 3 iRecLen=329 (3/08/2016 2:13:22 PM) 141355.849 6 10 3 rv add [AmWelcMsg_RecLen100ms]{329} 141355.849 6 10 3 state Run Answer Machine script [d:\Dialler\Wilsar\WilsarOut.vgs] 141355.849 6 10 3 NewVgsVgm_Goto d:\Dialler\Wilsar\WilsarOut.vgs,,,,,0 141355.849 6 10 3 NewVgsVgm_Goto_Setup dest=d:\Dialler\Wilsar\WilsarOut.vgs|, return=|, lSaveSourceOnCallStack=0 141355.849 6 10 3 rv add [ScriptEnd_Time]{2016-08-03 14:13:55} 141355.850 6 10 3 rv add [ScriptEnd_Goto_Script]{d:\Dialler\Wilsar\WilsarOut.vgs} 141355.850 6 10 3 rv add [ScriptEnd_Goto_Module]{} 141355.850 6 10 3 WriteToLogFiles_CurrScriptOnly begin 141355.850 6 10 3 WriteToLogFiles_CurrScriptOnly : LineState.iVgsIdx<=0 141355.850 6 10 3 rv add [ScriptStart_Time]{2016-08-03 14:13:55} 141355.851 6 10 3 rv add [ScriptStart_CalledFrom_Module]{EndCall} 141355.851 6 10 3 FindFullPathToScript_VgsOrVgp start [d:\Dialler\Wilsar\WilsarOut.vgs] 141355.851 6 10 3 ScriptToRunOnHangup=[HTTPNotify.vgs] in NewVgsVgm_SetVgsVgm 1 141355.851 6 10 3 StartModuleDefault=[SetType] 141355.851 6 10 3 ScriptToRunOnHangup=[HTTPNotify.vgs] in NewVgsVgm_SetVgsVgm NewVgsVgm_SetActualVgsVgm 141355.851 6 10 3 t timer clear (force=False) 141355.851 6 10 3 RunModule start Evaluate, [SetType], iModuleIdx=9, previous: vgm=9, vgs=2:2 141355.851 6 10 3 state [SetType] Evaluate [0] 141355.851 6 10 3 eval[0] 141355.853 6 10 3 CreateInstance ScriptControl objSC is: [System.__ComObject] 141355.855 6 10 3 creating new (non-global) rv : Status 141355.855 6 10 3 Eval Expr result:[0] stored in RV[Status] 141355.855 6 10 3 path {0} not found 141355.855 6 10 3 matching path not found [0], try boolean paths. 141355.855 6 10 3 FindNextVgmTitleInPathList: next module title is=[HTTP-WilsarOut] 141355.855 6 10 3 matching path found (Boolean False) 141355.855 6 10 3 t timer clear (force=False) 141355.855 6 10 3 RunModule start Say Numbers, [HTTP-WilsarOut], iModuleIdx=17, previous: vgm=9, vgs=2:2 141355.855 6 10 3 rv replace start [$RV[OnTime]] 141355.855 6 10 3 rv replace end [08031211] 141355.855 6 10 3 state [HTTP-WilsarOut] Say Numbers: 08031211 as Date & Time - MMDDHHNN 141355.855 6 10 3 CheckForAnyPlayActionsAndSetkeysIfNecessary no PlayActions, vgmidx=17, strPaths=on {1} goto [WelfareCheck] 141355.855 6 10 3 PlaySoundStartNumbers WelfareCheck.wav, WilsarOptions.wav, 08031211, Date & Time - MMDDHHNN 141355.856 6 10 3 playing [08031211] as [Date & Time - MMDDHHNN] using DLL : [WelfareCheck.wav,month08.wav,place03.wav,12.wav,11.wav,pm.wav,WilsarOptions.wav] 141355.856 6 10 3 t timer clear (force=False) 141355.856 6 10 3 q tel add cmd_PlayStart [0,0,0,0,0][||||] 141355.856 6 10 3 play start ok, playId=869394 141355.856 6 10 3 PlaySoundStartNumbers returned 141355.856 7 10 3 q tel run cmd_PlayStart 141400.163 20 10 3 ev dtmf 1 (101187594,49,0) Share this post Link to post
SupportTeam Report post Posted 08/03/2016 09:36 AM An approach that can be used is to first make a call as usual - with answering machine / voicemail detection enabled - and then in cases where: 1. the answering machine was detected but the wait for welcome message to finish was too long, or 2. the call disconnected while VoiceGuide was waiting for the answering machine / voicemail message to finish then another call is made to the same number - but this time the am/voicemail detection is disabled - and VoiceGuide plays the 'press 1 to accept call' message straight after the recipients handset is picked up. This way most calls will use the normal detection approach which works fine for most calls, but the 'problem' calls - where the called person was not successfully contacted - would get a second call with a different approach used (the 'press1 to accept call' approach). That should result in people who had problems on the first call being able to accept the call on the second attempt. $RV[AmWelcMsg_RecLen100ms] stores the length of the answering machine/voicemail welcome message (in 100ms units. eg: value of 200 = 20 seconds) Also, the answering machine scripts should first play a message intended to be left on AM/Voicemail, but then should give the option of letting a selection of some sort to be made. This would allow a live person to indicate to the VoiceGuide system that there is an actual live person on the line, and not a machine. The script can then act accordingly if required. Share this post Link to post