fluffybunny Report post Posted 05/03/2006 09:57 AM 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
SupportTeam Report post Posted 05/03/2006 11:04 AM 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
fluffybunny Report post Posted 05/03/2006 01:37 PM 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
SupportTeam Report post Posted 05/04/2006 12:44 AM 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
fluffybunny Report post Posted 05/04/2006 11:25 AM 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
SupportTeam Report post Posted 05/04/2006 11:34 AM 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
fluffybunny Report post Posted 05/04/2006 04:21 PM 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
SupportTeam Report post Posted 05/04/2006 09:38 PM 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
fluffybunny Report post Posted 05/08/2006 06:48 PM 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
SupportTeam Report post Posted 05/08/2006 08:17 PM 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
fluffybunny Report post Posted 05/08/2006 09:08 PM 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
SupportTeam Report post Posted 05/08/2006 09:48 PM 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
fluffybunny Report post Posted 05/09/2006 10:06 PM 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
SupportTeam Report post Posted 05/09/2006 10:13 PM Please contact sales@voiceguide.com directly for any license related questions. Also read: http://www.voiceguide.com/vghelp/html/Uniq...eIdentifier.htm The best thing to do is to link the license to a Dialogic card - then the license will work in whatever machine that Dialogic card is in. Share this post Link to post