VoiceGuide IVR Software Main Page
Jump to content

Help With Best Way To Implement An Application

Recommended Posts

Hi,

 

I am new to Voiceguide and need some guidance as to the best way to provide an application in the easiest way and shortest time. (I have 2 weeks to build this thing!)

 

Application is this :

 

1. Caller rings in, and is invited to leave a recorded message (an order to be precise). Caller is given a reference number which relates to this particular message.

 

2. Agents can then dial system and listen to the order details, and hear the reference number.

 

3. The recorded message must have a number of states. Upon first recording (as in 1 above) it is "new". After Agent has listened to it it will be "read". Agents will also be able to change the state to either "in progress", "on hold", or "completed".

 

4. Callers can subsequently ring in and enter their reference number and hear the current status.

 

So, I reckon I will use a database to record the details of each message (ref. number, wav file, status, date / time, etc. But is it easier to use Voiceguides built in DB tools, or maybe a VBscript? I have very little time and my main experience is using VB for basic apps, so there will be a learning curve to use VBScript. Would it be best to write a separate app to do the database stuff, and run this app from Voiceguide?

 

Or, should I use the voicemail app for recording messages and agent playback? Would this complicate matters?

 

Any ideas would be gratefully received. To re-cap, I have never used Voiceguide before, or VBScript. I am fairly proficient in VB (VB5 to be precise), and I have to have a working system in 2 weeks.

 

Cheers

 

Simon

Share this post


Link to post

This is not as difficult as it sounds.

 

After recording the message just add an entry to a database with the filename and current status/refNumber/etc.

 

When an agent calls in retrieve available entires from database and play the files one after another, giving agent option to change status of particular order.

 

Read the help file's entry on the DBQuery module and the Result Variables that it creates when retrieving data from a DB - playback of current messages will just be a loop though a Play module and DBQuery module (and Eval Expression to increment counter and check for last entry in list)

 

There would be no need to use the Voicemail subsystem, and you should probably not need to do any VBScript...

 

If you get stuck post the specific questions here and we can answer them.

 

If you want you can email sales@voiceguide.com to get a quote on getting the entire script designed for you.

Share this post


Link to post

Excellent. Thanks for that.

 

First question. In your opinion, would it be easier to increment the reference number in the database using voiceguide, or should I make it an autonumber field in the database?

Share this post


Link to post

Using the "autonumber" or "Identity" type field in the main table is probably the better way.

 

Of course you'd need to read back the generated autonumber afterwards - so you would have to have field in the DB which uniquely identifies the record so that you know which one to read back. Use something like this to generate a unique string:

 

$RV_YY$RV_MM$RV_DD$RV_HH$RV_NN$RV_SS_$RV_LINEID

 

If you choose to have your own number in a separate table then make sure it's an 'AutoIncrement' type field so the DB does incrementing for you instead of you having to do it in VG and then write new value into DB - otherwise you'll get duplication on numbers if two lines try to read/increment that counter at the same time...

Share this post


Link to post

Thanks for that.

 

Next problem I have is that if I am using the VoiceGuide Script designer and I add a new "Evaluate Expression" box all is fine.

 

However, if I accidentally add another "Evaluate Expression" box and then right click on the bar and select DELETE to delete it, it gets deleted BUT any further right clicks on any of the other boxes fail to bring up the options, (just an empty and smaller drop down box) so if I go and accidentally create another "Evaluate Expression" box (or any other box for that matter) it cannot be deleted.

 

Is this a bug?

Share this post


Link to post

The Right Click menu on a module has a bug you describe.

It does not affect stop you from defining the paths though, just click on the module's button to bring up module's properties and define the paths there.

 

You can delete modules using Ctrl-D or using the Delete icon in top menu's toolbar. Then the right-click menu will keep on working.

Share this post


Link to post

Ah ok. thanks for that.

 

Next question (!) ..... I want to write a record to my database, and I want to include the current Date and Time. (i.e. system date and time)

 

I am guessing the SQL query might look like this ...

 

 

INSERT INTO MyTable (RefNumber,Filename,Status,DTRecorded) VALUES ('$RV[NextRef]','$RV[MessFilename]','"New"','Now'

 

 

 

Probably totally of the mark, but it WAS a guess!

 

By the way, VoiceGuide a superb App Gen. I have been at it 4 hours and have completed the app framework, voicefiles, and pretty much everything else except the database stuff. Another day or two and I will be done. All from never using it before.

 

All credit to your product.

 

Cheers

 

Simon

Share this post


Link to post

You should check the format in which your Database accepts Date/Time input and then format the time/date string to match what the database expects.

 

You can use the various Time/Date Rv's to create the TimeDate string (or you can use VBScript's Hour(), Minute(), Month() etc. functions, but using RVs is usually simpler)

Share this post


Link to post

Hi,

 

Having a few problems with testing my app.

 

It seems to be falling over when I do a database lookup. The syntax I am using is

 

 

SELECT LAST (RefNumber) AS $RV[LastRef] FROM Intray ORDER BY RefNumber

 

Intray is the table in my access database.

 

RefNumber is one of the fields.

 

LastRef is the result variable I want to use to reference the record further on in the app.

 

It seems to be giving me an error here. Is the syntax correct? Would it be better to do something like :

 

SELECT LAST (RefNumber) FROM Intray ORDER BY RefNumber

 

...and then refer to the result variable by using something like $RV[module name_1_1] later on?

 

Why am I getting an error?

Share this post


Link to post
Would it be better to do something like :

 

SELECT LAST (RefNumber) FROM Intray ORDER BY RefNumber

 

...and then refer to the result variable by using something like $RV[module name_1_1] later on?

Yes.

Why am I getting an error?

Please supply the trace files capturing the problem and then we can see what the reported error is.

Share this post


Link to post

215157.85 1 event callstate OFFERING 1 2,0,0

215157.85 1 script interpretor: VgMulti v6.0.3071

215157.86 1 fired OFFERING event to listeners

215157.86 1 set LineState().hCall = 1 in LINECALLSTATE_OFFERING

215157.88 1 cid CallerID vars set (in 'offering' event) [,,]

215157.88 1 call AnswerTheCallIfAllowed from LINECALLSTATE_OFFERING

215157.88 1 rings=0, min rings before answer=0 (iCallerIdHasArrived=0)

215157.89 1 tw ring 1

215157.89 1 ring time since last ring event (sec): 0.00

215157.91 1 rings=1, min rings before answer=0 (iCallerIdHasArrived=0)

215157.91 1 answer as number of rings reached

215157.91 1 rv clear all

215157.92 1 init LineState ResetAtStartOfNewCall.

215157.92 1 answer the call

215157.93 1 timer clear

215157.95 1 tw DialogicEvent 134,TDX_CST,0,0,0,DE_RINGS,ET_RON,

215157.96 1 event TDX_CST, iCode=134 state=6001

215157.98 1 LsModuleTransition : 134, [TDX_CST]

215158.73 1 tw DialogicEvent 135,TDX_SETHOOK,0,0,0,DX_OFFHOOK,CALL_INBOUND,

215158.73 1 event TDX_SETHOOK, iCode=135 state=6001

215158.76 1 LsModuleTransition : 135, [TDX_SETHOOK]

215158.77 1 event callstate CONNECTED 1 256,0,0

215158.78 1 LineEvCallState_Connected hDevice=1 params=256,0,0

215158.80 1 WorkingModes tapi= script= LineState().iState=6001

215158.81 1 Inband detection not enabled

215158.84 1 StartLoadedVgs at 08/05/2006 21:51:58 [VgMulti v6.0.3071]

215158.84 1 set LineState().iVgsIdx=4

215158.87 1 set sScriptToRunOnHangup=[] in StartLoadedVgs

215158.88 1 init StartLoadedVgs_InitLineState start

215158.89 1 rv add [$RV_STARTTIME]{08/05/2006 21:51:58}

215158.91 1 rv add [$RV_DEVICEID]{1}

215158.92 1 rv add [$RV_CIDNAME]{}

215158.95 1 rvns add [PathApp]{C:\Program Files\VoiceGuide\}

215158.95 1 rvns add [scriptsPath]{C:\FreshDirect\Scripts\}

215158.98 1 rv add [$RV_CIDNUMBER]{}

215158.99 1 fn RunModule start [51,,]

215159.01 1 tw DialogicEvent 134,TDX_CST,25918,0,0,DE_LCON,,

215159.02 1 event TDX_CST, iCode=134 state=6001

215159.05 1 LsModuleTransition : 134, [TDX_CST]

215159.09 1 timer clear

215159.10 1 Play Module start

215159.13 1 state [Welcome] Playing

215159.15 1 state [Welcome] Playing (C:\FreshDirect\Voice\welcome.vox)

215159.16 1 timer clear

215159.22 1 play start ok, lPlayId=897855

215213.38 1 tw PlayEnd 1 897855

215213.40 1 play end id=897855, (current ID)

215213.41 1 event EV_PLAY_FINISHED, iCode=8001 state=1100

215213.41 1 LsPlayMsg EV_PLAY_FINISHED,EV_PLAY_FINISHED

215213.44 1 path {EV_PLAY_FINISHED} not found

215213.45 1 timer set 10 EV_TIMEOUT_HANGUP

215213.47 1 timer set 1 EV_TIMEOUT_GOTOMODULE

215213.48 1 tw DialogicEvent 129,TDX_PLAY,897855,0,0,,,

215213.49 1 event TDX_PLAY, iCode=129 state=1101

215213.51 1 LsPlayMsgFinished EV_UNKNOWN_129,TDX_PLAY

215213.52 1 path {TDX_PLAY} not found

215214.44 1 timer fired EV_TIMEOUT_GOTOMODULE

215214.45 1 event EV_TIMEOUT_GOTOMODULE, iCode=9002 state=1101

215214.45 1 LsPlayMsgFinished EV_TIMEOUT_GOTOMODULE,EV_TIMEOUT_GOTOMODULE

215214.48 1 path {EV_TIMEOUT_GOTOMODULE} not found

215214.48 1 next module is [GetLastRefNo] (idx=52)

215214.51 1 fn RunModule start [52,,]

215214.52 1 timer clear

215214.54 1 state [GetLastRefNo] DB Query

215214.55 1 db Jet mode used (To use ODBC mode specify ODBC Connect string)

215214.61 1 db About to execute a Retrieve type operation [sELECT LAST (RefNumber) FROM Intray ORDER BY RefNumber]

215214.63 1 OpenRecordset: 3122:You tried to execute a query that does not include the specified expression 'RefNumber' as part of an aggregate function.

215214.65 1 path {0} not found

215214.66 1 path {} not found

215214.69 1 next module is [DBDown] (idx=56)

215214.70 1 fn RunModule start [56,,]

215214.73 1 timer clear

215214.75 1 Play Module start

215214.77 1 state [DBDown] Playing

215214.77 1 state [DBDown] Playing ()

215214.80 1 event EV_PLAY_FINISHED, iCode=8001 state=1100

Share this post


Link to post

The trace shows the SQL query sent to the database was:

SELECT LAST (RefNumber) FROM Intray ORDER BY RefNumber

and the message returned from the database was:

You tried to execute a query that does not include the specified expression 'RefNumber' as part of an aggregate function.

Looks like the database you're using has problems processing that SQL statement.

 

I'd try with something simpler that works - eg:

 

SELECT RefNumber FROM Intray

 

and then gradually add to that SQL statement to see what will and will not work for this DB.

Share this post


Link to post

Ok... I'm just about there now. One final question.

 

I have the app completed, all my SQL statements work, and everything is looking good. (Very good actually....once you get the hang of it, application development is soooo easy with Voiceguide!)

 

I now wish to purchase the licence (4 port enterprise I think), as I can't test the whole app without it. The problem is, I wont have the actual hardware we shall be installing for a week or 2 yet.

 

If I purchase the licence and install it on my test machine in order to test the whole application, can I then move it over to the new hardware at a later date?

 

 

Cheers

 

Simon

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
×