Posts Tagged ‘VoiceObjects’

VoiceObjects 11.1

Monday, January 2nd, 2012

First off, we’d like to take the opportunity to wish all our readers a happy, healthy, prosperous new year 2012!

And to contribute our part to a good start, we’d like to draw your attention to VoiceObjects 11.1, which is now available on both the Service Portal and the Developer Portal. Highlights include:

  • New jQuery Mobile driver
    The new jQuery Mobile driver for the mobile Web channel enables applications to use a near-native look and feel on iOS and Android devices. We’ll provide more details in a separate blog post soon.

         

  • Augmented Service-level configuration
    Rendering templates for the textual channels as well as libraries for dynamic Text-To-Audio (TTA) conversion can now be configured on the level of the Service object, making it easier to swap them out or to add new ones.
  • Enhanced JSON support
    The Connector object now provides built-in handling for responses in the JSON format and enables the use of the Result Mapping functionality on them. In addition, new Expression functions have been added to convert between JSON and XML. Here, too, a subsequent blog post is going to dig into more details and explore typical use cases.
  • Integration with external authentication frameworks (e.g. LDAP)
    The User object now provides additional configuration capabilities to easily connect to external authentication frameworks such as LDAP to facilitate single sign-on.

Give VoiceObjects 11.1 a try and let us know what you think!

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.

A glance at the future

Tuesday, May 3rd, 2011

After just having brought VoiceObjects 10.0 up-to-date, we’d like to give you a brief preview of things to come in the next few months, namely VoiceObjects 10.1. This is the release we’re currently working on, and it will focus on enhancements in Infostore and in Desktop for Eclipse.

Infostore
Every useful application needs to have some amount of backend access – be it reading a customer profile, setting status in a database, or triggering a transaction in an ERP system.

When analyzing an application’s performance it is therefore desirable to have detailed information on the performance of these backend calls. Infostore currently provides minimum, maximum, and total times (from which the average can readily be obtained).
With 10.1, a new table is introduced that tracks each backend call individually, for Connector and Database objects as well as, optionally, for Script objects. So for each individual call there is precise timing, as well as tracking of the amount of data sent to and received from the backend. Aggregate values are provided on the level of Business Tasks and for the entire dialog.

An ID can be assigned to each backend (e.g. “CRM”, “TrackingDB”, etc.) so that different calls to the same system can be grouped in reporting. This also enables you to analyze backend calls “in both directions”, i.e. access to different systems from within the same application as well as access to the same system from within different applications. Both are very relevant sets of questions when making sure that your production architecture is up to its task.

Desktop for Eclipse
More and more of you use Desktop for Eclipse to work in multiple different environments; not only standalone and VoiceObjects On-Demand mode but also multiple different network mode connections. So we have been asked whether we could make switching between multiple connections easier – and we’ve listened.

With 10.1 we’re switching from the current static division (standalone, network, VoiceObjects On-Demand) to a flexible model in which you can define any number of connections (of type network or VoiceObjects On-Demand) and switch between them at will. On top of that, we also make it easier to combine metadata and Control Center connections. This should be real boon to power users!

Beyond these major blocks, there are a number of smaller extensions such as improved support for REST-style interfaces. We will provide more information on these, and on the ones listed above, as we get closer to the release itself.

For the time being: Make sure you have VoiceObjects 10.0 R2, lean back, relax, and enjoy the ride toward 10.1 :-)

VoiceObjects 10.0 Revision 2

Monday, May 2nd, 2011

Revision 2 of VoiceObjects 10.0 has been posted to the Developer Portal as well as the Service Portal.

Revision 2 addresses view refresh problems in Desktop for Eclipse, deployment issues when using VoiceObjects On-Demand,  and problems with cache standby in VoiceObjects Server. The update is recommended for all current users of VoiceObjects 10.

Social CRM And Building Apps to Monitor Social Channels

Wednesday, March 30th, 2011

We would like to invite you to our next developer jam session scheduled for Thursday, April 07, 2011.

Two thirds of today’s Internet users actively engage with social networks such as Twitter or Facebook.
They use it mainly for personal communication, but often share feedback and thoughts about product or
service experiences. Companies need to contribute to this conversation to protect their brands, enhance
customer service or provide proactive customer care. They are or will soon be faced both with a staffing
problem and the technical challenge of having to integrate with their more traditional customer interaction channels.

Learn how Voxeo can help you automate communication over social channels and bridge the gap between social
networks and traditional channels such as IVR or direct agent interaction.

Register today for this session

Time: 8:00 AM US Pacific, 11:00 AM US Eastern, 5:00 PM Central European time

Title: Social CRM And Building Apps to Monitor Social Channels

VoiceObjects 10.0 Revision 1

Thursday, March 24th, 2011

In the few short months since releasing VoiceObjects 10, we’ve been busy working on enhancements, and we’re happy to announce that VoiceObjects 10.0 R1 is now available for download from both the Service Portal (for existing customers) and the Developer Portal.

It packs quite a list of improvements for a humble revision, and in a range of different areas:

  • Password policy enhancements
    User accounts can now be automatically locked after a certain period of inactivity. When locked e.g. by repeated wrong login attempts they can also be automatically unlocked after a given period. The number of simultaneous logins by the same user account can now be limited, and it is even possible to integrate with external authentication mechanisms.
  • IP stickiness
    Specifically relevant for the mobile web channel, sessions can be made “sticky” so they can only be continued from the same client IP address.
  • New Expression functions
    The new functions encodebase64, decodebase64, urlencode and urldecode provide additional flexibility in dealing with embedded data.
    The break, continue and return functions allow you to influence dialog processing behavior.
    The addxmlrow function offers an alternate way of augmenting collections.
    And finally the transferdestination function lets you set data for Infostore.
  • New Web Service Interface method
    The new method writeAuditTrail gives third-party applications a chance to include their messages in the VoiceObjects audit trail stream, simplifying the monitoring of access and changes.
  • Storing recordings
    Recordings of caller input can now also be stored using FTP or HTTP uploads.
  • Application defaults
    The XML file that provides application default information can now also be loaded using HTTPS and/or basic authentication.
  • New drivers
    Support has been added for Avaya MPS and Commetrex BladeWareVXi
  • Bug fixes
    Dragging a new Connector object from the Object Palette into the dialog flow now gives you the correct editor.
    Proxy authentication in Desktop for Eclipse now works properly.

As always, we hope you enjoy the new capabilities and look forward to your feedback!

Upcoming Jam Session: PeriPro IVR Apps? Learn About Voxeo’s New Automated Migration Tool

Tuesday, March 8th, 2011

Many legacy IVR platforms are at or nearing end-of-life.  While PeriProducer was once a powerful and effective IVR platform, customers are now looking to replace it with a next generation service creation, management and reporting environment that will protect their investment with 100% standards compliance and support for multiple customer contact channels – not just voice.

In this webinar, we will show you the process in action by: taking an existing PeriPro application, running it through the converter, importing it into VoiceObjects and making the first call to your new VoiceXML-based IVR application.

Register today for this Developer Jam Session.

Date: March 10, 2011
Time: 8:00 AM US Pacific, 11:00 AM US Eastern, 5:00 PM Central European

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.

How to link VoiceObjects to IMified to create apps for Twitter or IM/chat

Thursday, December 2nd, 2010

In this week’s Developer Jam Session, Serving the Social Customer: Scaling Your Support for Twitter, Facebook and more, I touched on how to use VoiceObjects to create an application that interacts with users over Twitter. The steps are rather straightforward:

  1. Create your application in VoiceObjects (and include a text layer).
  2. Deploy the application to an Internet-accessible VoiceObjects Server.
  3. Create a “bot” at IMified.com that points to the URL of your VoiceObjects application.
  4. Link that bot to the appropriate Twitter or IM/chat accounts.

For this to work, you naturally need to have an IMified account, which are free to developers if you don’t already have one.

You also need to make one critical addition to the URL for your VoiceObjects server when you enter the URL into the IMified bot configuration. You need to add this text to the end of the URL:

&vsDriver=173&User-Agent=IMified

For example, your URL might be:

http://myserver.com:8070/VoiceObjects/DialogMapping?VSN=testService&vsDriver=173&User-Agent=IMified

With that, your app will be all set to communicate out to Twitter or the various chat networks via IMified!

For more detailed information about this process, Tobias Göbel, wrote up a great post last year called “How to IMify your voice application” that goes through the steps.

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!