Archive for the ‘Project and Solution Deployments’ Category

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

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.

VoiceDays 2008 – VoiceObjects-related presentations

Monday, October 27th, 2008

Last week VoiceDays 2008 – the leading German speech technology event – took place. From the VoiceObjects perspective we are looking back to a really successful event. Numerous discussions indicate the growing demand for application development environments that provide independence of underlying IVR technology, that can handle multiple phone channels and modalities, and that provide powerful analytics.

During these two days participants of congress and tradeshow could attend numerous presentations; I want to share the VoiceObjects-related (primary German) presentations with you.

Three presentations were given by VoiceObjects customers, providing good insight into their experience with application development and deployment of automated self-services:

Daniel Hendling, T-Mobile International: Die integrierte Voice & Mobile Self-Service Strategie bei T-Mobile International

Marion Libossek, Telefónica o2 Germany: Der steinige Weg zum sexy Voice Portal

Christian Rosenberger, Swisscom: Das Swisscom-Sprachportal


My colleagues gave two presentations on multi-channel self-services:

Michael Codini, VoiceObjects: Die neue mobile Generation – Selfservice-Anforderungen in der Multichannel Kommunikation

Dr. Andreas Volmer, Multi-Channel Phone Services With VoiceObjects Server


And finally, I gave a presentation on analytics during the Demo-Forum session:

Michael Gill, Analyse- und Tuning-Tools: VoiceObjects Analyzer

D+S europe AG wins VoiceAward 2008

Wednesday, October 22nd, 2008

Just a quick note on a successful phone service deployed on VoiceObjects technology:
D+S europe AG has won the „Best Value-Added Service“ category of the VoiceAward 2008. The VoiceAward recognizes the wake-up service (Weckdienst) as best speech-enabled public phone service.

Award winners were selected by a panel of expert judges attending the recent VoiceDays conference (the German SpeechTek) in Wiesbaden. Judges looked not only for service usability, but also for the short development time and the cost-efficient realization.

The service can be accessed through the German service number 11864 (Deutsche Telekom) or 0900-500 11 55 (premium rate).

Welcome to the VoiceObjects Developer Blog!

Monday, October 13th, 2008

Welcome to the VoiceObjects Developer Blog. The VoiceObjects team is very excited about this new communication channel as this will enrich our growing developer community by sharing thoughts and experiences on various topics.

This weblog will focus on best practices for self-service application design, VUI / GUI design, analytics and reporting, and speech grammar development. Also we are going to cover new market and technology trends and how those impact the VoiceObjects product roadmap. Specifically on developments in the W3C standard bodies around VoiceXML. But also on emerging phone self-service channels such as Video, SMS, USSD, Web Chat and Instant Messaging. And finally we want to report about successful project and solution deployments with our SI partners and customers.

Here are the VoiceObjects team members who  will participate as authors in the Developer Blog:

Andreas Volmer – Presales Manager EMEA
Angelika Salmen – Manager VUI Services
Christopher Schick – Program Manager
Martin Mauelshagen – Program Manager
Michael Codini – CTO
Michael Gill – Director Product Management
Stefan Besling – VP Engineering
Tobias Göbel – Senior Presales Consultant
Volker Kraft – Manager Education Services

If you would like to stay  up-to-date  on what we are doing, please do subscribe to our site’s feed – and please do pass along your comments.  We’d love to hear from you.

The VoiceObjects team