VoiceGuide IVR Software Main Page
Jump to content

Working With External Db For Call Out

Recommended Posts

Dear Support,

 

I am currently working with the new patch I had received today.

 

I've set up my MS SQL 2005 database as shown on the help file, modifying "CallQue" and adding "PortToUse" table and etc...

 

Now when I add a record using "Number Loader" for testing, VG does not call out even if there is a record in each table and I see it is trying to get a top record.

 

I am attaching all the call logs but I suspect if the query VG is sending every second is in correct format.

 

Please look at the following: it is what I got from Query Profiler.

exec sp_executesql 
N'SELECT TOP 1  PortToUse.CallID FROM PortToUse WHERE ( (PortTouse.ActivateTime <= @dateNow));',
N'@dateNow datetime',@dateNow=''2008-09-19 13:58:41:223''

 

If you see @datNow = ''.....'' part, it is composed of two single quotes, which actually does not run on a query analyzer.

If I use a single quote around like the following,

exec sp_executesql 
N'SELECT TOP 1  PortToUse.CallID FROM PortToUse WHERE ( (PortTouse.ActivateTime <= @dateNow));',
N'@dateNow datetime',@dateNow='2008-09-19 13:58:41:223'

 

this will work.

 

Please let me know what is actually wrong.

 

Thanks.

 

VGLog_WithLoader.zip

Share this post


Link to post

We have a 7.0.7_RC1 test system setup with SQL server 2008 (Express) and it works fine.

 

We will setup a test with SQL server 2005 to verify what you have found here and will advise.

 

On the application level VoiceGuide itself is not specifying any quotes at all, it just assigns the datetime value to the parameter value using ADO.NET provider factory functions, so it looks like it may be an ADO.NET/SQL Provider incompatibility here that we may be looking at. Yes, would be strange, but the value assigning gets done using ADO.NET functions and not literal string assignment in any way so ADO.NET/SQL Provider incompatibility is the first thing that we can think of here...

 

As it is the weekend now it will take a day or so for us to look at this. Any chance you can try using SQL server 2008 Express for your database to see how that works for you?

Share this post


Link to post

I wouldn't be able to use it if it only work for SQL 2008 because our application only supports SQL 2005 at this point.

 

If you can find out what was the cause of this, that would be really great.

 

One thing I wanted confirm:

I commented out "[VGDialer]" section in VG.ini and implemented "<Dialer>" section in Config.xml for the new connection.

I believe it is correct? Since the tables get populated all right. Only problem is VG does not pick up the top record for call out.

 

Let me know how it goes.

 

Thanks and have a nice weekend.

 

Share this post


Link to post
I commented out "[VGDialer]" section in VG.ini and implemented "<Dialer>" section in Config.xml for the new connection.

I believe it is correct?

Yes. The external database connection settings are now only read from Config.xml

 

I wouldn't be able to use it if it only work for SQL 2008 because our application only supports SQL 2005 at this point.

If you could just confirm whether the SQL 2008 Express works for you or not then we'd have a better picture of what is happening on your system.

Share this post


Link to post

Please update your system to this version:

[old link removed]

We have just tested the _RC2 with SQL Server 2005 and it works on our test systems.

Looks like the problem was not with the double quotes. SQL Server 2005 Profiler still shows the double quotes in its report, but the SQL is working fine. Looks like there must have been some logic problem in the VoiceGuide code which prevented it reading the returned values properly, and these must have been fixed in _RC2.

Share this post


Link to post

Dear support,

 

With the fixed patch, VG works with SQL 2005. Thanks.

 

However, it seems the original problems have not been fixed.

 

1. I designated a script path to "OnNotAnswered" filed, but it still is not triggered: VG just hangs up without running the script ("PostHangUp_Hiring.vgs") even if it is stored as [NoAnswer] RV.

 

2. And I also want to know how to trigger a script in case of "busy" tone.

 

Those are two issues I need to deal with and the new patch still does not provide a way to achieve them.

 

Please it is now urgent matter since I need to apply the scripts to my client's machine.

 

3. And there is another new issue with the new patch.

I set "RetriesLeft" and "RetriesDelay" to zero, but once VG hangs up for the target number due to timeout (OnNotAnswered case), it tries to call the number from another line even if there is no next record in the que.

 

Those can be found from the log file I attached.

 

Please help.

 

Thank.

CallOut_Logs.zip

CallOut_Logs.zip

Share this post


Link to post

Please update to this release:

[old link removed]

This version fixes the OnNotAnswered issue.

In case of Busy, the $RV[OutDial_Result] will be assigned a value of BUSY and you can use the $RV[OutDial_Result]in the OnNotAnswered VBScript.

This new version also fixes the problems which were caused by the Retries Delay being less then the Answer Timeout.

Share this post


Link to post

OK.

The next patch works fine for OnNotAnser and Busy cases. Thanks.

 

But I have an weird error with the script that used to work fine. (I am not sure however, if it is an error caused by the new patch or by something else.)

My "Validate Login" VB module does not seem to work.

If you see from the log, "ValidateLogin" module is supposed to return RV, [blnIsAuthorized] then pass it to "IsAuthorizedSecnond" comparison module.

The comparison module checks the following:

$RV[blnIsAuthorized] = True

 

So if it is true then proceeds to the main menu, or goes back to a module asking password.

 

However, the log shows it raises an error because the comparison module does not get any value and tries to replace RV and gets "=True" which is a syntax error.

 

133321.224 14   1       FindNextVgmTitleInPathList: next module title is=[ValidateLogin]
133321.224 14   1       module's runwait=1, WavPlayHasNowFinished=0, iRunWait_ExeResult_NextVgm=4
133321.224 14   1 t     clear (force=False)
133321.224 14   1       RunModule start [Run VB Script,[ValidateLogin],4]
133321.240 14   1 state [ValidateLogin] type: VB Script, iRunWait=1
133321.240 14   1       rv    replace start (strlen>500)
133321.240 14   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\}[userID]{93174}[shiftID]{89620}[isHiring]{true}[AutoNotifyCallID]{139}[Out
ial_RetriesLeft]{0}[$RV_STARTTIME]{2008-09-23 13:33:11}[$RV_DEVICEID]{1}[DlgcVoice]{dxxxB1C1}[DlgcNetwork]{dxxxB1C1}[PathApp]{C:\Program Files\VoiceGuide\}[$RV_CALLEDNUMBER]{112}[OutDial_Result]{Answered_Live}[scriptEnd_Time]{2008-09-23 13:33:11}[scriptEnd_Goto_Script]{C:\Program Files\VoiceGuide\Scripts\IntelliTime\Login.vgs}[scriptEnd_Goto_Module]{}[scriptStart_Time]{2008-09-23 13:33:11}[scriptsPath]{C:\Program Files\VoiceGuide\Scripts\IntelliTime\}[PlayWelcomeGetEmpNumber]{5000}[GetAppointment]{}[GreetFilePath]{Temp\1_HiringGreet.txt}[blnIsAppointmentValid]{true}[blnIsMultipleAppointment]{f
lse}[intRetries]{4}[intRetriesTemp]{5}[CheckTaskType_ResultReturn]{success}[isHi
ingRequested_Input]{"true" = "true"}[isHiringRequested]{True}[GetPasswordForHiring]{222222}[GetPasswordForHiri
g_PathTaken]{success}[GetPassword]{222222}
133321.240 14   1       script will be ran from file: C:\Program Files\VoiceGuide\temp\vbs_1_3.vbs
133321.240 14   1       current objVbsOrExeProcess=
133321.240 14   1       RunVBScriptFile [wscript][C:\Program Files\VoiceGuide\temp\vbs_1_3.vbs][] timeout=60 (vbsPath=C:\Program Files\VoiceGuide\temp), start (new Process)
133321.240 14   1       objVbsOrExeProcess.Start call
133321.256 14   1       RunVBScriptFile just started. Handle=33860, Id=3956, StartTime=9/23/2008 1:33:21 PM, HasExited=False
133321.256 14   1       VBScript started [C:\Program Files\VoiceGuide\temp\vbs_1_3.vbs], ProcessHandle=[33860], VbsOrExeProcess.WorkingSet=[65536]
133321.256 14   1       RunModule_Script_AfterScriptStarted start
133321.256 14   1       waiting. iRunWait=1 (process:33860)
133321.256 14   1 t     set 1  EV_TIMEOUT_CHECKONSTATE
133321.287 14   1 rem   Run_ResultReturn [success]
133321.287 14   1       rv    add [ValidateLogin_ResultReturn]{success}
133321.287 14   1       path {success} found (at offset 3)
133321.287 14   1       FindNextVgmTitleInPathList: next module title is=[isAuthorizedSecond]
133321.287 14   1       module's runwait=1, WavPlayHasNowFinished=0, iRunWait_ExeResult_NextVgm=6
133321.287 14   1 t     clear (force=False)
133321.287 14   1       RunModule start [Evaluate,[isAuthorizedSecond],6]
133321.287 14   1 state [isAuthorizedSecond] Evaluate [$RV[blnIsAuthorized]=True]
133321.287 14   1       rv    replace start: [$RV[blnIsAuthorized]=True]
133321.287 14   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\}[userID]{93174}[shiftID]{89620}[isHiring]{true}[AutoNotifyCallID]{139}[Out
ial_RetriesLeft]{0}[$RV_STARTTIME]{2008-09-23 13:33:11}[$RV_DEVICEID]{1}[DlgcVoice]{dxxxB1C1}[DlgcNetwork]{dxxxB1C1}[PathApp]{C:\Program Files\VoiceGuide\}[$RV_CALLEDNUMBER]{112}[OutDial_Result]{Answered_Live}[scriptEnd_Time]{2008-09-23 13:33:11}[scriptEnd_Goto_Script]{C:\Program Files\VoiceGuide\Scripts\IntelliTime\Login.vgs}[scriptEnd_Goto_Module]{}[scriptStart_Time]{2008-09-23 13:33:11}[scriptsPath]{C:\Program Files\VoiceGuide\Scripts\IntelliTime\}[PlayWelcomeGetEmpNumber]{5000}[GetAppointment]{}[GreetFilePath]{Temp\1_HiringGreet.txt}[blnIsAppointmentValid]{true}[blnIsMultipleAppointment]{f
lse}[intRetries]{4}[intRetriesTemp]{5}[CheckTaskType_ResultReturn]{success}[isHi
ingRequested_Input]{"true" = "true"}[isHiringRequested]{True}[GetPasswordForHiring]{222222}[GetPasswordForHiri
g_PathTaken]{success}[GetPassword]{222222}[ValidateLogin_ResultReturn]{success}
133321.287 14   1       rv    replace end: [=True]
133321.287 14   1       eval[=True]
133321.287 14   1       CreateInstance ScriptControl objSC is: [system.__ComObject]
133321.318 14   1 ERROR v7.0.3188.36826 (Tue 23/09/2008 19:27:33.09) VGMTYPE_EVALEXPR InvokeMember Eval : Exception has been thrown by the target of an invocation.

 

I can't figure out why "ValidateLogIn" module does not set result variables: if I run the vbScript from "Temp" folder, they return true/false values all right.

 

Please let me know what is wrong.

 

BTW, thanks again for the patch that works for NotOnAnswer and Busy. I can proceed to the next step!

 

 

IsAuthorizedSecondError.zip

Share this post


Link to post

Trace shows that the VBScript ran at no stage sets the $RV[blnIsAuthorized]

 

The VBScript just returns "Success".

 

Recommend you use some Admin_TraceLogAdd calls into your VBscript to track it's execution path and see what it is actually doing.

 

You can set $RV[blnIsAuthorized] by having the module return something like this:

 

[blnIsAuthorized]{True}

 

instead of returning "Success"

 

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
×