Archive for the ‘Tips and tricks’ Category

VoiceObjects 11.1 powers Mobile Web apps on Smartphones

Monday, January 30th, 2012

With the latest version of VoiceObjects, 11.1, the most visible and important addition was the new jQuery Mobile web driver that makes it possible to create great looking mobile web applications in like no time. If you have missed out on the developer Jam Session we did last week, be sure to take a peek at the slides from that webinar.

Also, we have updated the Prime Telecom sample application, which has been our demo application for multi-channel service implementation in VoiceObjects for quite a while now. It has received a polished, fancy new UI when used on Smartphones and Tablets. Having VoiceObjects 11.1 Desktop for Eclipse installed, go to our Demos and Templates page to download and install the Prime Telecom package to get started. You’ll learn how to create a self service application that provides a consistent user experience across IVR, text, and mobile channels, making best use of each of these channels.

Below, there’s some screenshots from Prime Telecom used on the iPhone.

VoiceObjects Implementation Analysis

Friday, July 29th, 2011

So, your VoiceObjects project has grown considerable from a humble start, new Modules are added on a daily basis, and you’re getting close to the user acceptance testing or going live date? At this point, you might want to do a few sanity checks on your VoiceObjects implementation, for example to verify consistency and completeness in event handling, tuning, and several settings that have an impact on reporting.

Now, going through your project object, opening and clicking your way through each object is of course a little cumbersome, to say the least. What if you could create simple, nifty call flow implementation reports with concise, easy-to-check lists, by just clicking a button?

“Wait!”, I hear you say, “VoiceObjects generates highly configurable, comprehensive, fully hyperlinked PDF documentation based on your applications. Why not use that?” And the answer is: Yes, please do! That documentation can indeed be customized to a high degree and is a great tool for checking the implementation. However, what I’m after here is much more focused, and will provide documents that provide one simple checklist or table at a time.

The solution that I am presenting here is based on the fact that VoiceObjects projects can be exported to VoiceObjectsXML (which is an XML format), and on XSL transformations (XSLT). All you need is a text editor (to edit XML documents) and a web browser. You’ll find sample code for download down below.

To get started, let’s focus on a simple task:

  • We want to get a sorted list of all Modules in your VoiceObjects application indicating whether the Enable History Tracking option is enabled or disabled (this option defines whether a Module will be part of the Module Sequence and Dominant Path Analysis reports in VoiceObjects Analyzer).
  • The list should have two parts; first a sorted list of names of all Module with History Tracking enabled, then all Modules with that option disabled.
  • The list should come as a simple HTML document that can be printed for documentation purposes, or copied and pasted into the full project documentation that our client is so eagerly waiting for.

The idea is to create an XSL transformation that takes the VoiceObjectsXML export file, parses it, filters out the data we’re interested in, and displays it in HTML. This is the XSL document that will do the trick:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
  <xsl:template match="/VoiceObjectsXML">
    <html>
      <head>
        <title>VoiceObjects Implementation Report</title>
      </head>
      <body>
        <h2>History Tracking <em>Enabled</em></h2>
        <ul>
          <xsl:for-each select="module[@historyTracking='true']">
            <xsl:sort select="@name"/>
              <li><xsl:value-of select="@name"/></li>
            </xsl:for-each>
        </ul>
        <h2>History Tracking <em>Disabled</em></h2>
        <ul>
          <xsl:for-each select="module[@historyTracking='false']">
            <xsl:sort select="@name" />
            <li><xsl:value-of select="@name"/></li>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

If you have used the XPath query language before, this document will be an open book for you. XSL uses XPath expressions to browse through documents, filter for nodes with certain attributes, do sorting, and much more. What our sample XSL does is

  • locate the root <VoiceObjectsXML> node that every VoiceObjects project export file starts with;
  • generate a HTML header and some headlines;
  • iterate over all Modules in the VoiceObjectsXML document (node name: <module>), first selecting only those with the attribute historyTracking=’true’;
  • within each list, sort by and display the Module name (which is an attribute of the <module> element).

Now, we still need to know how to apply this XSL transformation to an existing project export file. Easy:

  1. Save your XSL transformation file in the same folder as your project export file. Let’s say you stored it under the name myTransformation.xsl.
  2. Now, open your VoiceObjects export file in a text editor, and insert a new line (referencing your xsl stylesheet) right after the first line:
            <?xml version="1.0" encoding="UTF-8"?>
            <?xml-stylesheet href="myTransformation.xsl" type="text/xsl" ?>
            <VoiceObjectsXML version="10.0">
              ...
            </VoiceObjectsXML>
  3. Save and close.
  4. Now, open that export file in your favorite web browser.

This is the result, when applied to the Prime Telecom sample application:

History Tracking Enabled

  • _Prime Telecom Portal
  • Call Back
  • Change Add-Ons
  • Change Bank Account Details
  • Change Email Address
  • Change Payment Settings
  • Change Postal Address
  • Enter new Credit Card
  • Main: Billing
  • Main: Customer Data
  • Main: Service Plan Mgr
  • Main: Support
  • Order Add-On
  • PIN Authentication (if necessary)
  • Present List of Add-Ons
  • Present Single Add-On
  • Transfer Call to Agent
  • Update Credit Card Expiration Date

History Tracking Disabled

  • Cleanup
  • Session Init

Obviously, this concept can be applied to a wide variety of checklist requirements. In the sample XSLT document that we provide in the link below, you will see how to generate comprehensive, ultra-focused overviews of …

  • Layer objects that have “Layer State Logging” enabled / disabled, making sure that Business Analysts looking at the Personalization (or “Layer Usage Overview“) reports in VoiceObjects Analyzer will only be presented with Layer State reports that make actual business sense;
  • … all Tuning Parameters set on all dialog component objects;
  • … all Event Handlers, so as to verify consistency of all Event Handling implemented in your project and to check whether the Finish Task option was properly set on each Event Handler (which in turn is required for consistent reporting on Business Tasks);
  • … Input States with “Mask Caller Input” enabled / disabled (this is a feature that allows to mark Input objects as dealing with sensitive input such as credit card numbers or PINs)
  • … Menu objects and their menu items, to verify whether Menu options such as the Auto-Numbering, Return to the menu after subdialog processing, and others are properly set.

There’s of course many, many more report and checklists that you can generate this way. It’s a great technique to quickly check any aspect of your VoiceObjects implementation for accuracy, completeness and consistency.

And finally, here’s the download link promised earlier: VO_XSLT_Checklists.zip Extract this archive to some folder, then open PrimeTelecom.xml in a web browser (I’m using Firefox). It will display a series of sample checklists and tables. The XSLT document, VOanalysis.xsl, that is used here should be a good starting point for your own endeavors.

New Best Practices Technical Article on Business Tasks

Thursday, March 31st, 2011

IVR developers often put in a lot of work in order to match reportings requirements from their business stakeholders. In particular, providing solid KPIs (key performance indicators) on self-service task completion rates routinely turns out to be a somewhat tedious and error-prone task. Getting information on call transfer rates vs. IVR containment rates is easy, but knowing how many customers were really successful in getting the info they were seeking, in being transferred to the right agent group, in using self-services to top up their account or transfer money … that’s often a little more involved.

The VoiceObjects application life cycle platform makes providing sound, business-level reporting as easy as it gets. The VoiceObjects solution is based on rich, fully automated functionality around the unique “Business Task” object that developers use to define success and failure criteria for business tasks. VoiceObjects Analyzer provides a set of standard reports on Business Task execution results, including the Business Task Completion Rates report (a screenshot is shown below, full documentation can be found here).

Based on real-world experience from a large number of customer implementations, we have assembled a Business Tasks Best Practices technical article that is available in the Tech Topics – Articles section of the VoiceObjects Developer Portal. It addresses VoiceObjects developers who want to get a full understanding of the Business Task framework and who want to provide great business-level reporting with least effort. It gives valuable insight on the proper design, implementation, testing and reporting of business tasks.

This new technical article is a highly recommended read for VoiceObjects developers right after the first product training as well as for seasoned VoiceObjects veterans who are interested in the consolidated best practices from numerous customer projects.

Business Task Completion Rates Sample Report

Business Task Completion Rates Standard Report - Based on data from the multi-channel Prime Telecom sample application

BusinessObjects – Special Hint to “Connection Overload”

Wednesday, March 2nd, 2011

Did you ever want to point users of your BusinessObjects environment to different data sources (e.g because they belong to different subsidiaries, etc.) ?
As you might know a BusinessObjects universe can only belong to a single data source connection. So how could you achieve that the connection changes depending on a user login?

The answer is to use a feature called “Connection Overload” that is somewhat hidden within BusinessObjects. This blog post describes how this feature perfectly fits together with a multi-tenant setup of VoiceObjects.

Lets imagine for a moment that you have a VoiceObjects multi-tenant setup with two custom sites, representing subsidiaries in the USA and Germany. As their deployments are separated within VoiceObjects based on their sites, you also want to make sure that the reporting is filtered that way. In addition to the two sites and their users you have administrators who are responsible for maintaing and operating the entire VoiceObjects installation, so they should also get a combined view in the reporting.

At first you would have to create the VIEW layer (remember that the Business Intelligence tool always is pointed at the VIEW layer of Infostore, not at the TABLEs) for all three groups:
1) Create three database logins, each having the proper rights to access the Infostore tables that are filled with data by VoiceObjects Server and to create VIEWs.
2) Login as the first DB user and execute the LDVWCreate_EN.sql script that is delivered with VoiceObjects. This will create the unfiltered VIEW layer for the administrators.
3) Login as the second DB user and run the same script but with an additional WHERE condition that filters out all data not belonging to the US subsidiary
4) Log in as the third DB user and run the same script this time with the site filter for the German subsidiary
NOTE: Example scripts for the steps 2-4 for SQL Server & VoiceObjects 10.0 can be downloaded here.
5) Use a DB query tool to verify that all three VIEW layers were created and that they contain the right data, e.g. run the following small sql statement:
SELECT * FROM VOLDSITOBJ
It should return, depending on the DB user you run it with, either entries for all three sites (System, USA and Germany) or just USA or just Germany.

Next you would need to create three corresponding ODBC connections (VIEW_Infostore_All, VIEW_Infostore_USA and VIEW_Infostore_GER) on the server machine running BusinessObjects as well as three connections (Infostore_All, Infostore_USA and Infostore_GER) within BusinessObjects Designer using the previously created ODBC connections.

Now you need to create two additional BusinessObjects users, by using the BusinessObjects Central Management Console, one for the US and one for the German subsidiary (the standard admin user will be used to access the unfiltered data).
After that switch back again to BusinessObjects Designer and create two access restrictions (Tools -> Manage security… -> Manage Access Restrictions). In the pop-up windows select “New” at the bottom of the left pane. Then define the access restriction by setting a name (e.g. USA_repository) and selecting the connection that corresponds to the US subsidiary. Next create a similar 2nd access restriction for the German subsidiary.
Once both access restrictions have been created you need add the newly created users by clicking on “Add user or group” on the bottom of the right pane and then map those to the users you just created by using the “Apply” button in the middle of the “Manage Access Restrictions” window. Map the access restriction for US to the US user and do the same for the German one as well. Click OK to save your changes afterwards.

Back on the Designer screen, select “File” -> “Parameters” and select the Infostore_All connection and confirm by clicking “OK”.
Then save and export the universe.

Next we need to set the proper rights to the newly created users, so that they can access the universe and the reports.
In order to do that do the following:
1) Login as admin to the Central Management Console
2) Define “VIEW-On-Demand” rights for all Connections to all users, additionally “Full Control” rights are needed on the connection the user belongs to
3) Define “Full Control” rights for both users on the folders, categories and universes belonging to VoiceObjects Analyzer.
If you have any problems with the right assignments please contact your BO administrator or refer to the corresponding BO documentation.

Finally, log in as administrator, US_subsidiary and GER_subsidiary and run a report to verify that you do get the expected results. A good example would be “Service Analysis” from “Application Development and Tuning”. The report should either show you all services or just those services belonging to your subsidiary (= site), depending on which user you used to run the report.

Hopefully you enjoyed reading and following the steps through this blog post, next time we will show you how you can create “rolling” filters (e.g. for the last 7 days) in MicroStrategy and how these can be used for scheduling a report.

Elementary, my dear Watson

Friday, September 17th, 2010

Well, that exact quote cannot be found in the Sherlock Holmes novels from Sir Arthur Conan Doyle. But it is used so often that it got “common use”.
And it fits perfect related to our latest enhancement of VoiceObjects (all versions!):
WATSON
Watson is a real elementary new tool for you and your communication with Voxeo Support regarding any VoiceObjects issue.

What is it all about?

Ever stumbled on “What data to send to support”?
Then the next quote comes into account:
It is a capital mistake to theorize before one has data.” (The Adventures of Sherlock Holmes (1892))
As Voxeo Support always aims in getting better, we would like to get rid of these uncertainties.
For you to get the best support in the shortest time possible.
For us to avoid theorizing on your issue and getting lost in false assumptions.

Watson will help both of us!

Watson is a tool to collect all data of interest from your VoiceObjects instance. It will gather logs, settings, database information and some other things.
All these information go into one archive which can then easily be uploaded to the Evolution portal when opening a ticket or when support is asking for more data.

What is it not?

Watson is not designed to analyze your information
It is just the collector of information.
Therefore “You see, but you do not observe.” (The Adventures of Sherlock Holmes (1892)) is also true.

Analyzing your information is a task for the support team.
Additionally, we will be very happy to help you understand the file contents for your own assessment of issues!

Details?

Please see the knowledgebase article on Watson for a more detailed usage description.
The nice thing about Watson is that you can use it in older versions of VoiceObjects too – just get the setup archive from the knowledgebase article and get started!

Now some of you might think – “Hey, I have seen something similar already”. Yes, we copied ourselves. Shamelessly ;)
Watson has been inspired by our Prophecy “Perry” tool which is located in your local Prophecy installation.
So in case of an issue while running Prophecy Pro on your premises you might be asked to run “prophecy run perry” and Watson.

Nice, isn’t it?
Many thanks to Jochen Fischer for this tool!

Best Practices Jam Session on Reporting and Analytics

Tuesday, September 7th, 2010

In the upcoming jam session, Andreas Volmer and Martin Mauelshagen will talk about ”Voxeo VoiceObjects – Reporting and Analytics Best Practices”.

With (voice or multi-channel) applications created in VoiceObjects, comprehensive reporting and analytics comes out-of-the-box: VoiceObjects Analyzer reports help you understand how callers use the application, where they struggle, and what the task completion rates are. In order to make best use of this highly integrated platform, call flow developers should be aware of how their implementation design decisions influence reporting.

In this webinar, we will create simple call flows using Module, Menu, Input, Layer, and Business Task objects, make test calls, and show the results in VoiceObjects Analyzer standard reports. Our aim is to show how the value of reporting can be maximized by making proper design decisions.

We will try to make this webinar useful both for absolute beginners and for VoiceObjects veteran developers!

REGISTER NOW 

Date:
September 29,02010
Time:
8:00 AM Western, 11:00 AM Eastern, 5:00 PM Central European
Speakers:
Andreas Volmer, Presales Manager EMEA
Martin Mauelshagen, Business Intelligence Engineer

Looking forward to welcome you in this session.

HowTo call stored procedures in a database server from VoiceObjects

Tuesday, August 10th, 2010

Did you ever wonder what’s the best way to call a stored procedure in a relational database server from your VoiceObjects call flow implementation? As you might know, the new Database object was added with VoiceObjects 9.1, and it greatly facilitates the task of executing SELECT, INSERT and UPDATE statements in a database server. However, it just doesn’t deal with stored procedures. In many projects, however, database content must be accessed through stored procedures, while direct use of DML (Data Manipulation Language) commands (such as SELECT or INSERT) is a no-no.

So, we went ahead and created a generic VoiceObjects Connector implementation that should be useable in most if not all instances where database integration via stored procedures is required. It was implemented as a CGI connector – that is, the connector code will be deployed as  a web application in a web application server (such as Tomcat), and communicate with the VoiceObjects Server via XML/http. It supports calling stored procedures with any number of IN and OUT parameters of all kinds of data types, and deals with result sets that may be returned by  the stored procedure. Plus, it leverages database connection pools that are configured and maintained on the web application server.

If you’re interested, find all you need to know about this generic “database stored procedure connector” in this new Knowledge Base article. There, you’ll find background information, installation and configuration instructions, as well as the actual download of the connector including the associated Java sources.

PS: Note that the implementation of this new CGI connector actually builds on the Java Servlet framework for CGI connectors that was presented in this recent blog post on VoiceObjects back-end integration.

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

Now available: The VoiceObjects Support Knowledge Base

Sunday, October 4th, 2009

Some weeks ago,  I announced the availability of VoiceObjects Evolution as the new Support Portal for our customers and partners – and that developers will get support for the Developer Edition through our Voxeo Evolution Portal.

Today we are opening our treasure chest a little bit!

Now available: The VoiceObjects Support Knowledge Base

You are now able to access Voxeo’s VoiceObjects Support Knowledge Base in our Evolution Portal. Just go to Documentation -> VoiceObjects Knowledgebase.

Articles in the Knowledge Base are written by our consultants, technology specialists and our Support team. They mostly cover frequently asked questions and general challenges from support, training and customer projects. This information is likely to be very helpful for you.
We open the Knowledge Base to share some of our knowledge and to support you with new ideas on how to approach a solution. Of course we also hope to get more of your feedback!

All articles have been reviewed internally. But – as the Knowledge Base is intended to be more dynamic than Voxeo’s VoiceObjects documentation, it might sometimes be the case that not everything in the Knowledge Base is a perfect fit for your issue. So some of the articles will refer to the documentation to avoid having the same content twice.
The Knowledge Base articles are not intended to replace the documentation or to give answers to all questions. They are primarily aimed at helping users in situations that are too specific to be handled in the documentation.
Please note that from time to time we might move articles from the Knowledge Base to the documentation – and vice versa.

Also note that some articles might describe behavior that is specific to a certain version of VoiceObjects (or other software) and thus cannot be generalized.
In case you can’t find the information you are looking for, please visit the Developer Portal to review the entire VoiceObjects documentation, the release notes and our developer blog!

Our Knowledge Base is updated frequently. We add new articles or remove articles which are no longer valid.
Therefore we need your input!
Please let us know what you think – about individual articles and the Knowledge Base system itself.

Please provide any feedback as article rating and in the VoiceObjects Desktop / Developer Edition Forum in the Support Forums of Evolution – until the comment functionality in the knowledgebase is available!