mehdi_h Report post Posted 12/31/2008 12:19 PM 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
mehdi_h Report post Posted 12/31/2008 01:47 PM 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
SupportTeam Report post Posted 12/31/2008 09:51 PM 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
mehdi_h Report post Posted 01/09/2009 12:24 AM 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
SupportTeam Report post Posted 01/09/2009 04:12 AM 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
mehdi_h Report post Posted 01/09/2009 10:13 AM 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
SupportTeam Report post Posted 01/09/2009 12:05 PM You can use a Fail path. See attached script: demo.vgs Share this post Link to post
mehdi_h Report post Posted 01/09/2009 02:04 PM Hi, Following your advise in this post I have user the test "$RV[M1]"="1" in the "Evaluate 8" - if true then send mail - if false then Hang_up But even if the test is false the email is sent anyway (see log 1---0109_1452_vgEngine.txt) tkx 1___0109_1452_vgEngine.txt test_SaveDB.vgs Share this post Link to post
SupportTeam Report post Posted 01/09/2009 08:55 PM 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
mehdi_h Report post Posted 01/10/2009 11:19 AM 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. 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
SupportTeam Report post Posted 01/10/2009 11:30 AM 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
mehdi_h Report post Posted 01/10/2009 11:49 AM Works this way thanks! really a pleasure to work with you :-) Share this post Link to post
mehdi_h Report post Posted 01/13/2009 02:31 PM 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
SupportTeam Report post Posted 01/13/2009 07:10 PM 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
mehdi_h Report post Posted 01/14/2009 12:49 PM 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
SupportTeam Report post Posted 01/14/2009 07:32 PM 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
mehdi_h Report post Posted 01/14/2009 08:59 PM is it normal that I have only one file with only one record ? Share this post Link to post
SupportTeam Report post Posted 01/14/2009 09:23 PM 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