Posts Tagged ‘Analyzer’

Reports at your fingertips

Sunday, April 25th, 2010

VoiceObjects has one of the strongest phone self-service reporting and analytics offerings in the market today. VoiceObjects Analyzer provides insight into application usage and system performance for developers, administrators, and business staff like no other. Full access to the rich features of this product requires a Business Intelligence platform underneath, such as Business Objects, Cognos, or MicroStrategy. But did you know that VoiceObjects 9.1 introduced a variety of reports available at your fingertips, right within your favorite GUI Desktop for Eclipse, with no further software or installation required?

If you’re using 9.1 already, you have insanely easy access to reports probably without even knowing it; reports that help you run a session analysis for your server cluster or a single instance, inspect memory usage over a configurable period of time, or even analyze business task completion rates for the service you’ve launched the other day.

Let me show you how it all works. Whether you use Desktop for Eclipse in standalone mode (which is what you get with the “Developer Edition”), or access a full VoiceObjects Server in network mode, you can utilize the so-called Control Center Reports either way. As the name implies, the Control Center is where this neat little feature hides. If you run in standalone mode, you may want to check out this post about how to setup a Control Center view of your embedded VoiceObjects Server before proceeding.

Reports are available for three different areas:

  1. entire server cluster
  2. single server instance
  3. single service

To access the reports for the entire server cluster (the “logical server”), switch to the Server Manager tab of the Control Center view, right-click on the item preceded by “S: “ (which is your logical server representing the cluster, called “VOServer” by default), and click Reports. From the submenu, you can now select a report from the available list:

How to Access Control Center Reports



Once selected, the view switches to the Report Chart tab, where you now see your report:

Sessions By Service


Change the time frame as desired and hit the Refresh button to update the report. You can even export a PDF version of your report to share it with others! (Notice the little Disk icon in the upper right corner…)

Accessing the reports for a single instance works pretty much the same way: right-click on the server instance (denoted with an “I: “) of your choice and select the desired report from the Reports submenu.

Memory Usage



Service reports can be accessed likewise: switch to the Service Manager tab, right-click on the service of your choice and select the desired report. For example, check out the following report on business task completion rates, telling you how successful your callers are using your service:

Business Task Completion Rates

Note: If you can’t see the entry Reports in your menus, then you have turned off System DB Logging for your server, instance, or service. System DB Logging must be switched on in order to be able to access the reports. If it’s switched off but had been switched on before and you still want to see reports on that historical data, you can switch it on temporarily through the transient setting available in the DB Logging submenu of your server or service.


So there you go: reports at your fingertips, without the need to install a full Business Intelligence suite. However, keep in mind that VoiceObjects Analyzer provides a whole lot more reports, plus analysis features such as drilling, slicing&dicing, and more. The Control Center Reports do not replace the Analyzer, but provide valuable insight mainly for administrational staff right within your favorite IDE.

Alright, I’m outta here. I have to fix this module “Enter New Credit Card” in my application. The task completion rate is way too low as I just realized…

MicroStrategy – New Training offering

Thursday, March 4th, 2010

MicroStrategy is now offering an new 5-day training course in Germany. The main goal of this course is allowing course participants bringing in their own data models, which will then be used as the basis for creating a MicroStrategy metadata layer on top of them as well as for developing corresponding reports.  At the end of the course all created reports and the metadata modell are delivered to the attendees together with a version of the free reporting suite of MicroStrategy.

More details can be found at:

http://www.microstrategy.de/kostenlosereportingsoftware/

http://www.microstrategy.de/files/Quickstart%20Kurs%20MicroStrategyRS%202010.pdf

The future looks colorful

Wednesday, August 26th, 2009

Now that Revision 1 of VoiceObjects 9.0 is available and Prophecy 10 can be previewed, it is time to look toward the bright future again.

VoiceObjects has always offered the Control Center, which gives you an up-to-the-minute view of what’s going on in your deployment and lets you take action. The information available in the Control Center covers e.g. current call volumes as well as general status information on Infostore etc. You can activate application changes, deploy and undeploy services, take server instances down for maintenance, and more.

Coming up during the remainder of this year, you will also be able to access deployment-related reports directly from within the Desktop for Eclipse Control Center:

AHA5

If you’re familiar with the VoiceObjects architecture you will know that we use a Server-Instance-Service paradigm: Applications are deployed as services onto logical servers, which in turn can be run on multiple instances in a cluster to facilitate load balancing and failover.
Reports will be available on all three of these levels, covering e.g. the number of sessions over time for various ranges.

ServerSessionsDay

Similarly it will be possible to check e.g.  on load distribution within a cluster to make sure that each instance carries its fair share.

ServerSessionsInstance

Or to dig into call durations for individual services to see how callers fare.

ServiceSessionDuration

There will even be direct access to Business Task information, so you can see right from the Control Center not just whether an application is up and running, but whether it actually does its job of giving callers what they want.

ServiceBusinessTask

Sounds good? Then wait until you hear what else is in store :-)

To learn more, contact us, follow us on Twitter – or visit us in New York at SpeechTEK 2009. We’re in booth 800 and look forward to meeting you!

VoiceObjects Analyzer for MicroStrategy 9 – Free Edition

Monday, July 20th, 2009

A few weeks ago you have learned how to enable Infostore on your Developer Edition. Once the connection to Infostore has been established, detailed information about the calls to your application are beeing logged to the Infostore repository.  By the way if you want to learn how you can fill your new Infostore repository faster than by manually making calls, join us for our next Developer Jam Session taking place on July 29 at 11am Eastern to learn about LoadTester. Registration is open now.

With VoiceObjects Analyzer for MicroStrategy 9 now available for download from the VoiceObjects Developer Portal (for the free Developer Edition) as well as from the VoiceObjects Service Portal (for existing customers), and the parallel offering of the free available MicroStrategy 9 Reporting Suite you can now complete your package of free solutions to get all the possibilities to create and call applications with Voxeo VoiceObjects  Developer Editon, and to analyze the callers’ behavior by running one of the 50 standard reports that are part of VoiceObjects Analyzer for MicroStrategy 9.

A detailed description on how to download, install and configure MicroStrategy 9 and VoiceObjects Analyzer is available here. Follow the descibed steps and come back to this post once MicroStrategy 9 is running properly and VoiceObjects Analyzer for MicroStrategy has been imported successfully.

In the following we will briefly describe how you can run one of the standard reports delivered with VoiceObjects Analyzer in MicroStrategy 9. Keep in mind that running a meaningful report requires to have at least some useful data in your Infostore repository. By the way, we are planning to extend our free offering by adding a package of Infostore demo data. Stay tuned for more details within the next couple of weeks!

  1. Open MicroStrategy Desktop (typically available from the start menu “Start” -> “All programs” -> “MicroStrategy” -> “Desktop”).
  2. Provide the login details as defined in the Intelligence Server configuration (default is Administrator and empty password).
  3. Open the Project Source “VoiceObjects Analyzer” (or any other name you have defined in the Project Source creation process).
  4. Open the project “VoiceObjects Analyzer v9 R1″.MicroDesktop
  5. The standard reports can be found in the folder “Reports” below “Public Objects”. They are distributed in three categories “Administration and Maintenance”, “Application Development and Tuning” and “Business and Caller Analysis”. Refer to the Analyzer Guide for detailed information on the different reports.
  6. As an example open the report “Number of Sessions by Day” from the category “Administration and Maintenance”.
  7. In the upcoming prompts select the service and pick at least the year on which the report should be run. Click  “Finish” to start the report. You should get a report looking similar to the following example:
    ExampleReport
  8. Now you can enjoy exploring the variety of available reports.

As always, if you have any problems, questions, or suggestions do not hesitate to contact our Extreme Support.

How to Setup MicroStrategy 9 with VoiceObjects Analyzer

Monday, July 20th, 2009

The following text describes how to download, install and configure MicroStrategy and VoiceObjects Analyzer for MicroStrategy to properly work together.
Before we begin with the installation process itself you should take a moment and step through the prerequisites, so that everything needed is available for the setup.

Prerequisites & System Requirements:

  • VoiceObjects Analyzer for MicroStrategy 9 (download from the Developer Portal)
  • MicroStrategy 9 free reporting software (download from MicroStrategy – ~ 1,8 GB!)
    NOTE: Registration is required before you can download MicroStrategy 9.
    Once registered you will receive an email with a license key that must be entered during the installation process.
  • A Infostore repository with at least some logging data in it
  • Microsoft Office 2002 or higher
  • Acrobat Reader version 7 or higher
  • Adobe Flash Player version 9.0

Once you have completed collecting all the material we can start with the installation process.

Installation:

  1. Double-click the file MICROSTRATEGY9.exe to start the installation.
  2. Enter the license key you received from MicroStrategy.
  3. Follow the instructions and keep all default settings.
  4. Send activation request.
  5. Restart your computer.

After the installation you now need to activate and configure MicroStrategy properly.

Activation & Configuration

First open the “License Manager” from the start menu and switch to the tab “License Administration”. Click “Next” and select the option “Server Activation using Activation Code”. Now paste in the activation code you have received by email after you sent the activation request during the installation process of MicroStrategy.

License Manager

Click “Next” to finish the activation process.

Secondly you need to configure MicroStrategy to import the VoiceObjects Analyzer package and connect to your Infostore repository. If after restarting your machine the “Configuration Wizard” of MicroStrategy has not started automatically, you need to go to the start menu and open it manually. The “Configuration Wizard” is used to:

  • generate or update the metadata tables of MicroStrategy (as the downloaded package is already updated to MicroStrategy 9, this option can be skipped);
  • configure the MicroStrategy Intelligence Server;
  • create the connection to the project sources, which will be VoiceObjects Analyzer for MicroStrategy in our case.

Configuration Wizard Overview

  1. Select the option “MicroStrategy Intelligence Server”. Click “Next” to continue.Configuration Wizard IntelligenceServer
  2. On this screen the DSN (Data Source name) must be selected that represents the connection to the MicroStrategy metadata tables. Click “New” to define a new DSN.
  3. On the upcoming screen click “Next” to continue.Configuration Wizard IV
  4. Next, the appropriate driver for the DSN must be selected. Select “Other Relational Databases”. Click “Next” to continue.
    Configuration Wizard V
  5. Select the appropriate Microsoft Access driver, e.g.  “Microsoft Access Driver” if you have the English version of Microsoft Access installed. Click “Next” to continue.Configuration Wizard VI
  6. Define a name and description for the new DSN and click  “Select”. In the upcoming file dialog browse for the downloaded VoiceObjects Analyzer for MicroStrategy file (VoiceObjectsAnalyzer_forMicroStrategy_90.mdb) and click  “OK”.
  7. Click “OK” again to finally create this DSN.
  8. Back in the DSN screen you will find this new DSN selected. Click “Next” to continue.Configuration Wizard IntelligenceServerII
  9. If not already provided as default values use Administrator as user name and leave the password field empty. Click “Next” to continue.ConfigurationWizard IntelligenceServerIII
  10. Define a name for the new Intelligence Server, e.g. MicroStrategy. Click “Next” to continue.ConfigurationWizard IntelligenceServerIV
  11. Select the checkboxes “VoiceObjects Analyzer v9 R1″ in order to load the package on start-up and “Start Intelligence Server when finished” to start the Intelligence Server automatically after the configuration process. Click “Next” to continue.
  12. If a warning message pops up complaining about a missing DSN, this can be ignored. The missing DSN will be defined later in the configuration process.Server Summary
  13. Check the summary. Click “Finish” to finally start the configuration of the MicroStrategy Intelligence Server.
  14. After a successful configuration click “Close” to return to the Overview page of the Configuration Wizard.ConfigurationWizard Project
  15. Back on the Overview page select the option “Project Sources”. Click “Next” to continue.ConfigurationWizard Project II
  16. Define a name for the project source, e.g. VoiceObjects Analyzer, and select the option “MicroStrategy Intelligence Server (3 Tier)”. Click “Next” to continue.ConfigurationWizard Project III
  17. Select the machine on which your MicroStrategy Intelligence Server is running and provide the corresponding port number, if you have changed the default port. Click “Next” to continue.ConfigurationWizard Project IV
  18. Keep the default selection “Use login id and password entered by the user (standard authentication)”. Click “Next” to continue.ConfigurationWizard Project V
  19. Check the summary. Click “Finish” to finally start the creation of the new Project Source.
  20. After a successful configuration click “Close” to return to the Overview page of the Configuration Wizard.ConfigurationWizard Overview II
  21. Click “Exit” to close the Configuration Wizard.

Configure DSN to Infostore repository

As mentioned during the configuration of the MicroStrategy Intelligence Server, a DSN to the existing Infostore repository is needed. The VoiceObjects Analyzer for MicroStrategy package requires a DSN named Infostore_WH. Follow the steps described below in order to create this DSN.
NOTE: Depending on your Windows operating system, the steps might slightly differ from the description!

  1. Open the “Data Sources (ODBC)” window (Start -> Control Panel -> Administrative Tools -> Data Sources (ODBC)).
  2. Select the tab “System DSN”.
    odbc
  3. Click “Add” to create a new DSN
    NOTE: If no DSN´s are listed here (althoug one has already been created in the Intelligence Server configuration), this might indicate that you are running MicroStrategy 9 (32 bit software) on a 64 bit operating system. In this case you need to open the “ODBC Data Source Administrator” manually by starting the application [Windows]/SysWOW64/odbcad32.exe.
  4. Select the driver that corresponds to your RDBMS containing the Infostore repository. Click “Finish” to continue.
  5. CAUTION: Take care to use the name Infostore_WH for the new DSN, as otherwise the VoiceObjects Analyzer project cannot be connected to the data in your Infostore repository.
  6. Follow the steps depending on the selected driver to properly define the connection to your Infostore repository.

Test of MicroStrategy Configuration

Once the DSN to the Infostore repository has been created successfully, you can test your setup by doing the following:

  1. Open the MicroStrategy Desktop (Start -> All Programs -> MicroStrategy -> Desktop -> Desktop).
  2. Provide the login details as defined in the Intelligence Server configuration (default is Administrator and empty password).
  3. Open the Project Source “VoiceObjects Analyzer” (or any other name you have defined in the Project Source creation process).
  4. Open the project “VoiceObjects Analyzer v9 R1″.
  5. Expand the folder “Data Explorer” -> “Application” -> “Site” and check if an entry “System” will be offered. If this is the case the connection to the Infostore repository is working.DesktopTest

Inside Infostore – Part II: Modules and Paths

Wednesday, July 8th, 2009

Back in April, in the first installment of our Inside Infostore series, we looked at the general structure of the Infostore repository for real-time caller behavior analysis and answered a number of interesting questions on the basis of the Call Detail Record table VOLDDLGSTS alone. This time, we’ll take a look at Module information available within Infostore. It provides valuable insight into how callers use your application – which parts they visit, which parts they skip, and exactly how they get to where they end up.

Modules
Module objects in the Voxeo VoiceObjects framework provide a “wrapper” for applications or sub-applications within a bigger one such as a self-service portal. The Prime Insurance sample provides a good model, as shown in its main menu:

pimodules

 A separate Module object encapsulates each of the five branches, as well as the overall application. Each Module defines inheritable event handling, navigation using hyperlinks, and additional application settings.
More information on the Module object can be found within the Object Reference. Best practices in structuring your application using Modules are discussed in the Design Guide. Both are highly recommended additional reading.

Module Tables
Module information is stored within Infostore in five different tables: VOLDMODULE, VOLDMODSEQ, VOLDMODSET, VOLDRELMSQ, and VOLDSUBSEQ. Other tables, such as VOLDDLGSTS, refer to them through surrogate IDs.

VOLDMODULE contains general lookup information on each Module object such as its name, modification timestamps, and key settings.
Data in this table is updated with each deployment or redeployment. In addition to the “real” Module objects, the table also contains an entry for “[End of Dialog]“, which is used to indicate the end of the dialog (as you may have guessed).

VOLDMODSEQ contains an entry for each sequence of Module objects that has been traversed within a call. So e.g. when somebody calls the Prime Insurance application shown above, selects the car insurance branch from the main menu, and then afterwards also inquires about life insurance, there would be an entry “Prime Insurance Portal,Car Insurance,Life Insurance”.
Data is entered into this table as necessary whenever a new sequence is observed in a call.

VOLDMODSET is similar in that it contains one entry for each set of Module objects that has been visited within a call. Multiple sequences may lead to the same set, and each sequence entry in VOLDMODSEQ contains a pointer to the respective set entry in VOLDMODSET. The set entry is sorted alphabetically, so for the same call example as above the set entry would be “Car Insurance,LifeInsurance,Prime Insurance Portal”.
Data is entered into this table as necessary whenever a new set is observed in a call. Since the sequence entry references the corresponding set entry, the set entry is made first.

VOLDRELMSQ maps individual Module objects to module sequences and the positions at which they occur within these sequences. In the example there would be three separate entries mapping Module “Prime Insurance Portal” to the first position in the sequence, “Car Insurance” to the second position, and “Life Insurance” to the third.
Data is entered into this table as necessary whenever a new sequence is observed in a call.

Finally, VOLDSUBSEQ contains a break-down of Module sequences into their constituent sub-sequences. This information is needed for reports such as the dominant path analysis referred to below. In our example this will result in the following six sub-sequences including the end marker  ”[End of Dialog]” mentioned above:

  • Prime Insurance Portal,Car Insurance,Life Insurance,[End of Dialog]
  • Prime Insurance Portal,Car Insurance,Life Insurance
  • Prime Insurance Portal,Car Insurance
  • Car Insurance,Life Insurance,[End of Dialog]
  • Car Insurance,Life Insurance
  • Life Insurance,[End of Dialog]

Data is entered into this table as necessary whenever a new sequence is observed in a call.

Taken together, these five tables can be utilized to gain insight into how callers navigate through your applications. The next two sections explore a number of sample questions. 

Basic Orientation
As in part I, the SQL statements shown below have been tested using Microsoft SQL Server. They are meant to be indicative of specific types of information and are formulated for readability rather than performance. Entries in all tables mentioned here belong to specific services identified by a unique ID, the VSC_SID. In all of the samples we assume this SID to be known and fixed. It can be retrieved like this:

select vsc_sid from voldvscobj where vsc_refid=’<VSN of service>’ and is_current=1

Finally, the SQL statements used here operate on the “raw” Infostore tables. For Analyzer, there is an additional view layer that adjusts localization and performs a few mappings that usually aren’t relevant here.

With these preliminaries out of the way, here are a few high-level questions that can be answered easily on the basis of the Module set and sequence entries as well as the references in the VOLDDLGSTS table we looked at before:

  • How many different sets / sequences do callers visit?
    Obviously this is about the simplest question you can ask regarding sets and sequences, but it does already give you a high-level idea of how callers utilize an application.
    select count(*) from voldmodset where vsc_sid=SID
    select count(*) from voldmodseq where vsc_sid=SID
  • What is the ratio between sets and sequences?
    This ratio is a rough measure of variability between different calls (and callers). When it is close to 1, callers visit the same places in roughly the same way. When it is significantly bigger than 1, different calls visit the same places in significantly different ways. Keep in mind, however, that this value depends on application design at least as much as it depends on caller choices.
    select (select count(*) from voldmodseq where vsc_sid=SID) / (select count(*) from voldmodset where vsc_sid=SID)
  • Which percentage of calls visits a certain sub-application?
    Different choices within a self-service portal will attract callers to differing extents. In our example we want to know the percentage of calls that visit the “Life Insurance” branch of the Prime Insurance Portal.
    select 100.0*count(*)/(select count(*) from volddlgsts where vsc_sid=SID) from volddlgsts where mod_set_sid in (select mod_set_sid from voldmodset where mod_set_name like ‘%Life Insurance%’) and vsc_sid=SID
  • How often does each Module object occur in sequences?
    Module sequences will contain individual Module objects in different numbers, which is indicative of their respective importance in call flows.
    select count(*) as cnt, m.mod_name from voldrelmsq r inner join voldmodule m on (r.mod_sid = m.mod_sid and m.mod_sid>0 and r.vsc_sid=SID) group by m.mod_name order by cnt desc
  • What is the most / least visited sub-application within my application portal?
    If your application is e.g. a banking self-service portal offering sub-applications such as balance checking, making transfers, and brokerage transactions, then you will want to know if 90% of your callers really only want to check their account balance at the end of the month. Note that while this question is similar to the preceding one, here we’re dealing with numbers of actual calls as opposed to just occurrences of Module objects in sequences.
    select m.mod_name, count(dlg_id) as callCount from voldmodule m inner join ((select distinct mod_seq_sid, mod_sid from voldrelmsq) as r inner join volddlgsts as s on r.mod_seq_sid = s.mod_seq_sid and vsc_sid=SID) on r.mod_sid = m.mod_sid and m.vsc_sid=SID group by m.mod_name order by callCount desc
  • What is the average time spent in each Module visited?
    This simple query does, of course, only give you a very rough global estimate – but it can give a hint on whether the “size” of your Modules is reasonable. If the average time spent in a Module is in the order of minutes, you may want to add more structure to your application by adding Module objects in strategic places to obtain a better resolution.
    select avg(dlg_call_dur_ms/(1000.0*no_modules)) from volddlgsts where no_modules>0 and vsc_sid=SID
  • Which Module scopes do callers typically hang up in?
    Knowing where in the application callers hang up can validate (or invalidate) assumptions about caller behavior.
    select count(d.dlg_id) as cnt, m.mod_name as modname from volddlgsts d, voldmodule m where m.mod_sid=d.last_module_sid and d.dlg_exit_type_id=16 and d.last_module_sid>-1 and d.vsc_sid=SID group by m.mod_name order by cnt desc

Paths
VoiceObjects Analyzer contains a Dominant Path Analysis report that shows in significant detail how callers navigate through your application, and which choices they predominantly make whenever there is a fork in the road. 

 

dominantpath1

While this report is too complex to replicate fully in manual SQL, we can answer a number of related questions here:

  • Which paths have callers taken to get from one Module to another?
    Different paths can lead to the same destination, and to optimize the flow of an application it is very relevant to look at the various paths callers take to get from one place to another. In our example we want to find all the different paths that lead from the Module object with Reference ID “LifeInsurance” to the one with Reference ID “CarInsurance”.
    select distinct mod_seq_refid as paths from voldsubseq where mod_start_sid=(select mod_sid from voldmodule where mod_refid=’LifeInsurance’ and vsc_sid=SID) and mod_end_sid=(select mod_sid from voldmodule where mod_refid=’CarInsurance’ and vsc_sid=SID) and vsc_sid=SID
  •  Which Modules are often visited together?
    As a mirror to the first question, it is also of interest to see which Modules are often visited alongside a given Module. In terms of online shopping, this is a bit like saying “customers who bought this item also liked these other products”.
    select m1.mod_name as name1, m2.mod_name as name2 from voldmodule m1, voldmodule m2 where m1.mod_sid<m2.mod_sid and m1.mod_sid>0 and m2.mod_sid>0 and m1.vsc_sid=SID and m2.vsc_sid=SID and exists (select * from (select * from voldrelmsq where mod_sid=m1.mod_sid and vsc_sid=SID) as rel1 inner join (select * from voldrelmsq where mod_sid=m2.mod_sid and vsc_sid=SID) as rel2 on rel1.mod_seq_sid = rel2.mod_seq_sid)

  • Which Modules occur as immediate predecessors of a given Module object in sequences?
    Expectations about how to use a certain sub-application are driven by the other places the caller has previously been to during the call. Therefore it is relevant to look at the predecessor Module object. In our example, we want to find out which places callers come from just before they enter the “Car Insurance” sub-application within Prime Insurance.
    select distinct mod_start_name as predecessor from voldsubseq where mod_end_sid=(select mod_sid from voldmodule where mod_name=’Car Insurance’ and vsc_sid=SID) and mod_subseq_count=0 and vsc_sid=SID

And with this, we’ve reached the end of our path for today.
In the next installment we’ll dig one level deeper and look at the detailed information that is written for each caller interaction in the input state table VOLDDSSEQ. In the meantime, we’d love to get your feedback. Just leave a comment below!

How to enable Infostore on your Developer Edition

Tuesday, June 30th, 2009

A couple of weeks ago we had started to take a look at the structure of Infostore,  the VoiceObjects data repository for real-time caller behavior analysis. (Incidentally – yes, the second installment of this series is in the pipeline.)

 Infostore is the basis for statistical data analysis using Business Intelligence (BI) tools such as MicroStrategy (for which a free edition is available), SAP BusinessObjects or IBM Cognos. As such a certain amount of data is required to obtain useful and statistically significant reports. However we realize that many of you would like to explore the capabilities of Infostore even in your development environments using Voxeo VoiceObjects Developer Edition, so in this article we’ll show you how to enable Infostore in this setup. And it’s just about as easy as 1-2-3:

  1. Set up a database
    Infostore, being a data repository, requires a relational database to live in. Since it is conceptually designed to hold many millions of records, it currently supports large-scale commercial database systems that can do this with high performance, including Oracle, Microsoft SQL Server, IBM DB2, and PostgreSQL.
    For evaluations all of these provide free versions that can be downloaded; one that is particularly easy to work with and that we’ll use in this article is Microsoft SQL Server Express. Installation and configuration of the database itself is very straightforward. Appendix B of the Installation Guide provides  instructions on how to set things up.
  2. Create the Infostore schema
    Once you have a database user and (empty) schema, it is time to create the tables and fill them with initial configuration data. Infostore supports partitioned and non-partitioned tables; in this article we will use the non-partitioned version since the data volume for evaluation will be limited.
    So the first thing to do is to run the script LDCreate.sql that can be found in <EclipseFolder>\plugins\com.voiceobjects.eclipseDesktop_9.0.0\driver\db\SQLServer of your Developer Edition installation. This creates all of the database tables that Infostore needs.
    After this has finished successfully, run LDConfigure.sql from the same folder. This inserts a whole bunch of static look-up data into the tables and prepares Infostore for its use.
  3. Configure Developer Edition
    With the preparations of the two preceding steps, we can now point Voxeo VoiceObjects Developer Edition to use this Infostore repository.
    Open the configuration file Eclipse_Configuration.xml that is located in <EclipseFolder>\plugins\com.voiceobjects.eclipseDesktop_9.0.0\config and locate the section System Log Repository Connection. Within this section, there is a single <connection> entry.
    Set its enabled attribute to true (the default entry is false). Then set the correct database type <rdbms>, connection URL <dburl>, user <user> and password <password>.  There are examples for the various supported database types; for SQL Server it will be something like:
                <rdbms>SQLServer</rdbms>
                <dburl>jdbc:jtds:sqlserver://localhost:1433/VODB</dburl>
                <user>voadmin</user>
                <password>voadmin</password>
  4. Start Developer Edition and make your calls
    After having changed and saved the configuration file, (re-)start your Developer Edition. If you have configured a Control Center entry for the embedded server, you should see a green light in the System DB Logging column.
    Deploy an application using the Test Application command and make a call either with a media platform such as Voxeo Prophecy or using the Debug Viewer. This will create the first fact record entries in your Infostore repository.
  5. Enjoy
    To explore the entries created in Infostore, refer to the sample SQL queries listed here. Or take a look at the Infostore Guide to learn more about advanced features.

As always, if you have any problems, questions, or suggestions do not hesitate to contact our Extreme Support.

And if you want to learn how you can fill your new Infostore repository faster than by manually making calls, join us for our next Developer Jam Session taking place on July 29 at 11am Eastern to learn about LoadTester. Registration is open now.

Inside Infostore – Part I: Structure and Call Records

Wednesday, April 8th, 2009

Infostore, the VoiceObjects data repository for real-time caller behavior analysis, offers a wealth of information so rich that it can be outright confusing for novice users. So in this series of blog postings, we want to shed light on Infostore’s inner workings and provide technically minded readers with the understanding and some sample SQL to explore the data on their own.

In addition, of course, there is VoiceObjects Analyzer with its comprehensive set of pre-built reports for all of the leading Business Intelligence (BI) frameworks. To find out more about it, as well as the Voxeo VoiceObjects tools in general, go to http://developers.voiceobjects.com/voiceobjects-documentation/.
For those eager to learn more we also offer hands-on training sessions on Infostore. Visit http://www.voiceobjects.com/en/support/training/ for details.

In this first part of the “Inside Infostore” series, we’ll look at the general structure of the Infostore repository and focus on the single dialog statistics record that is written for each call. In the subsequent parts we will then dive deeper into more detailed information about input states, personalization, business tasks, etc.

On a high level, Infostore is organized as a snowflake schema and optimized for immediate analysis of session data, typically by using BI tools, without the need for intermediate ETL processes. In particular this means that there are a number of key fact tables referring to lookup tables for the various dimensions. The following image gives a high-level overview of the relationships:

infostoreoverview

The Infostore data model has been designed for extensibility and integration with data derived e.g. from CRM systems, IVR logging, etc. In the same way, custom data logged by an application can be merged with the standard information contained in the Infostore fact tables.

infostoreextensions
The fact table we will focus on for right now is VOLDDLGSTS containing the dialog statistics, on a level that corresponds to what is often referred to as a Call Detail Record (CDR). In more than a hundred columns, the table contains aggregated information about the respective dialog session and can answer many important questions about application quality and caller behavior even without the need to join other, more detailed fact tables.
The entries in VOLDDLGSTS are the highest level of session information in Infostore, and in most installations it is desirable to have them for each and every session (at least for a certain period of time, such as 30 days). However, through simple configuration on the level of each deployed service it is possible to use statistical sampling and only collect data e.g. for 5% of all calls.

The following paragraphs describe the different types of data present within the VOLDDLGSTS table and provide sample SQL statements to answer typical questions. The SQL has been tested using Microsoft SQL Server; adjustments may be required for other databases. SQL buffs should also note that the statements have been optimized for readability as opposed to performance.
Entries in VOLDDLGSTS belong to specific services identified by a unique ID, the VSC_SID. In all of the samples we assume this SID to be known and fixed. It can be retrieved like this:

select vsc_sid from voldvscobj where vsc_refid=’<VSN of service>’ and is_current=1

Finally, the SQL statements used here operate on the “raw” Infostore tables. For Analyzer, there is an additional view layer that adjusts localization and performs a few mappings that usually aren’t relevant here. In some statements you see “locale_id=1″, which indicates the English localizations. Should you prefer German, use “locale_id=2″ instead.

Basic Session Information
On the most basic level, VOLDDLGSTS contains information about the vitals of each call session, including:

  • When the session started (MONTH_ID, DAY_ID, MINUTE_ID, SECOND_ID)
  • Which context parameters were available for the session (DLG_AAI, DLG_ANI, DLG_CRMID, DLG_DNIS, DLG_GCID, DLG_IID, DLG_RDNIS, DLG_SPSID)
  • Where it was processed (SRV_HOST_IP, SRV_INST_PORT, SRV_INST_NAME)
  • Which media platform driver was used (DRIVER_ID)
  • How long it lasted (DLG_CALL_DUR_MS, DLG_PROC_DUR_MS)

Even on the basis of just this core information, a number of relevant questions can quickly be answered:

  • How many calls were there yesterday / last week?
    Calls for a given day can easily be extracted with the data format YearMonthDay by use of:
    select count(*) from volddlgsts where vsc_sid=SID and day_id = ‘20090403′
    Similarly, making use of the date dimension table VOLDDATDAY we can retrieve all calls for a given calendar week:
    select count(*) from volddlgsts where vsc_sid=SID and day_id in (select day_id from volddatday where cw_id = ‘200914′ and locale_id=1)

  • Which percentage of calls comes from within the San Francisco (415) area code?
    For certain applications it is interesting to see where callers are geographically located. This can often be approximated by area codes:
    select 100.0*count(*)/(select count(*) from volddlgsts where vsc_sid=SID) from volddlgsts where vsc_sid=SID and dlg_ani like ‘415%’

  • Which calls lasted over a minute?
    Depending on the application, long session durations may indicate that callers had problems getting the information they called for. Thus it may be helpful to look at such sessions in more detail.
    select dlg_id,dlg_ani,day_id,minute_id from volddlgsts where vsc_sid=SID and dlg_call_dur_ms > 60000

As an excercise, you may want to build SQL statements to answer the following questions:

  • Which percentage of calls came in during weekdays / weekends? (Hint: Use the information in VOLDDATDAY)
  • Show number of sessions per day of week
  • Which is the busiest day of the week (in terms of number of sessions)?

Interaction Details
Moving up from the session basics to information on how the caller interacted with the application, we get the following:

  • How many dialog steps the session encompassed, and of which type (NO_DS_STEP, NO_DS_STEPS_VOICE, NO_DS_STEPS_DTMF, NO_DS_STEPS_TEXT)
  • Which No Input / No Match events occurred during the session (NO_NI, NO_NM, NO_NI_1..4, NO_NM_1..4, NO_DS_NOINPUT, NO_DS_NOMATCH)
  • How well recognition worked (AVG_CONF_VOICE, NO_DS_IMMEDREC, NO_DS_NONIMMEDREC, NO_DS_SUCCESS, NO_DS_NONSUCCESS)
  • How often standard navigation commands were used (NO_BACK, NO_FORWARD, NO_RPTS, NO_SKIP)
  • How often custom navigation commands were used (NO_HYPERLINKS)
  • How the session ended (DLG_EXIT_TYPE_ID, LAST_DS_STEP, LAST_DS_NAME, LAST_DS_TYPE)

Frequently used questions in this area are:

  • How do calls end?
    There are multiple ways in which calls can end (e.g. caller hanging up, application terminating normally or in exception, etc.) and it is good practice to keep an eye on the distribution. Here we use the localizations for the various exit types contained in VOLDEXTTYP.
    select count(d.dlg_id) as no_sessions, x.dlg_exit_type_dsc from volddlgsts d right outer join voldexttyp x on (d.dlg_exit_type_id = x.dlg_exit_type_id and d.vsc_sid=SID)
    where x.locale_id=1 group by x.dlg_exit_type_dsc

  • Which objects do callers typically hang up in?
    For those calls ending with a caller hang-up it is relevant to look at where in the application this happens, since it may point to spots that cause callers grief.
    select distinct last_ds_name, count(last_ds_name) as no_sessions from volddlgsts where vsc_sid=SID and dlg_exit_type_id=16 group by last_ds_name order by count(last_ds_name) desc

  • Which percentage of calls uses any sort of navigation?
    Most applications offer some way of escaping the normal top-to-bottom dialog flow, either by jumping to specific points (e.g. “main menu”) or by relative navigation (e.g. “back” or “repeat”). If a very large percentage of callers uses them, adjustments in the standard flow might be useful.
    select 100.0*count(*)/(select count(*) from volddlgsts where vsc_sid=SID) from volddlgsts where vsc_sid=SID and no_back+no_rpts+no_forward+no_skip+no_hyperlinks>0

Other questions you may want to explore for yourself could be:

  • Which percentage of calls has both No Input and No Match events?
  • Is the average confidence in short calls higher than in long calls?
  • How does average confidence vary by area code?

Processing Details
In addition to details on the interaction with the caller, VOLDDLGSTS also contains a lot of useful information about the interaction with backends:

  • How many backend interactions occurred, and how long they took (NO_CONNECTOR_EXECS, CONN_EXEC_TIME_MAX, CONN_EXEC_TIME_MIN, CONN_EXEC_TIME_TOT)
  • Which errors occurred during the session (NO_ERRS, NO_ERRS_CONNECTOR, NO_ERRS_INTERNAL, NO_ERRS_MP, NO_ERRS_SCRIPT)
  • How many notifications were sent during the session (NO_NOTIFICATIONS)
  • Which network-related activity took place (NO_REQUESTS, VOL_BYTES)

Interesting questions regarding the backend are e.g.

  • During which times has backend access been slow?
    This may point to problems on the backend itself, or to network congestion.
    select day_id,minute_id from volddlgsts where conn_exec_time_max>3000 and vsc_sid=SID

  • Were any calls aborted due to backend errors?
    Again, this may point to either problems on the backend itself or in the integration code that connects the application to the backend.
    select dlg_id from volddlgsts where dlg_exit_type_id=2 and no_errs_connector>0 and vsc_sid=SID

  • What’s the total data volume (in MB) transferred between IVR and VoiceObjects Server by week?
    This information is useful to ensure that network cpacacity between the IVR and VoiceObjects Server is sufficient to maintain optimal performance.
    select sum(d.vol_bytes)/10485476 as volume, t.cw_id as week from volddlgsts d, volddatday t where d.day_id=t.day_id and t.locale_id=1 and d.vsc_sid=SID group by t.cw_id order by t.cw_id

Other interesting backend-related questions could be:

  • What is the average backend processing time?
  • Are errors tied to backend slowdowns?

And finally, of course, you can combine information from the different categories to answer broader questions such as:

  • How does average confidence vary by area code?
  • How much longer are calls with many No Input / No Match events than calls with fewer of them?
  • Do weekday calls show a different caller behavior than weekend calls in terms of events and navigation?

That should do it for today. Keep in mind that we’ve used only a portion of the columns in VOLDDLGSTS so far – and that’s just one of several fact tables in Infostore. So there’s lots more to come.
Next time, we’ll look at how callers navigate through an application by means of module sequences.