VoiceGuide IVR Software Main Page
Jump to content

Answering Machine Detected

Recommended Posts

Hi

 

I'im doing outgoing calls and it seems that very often the system detects that it is an anwsering machine where it is a human anwsering the call. Do I have to parameter something to imporve that?

 

Tkx

Mh

Share this post


Link to post

to avoid that I have read"

 

To overcome this problem you may specify that instead of just playing a .WAV file when an answering machine is detected a script is ran instead. From within a script you can find out how long the answering machine message was (using $RV[AmWelcMsg]), and if it turns out that it was quite short (say less then 2 seconds) then you may decide to ignore Dialogic's decision that this is an answering machine and force VoiceGuide to jump to the script for "Live Person" instead.

 

do I have to use the var just after the call is anwserd using EVAL module?

 

Please help

Tkx

 

Share this post


Link to post
do I have to use the var just after the call is anwserd using EVAL module?

Yes. In the script that is ran upon 'Answering Machine' detection. That var holds a Length of Answering Machine message. in 100ms units. eg: a value of 20 would indicate answering machine message was 2 seconds long. So if that value was less then say 20 you can just jump to the Live Answer script.

 

Share this post


Link to post

Hi,

 

I have setup a little script to detect if is is a real Anwsering machine or a bad line.

it seems that the condition defined in the path if the eval module is not taken into account. Could you please have a look on it.

 

Files attached.

 

Tkx

Mh

MV_test.vgs

0109_0022_vgEngine.txt

Share this post


Link to post

Please use:

 

$RV[AmWelcMsg_RecLen100ms]

 

the previous $RV to use was incorrect.

 

Also your current script is set to use module M1 as the starting module, you will need to edit the script properties to set the starting module to Eval-moussa.

 

Also in your After-Hangup script:C:\Program Files\VoiceGuide\Scripts\test_SaveDB.vgs, in module [Evaluate 8]

 

change:

 

$RV[M1]=1

 

to:

 

"$RV[M1]"="1"

 

You will not get an error that way if nothing is entered in module M1:

 

002309.890 6 1 ERROR v7.0.3252.36547 (Wed 26/11/2008 20:18:14.16) VGMTYPE_EVALEXPR InvokeMember Eval : Une exception a été levée par la cible d'un appel.

System.Runtime.InteropServices.COMException (0x800A03EA): Erreur de syntaxe

 

 

Share this post


Link to post

Ok thank you;

 

Little question regarding the attached script. I have an eval module that checks a condition "$RV[M1]"="1"

 

if true it sends an email. I did not specified a false condition the script goes to the send module anyway.

How can I setup if {False} then end the script ?

 

 

tkx

Mh

test_SaveDB.vgs

Share this post


Link to post

If looks like you are using a non-English version of Windows, and looks like this is affecting the Evaluate module, with the Windows Evaluator function returning" True/False in the current language...

 

Try using an "on {Faux}" path, eg:

 

on {Faux} goto [Hangup the Call 1]

 

VgEngine trace shows what happened:

 

145559.531 6 1 state [Evaluate 8] Evaluate ["$RV[M1]"="1"]

145559.531 6 1 rv replace start: ["$RV[M1]"="1"]

145559.531 6 1 rvns: [PathSysVoice]{C:\Program Files\VoiceGuide\system\voice\}[PathApp]{C:\Program Files\VoiceGuide\}[PathDataVm]{C:\Program Files\VoiceGuide\data\}[PathVgSys]{C:\Program Files\VoiceGuide\system\}[clientid]{1001}[Nom]{MR Moussa MARC}[prenom]{}[Adresse]{35 RUE DES ERABLES}[Zip]{67204}[Ville]{ACHENHEIM}[OutDial_RetriesLeft]{0}[OutDial_Result]{A

nswered_Machine}[AmWelcMsg_RecLen100ms]{112}[scriptEnd_Time]{2009-01-09 14:55:57}[scriptEnd_Goto_Script]{C:\Program Files\VoiceGuide\Scripts\MV_test.vgs}[scriptEnd_Goto_Module]{}[scriptStart_Time]{2009-01-09 14:55:57}[scriptsPath]{C:\Program Files\VoiceGuide\Scripts\}[Eval-moussa_Input]{112<20}[Eval-moussa]{False}[Hangup Source]{Hangup Module}[CallHangupTime]{2009-01-09 14:55:59}

145559.531 6 1 rv replace end: [""=1]

145559.531 6 1 eval[Cstr(""="1")]

145559.531 6 1 CreateInstance ScriptControl objSC is: [system.__ComObject]

145559.578 6 1 rvns add [Evaluate 8_Input]{""="1"}

145559.578 6 1 rvns add [Evaluate 8]{Faux}

145559.578 6 1 Eval Expr result:[Faux]

145559.578 6 1 path {Faux} not found

145559.578 6 1 matching path not found [Faux], try boolean paths.

145559.625 6 1 ex: ScriptIo.VGMTYPE_EVALEXPR [Faux] could not be converted to boolean. Take Success path as string non-empty.

Share this post


Link to post

Very strange behaviour of the system

 

A) following log "section 1" and "section 2" are part of the same log file on a same call.

B) in section 1 we have {False} and section 2 we have {Faux} which is the french for "False" (see bold)

C) in the section 1 when we have have {false} the path is not found anyway.

 

Bit lost ..

Thx for you appreciated help

 

 

 

section 1:

----------------------------

120730.257 6 1 RunModule start [Evaluate,[Eval-moussa],14]

120730.257 6 1 state [Eval-moussa] Evaluate [$RV[AmWelcMsg_RecLen100ms]<20]

120730.257 6 1 rv replace start: [$RV[AmWelcMsg_RecLen100ms]<20]

120730.257 6 1 rvns: [PathSysVoice]{C:\Program Files\VoiceGuide\system\voice\}[PathApp]{C:\Program Files\VoiceGuide\}[PathDataVm]{C:\Program Files\VoiceGuide\data\}[PathVgSys]{C:\Program Files\VoiceGuide\system\}[clientid]{1001}[Nom]{MR Moussa MARC}[prenom]{}[Adresse]{35 RUE DES ERABLES}[Zip]{67204}[Ville]{ACHENHEIM}[OutDial_RetriesLeft]{0}[OutDial_Result]{A

nswered_Machine}[AmWelcMsg_RecLen100ms]{112}[scriptEnd_Time]{2009-01-10 12:07:29}[scriptEnd_Goto_Script]{C:\Program Files\VoiceGuide\Scripts\MV_test.vgs}[scriptEnd_Goto_Module]{}[scriptStart_Time]{2009-01-10 12:07:29}[scriptsPath]{C:\Program Files\VoiceGuide\Scripts\}

120730.257 6 1 rv replace end: [112<20]

120730.273 6 1 eval[112<20]

120730.445 6 1 CreateInstance ScriptControl objSC is: [system.__ComObject]

120730.523 6 1 rvns add [Eval-moussa_Input]{112<20}

120730.523 6 1 rvns add [Eval-moussa]{False}

120730.539 6 1 Eval Expr result:[False]

120730.539 6 1 path {False} found (at offset 3)

120730.539 6 1 FindNextVgmTitleInPathList: next module title is=[Hangup the Call 4]

120730.539 6 1 t clear (force=False)

 

 

section 2

120731.960 6 1 RunModule start [Evaluate,[Evaluate 8],17]

120731.960 6 1 state [Evaluate 8] Evaluate ["$RV[M1]"="1"]

120731.960 6 1 rv replace start: ["$RV[M1]"="1"]

120731.960 6 1 rvns: [PathSysVoice]{C:\Program Files\VoiceGuide\system\voice\}[PathApp]{C:\Program Files\VoiceGuide\}[PathDataVm]{C:\Program Files\VoiceGuide\data\}[PathVgSys]{C:\Program Files\VoiceGuide\system\}[clientid]{1001}[Nom]{MR Moussa MARC}[prenom]{}[Adresse]{35 RUE DES ERABLES}[Zip]{67204}[Ville]{ACHENHEIM}[OutDial_RetriesLeft]{0}[OutDial_Result]{A

nswered_Machine}[AmWelcMsg_RecLen100ms]{112}[scriptEnd_Time]{2009-01-10 12:07:29}[scriptEnd_Goto_Script]{C:\Program Files\VoiceGuide\Scripts\MV_test.vgs}[scriptEnd_Goto_Module]{}[scriptStart_Time]{2009-01-10 12:07:29}[scriptsPath]{C:\Program Files\VoiceGuide\Scripts\}[Eval-moussa_Input]{112<20}[Eval-moussa]{False}[Hangup Source]{Hangup Module}[CallHangupTime]{2009-01-10 12:07:31}

120731.960 6 1 rv replace end: [""=1]

120731.960 6 1 eval[Cstr(""="1")]

120731.992 6 1 CreateInstance ScriptControl objSC is: [system.__ComObject]

120732.039 6 1 rvns add [Evaluate 8_Input]{""="1"}

120732.039 6 1 rvns add [Evaluate 8]{Faux}

120732.039 6 1 Eval Expr result:[Faux]

120732.039 6 1 path {Faux} not found

120732.039 6 1 matching path not found [Faux], try boolean paths.

120732.117 6 1 ex: ScriptIo.VGMTYPE_EVALEXPR [Faux] could not be converted to boolean. Take Success path as string non-empty.

120732.117 6 1 FindNextVgmTitleInPathList: next module title is=[send Email 7_2]

120732.117 6 1 matching path found (Boolean True)

120732.117 6 1 t clear (force=False)

test_SaveDB.vgs

Share this post


Link to post

Sounds like until the cause of this is figured out it's best to have in the module all 4 paths covering all the various possibilites:

 

on {Faux} goto [Hangup the Call 1]

on {faux} goto [Hangup the Call 1]

on {False} goto [Hangup the Call 1]

on {false} goto [Hangup the Call 1]

Share this post


Link to post

Hi I'm facing some problems regarding the point of anwserging machine recognition. I've used the evaluation duration of the welcome message to define if it is a real personn or not. Seems not to be always efficient.

 

Do you think it could be better if I use a full Ip solution to make my outgoing calls? I guess that using IP link will provide better event management?

 

tkx

Mh

Share this post


Link to post

Answering Machine detection is done using frequency and cadence analysis.

 

Using VoIP lines will most likely give you worse results then analog or T1/E1 lines as quality of VoIP connection is usually not as good, and that reduction in sound quality will affect Dialogic’s detection reliability.

 

Sounds like you are using length of answer to further confirm whether it's the answering machine that answered the call.

 

If you can post traces of the problem call we can confirm what happened on that particular call.

Share this post


Link to post

Hi,

 

I have attached the logs and a extract of a table where I store ID, Wecome msg duration.

In fact for 1000 calls I get 300 human ansers and 600 answering machines, wich I consider is too much. I must say that for these tests I'm usging an analogic line provided by an internet provider (so it is a IP one in fact).

 

Most of welcome message duration are longer than 4s..

What I wanted to do is record a set of anwsers to see what are these answers and make sure they are really anwsering machines. Or if you have another way ...

 

tkx

Mh

logs.zip

Share this post


Link to post
What I wanted to do is record a set of anwsers to see what are these answers and make sure they are really anwsering machines.

VoiceGuide does this already. As soon as the Dialogic card indicates that the answer is an Answering Machine then VoiceGuide starts recording and the filename that it records into is mentioned in the vgEngine trace:

 

165339.640 6 1 RecSoundStart [C:\Program Files\VoiceGuide\temp\RecAm_1.wav] ok

 

The filename will be: C:\[VoiceGuide Directory]\temp\RecAm_[LineId].wav

 

So to see what was recorded just play any of these RecAm_X.wav files.

 

And to see in the log file what record lengths were reported search for these entries:

 

rv rec length: AmWelcMsg_RecLen100ms =

 

a GREP tool would help to extract these lines from the log file to better show you the values that were reported: http://www.wingrep.com/

 

I'm usging an analogic line provided by an internet provider (so it is a IP one in fact)

The voice quality over those lines is usually not as good as over normal phone lines. and poorer quality lines would result in the Dialogic card detecting normal voice as answering machine.

 

 

Share this post


Link to post

Each successive outbound call will result in the file for that line being overwritten with the new version of it. I think that you are using only one line to dial out, so only one file will be created - and updated at each call. So the file will contain the recording from last Answering Machine answer.

 

We can modify the software to save each Answering Machine recording in a separate file. For costs of any custom software modification please contact sales@voiceguide.com

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
×