Posts Tagged ‘VoiceObjects Developer Edition 7.4’

Peek under the hood

Friday, June 26th, 2009

Are you the kind of person who took apart gadgets when you were young, just to see what they looked like on the inside? Are you unafraid of getting your hands a little dirty to better understand how the cogs move the shafts? Then this article is for you!

Voxeo VoiceObjects Developer Edition provides you with an all-in-one framework for building, testing, deploying, and monitoring phone applications using multiple phone channels such as voice, texting, or mobile web. It does this in part by incorporating a full-fledged Voxeo VoiceObjects platform “under the hood”, configured and operated in such a way that you do not need to see or touch it for all standard tasks. Just like the motor in your car it just runs whenever you turn the key, and the only maintenance required is an oil change every now and then. Yet the hood isn’t welded shut, and if you really want to you can sneak a peek inside. As a first step what we’ll do today is to create a Control Center entry for the embedded server, so you can watch its status and activity.

The Control Center is the graphical component that lets you monitor and control VoiceObjects servers, either on their own or in clusters. A detailed description of the functions and capabilities can be found within the Deployment Guide.
To configure a Control Center connection in Voxeo VoiceObjects Developer Edition, open the Eclipse preferences and go to the VoiceObjects section.

 ccaddconnection

The bottom half of the pane lists all configured Control Center connections; initially (as shown in the screen shot) this list is empty. Click “Add…” to add a new connection. This brings up a new window in which to configure the connection.

ccaddconnection21

For a connection to the embedded server we use the default VoiceObjects account voadmin (which, if you haven’t changed it, has the default password manager). Again by default, the port used by the embedded server is 8070. The Testing URL parameter is used by the Debug Viewer, so it isn’t strictly required but convenient to have in place. Finally, an Alias is required to identify the Control Center connection since you can have any number of them.

Once you have defined your Control Center connection and stored the updated preferences, your Control Center view should look like this:

 ccview

If the Control Center view should not be open in your Eclipse perspective, you can open it from the Window menu.

ccviewopen

The first tab within the Control Center view, called Server Manager, gives an overview of the VoiceObjects Server and the corresponding server instances. For the embedded server in Voxeo VoiceObjects Developer Edition, there is only a single server instance on localhost.
The second tab, called Service Manager, lists all services deployed on the server.

ccservice

On the embedded server, there is only a single service called testService. Do not be unduly alarmed if it shows a yellow warning triangle as in the screen shot above – usually this simply means that you haven’t actually deployed an application yet, so the service doesn’t quite know what to do with itself. A situation that can easily be rectified by deploying an application using the Test Application entry in the Object Browser context menu:

pitestapp

This brings up the Test Monitor view – which actually is a simplified version of the Control Center you have just created!

pitestmonitor

When you switch back to the Control Center view and click the refresh button (the intertwining green arrows just above the drop-down selection box) your service entry should now be green and happy:

ccservice2

A right-click on the service opens up the context menu of available actions, including the ability to start a Debug Viewer session for the service. This does the exact same thing as clicking the Debug button in the Test Monitor view.

ccservicecontextmenu

The other context menu entries will no doubt be tempting to play with, but we’d strongly recommend to at least read the documentation before doing so to avoid unexpected results. 
Don’t say we didn’t warn you! :-)

After completing a call in the Debug Viewer and going back to the Control Center view (and possibly hitting the refresh button again) you’ll see your successful call listed in the Finished column.

ccservicefinishedcall

In this final screen shot, you may notice the black lamp in the System DB Logging column that will show the tool tip Overridden when you place your mouse over it. This is due to the fact that while the service would like to write its statistics to the Infostore database, no appropriate connection has been configured for the server. This is something we’ll jointly rectify next week. Until then you may want to brush up your Infostore knowledge so you’re all set and ready to go.

With your new Control Center entry and the server’s activity in full view, you may be interested in seeing the wheels spin at higher speeds. Our next Developer Jam Session, scheduled for July 29 at 11am Eastern, will feature Andreas Volmer talking about the LoadTester component of the Voxeo VoiceObjects platform which, unsurprisingly, is designed for load testing your applications. Registration is highly recommended!

The power of copy&paste

Monday, June 22nd, 2009

After we’ve seen last week how to keep the Voxeo VoiceObjects Developer Edition well-oiled, and how to make best use of the Outline view, it’s time this week to take a look at some hands-on tips. We know that tastes differ, and that the keyboard – and particularly the CTRL+C / CTRL+V keys – have a special place in many a developer’s heart. So today we’ll take a look at the shortcut notation that can be used to create object references without ever having to touch your mouse.

Our examples use the Output object, but the same functionality is available in other structurally similar places such as e.g. the Log object. The screenshots in this article use the Canyon theme to provide some diversity.

Voxeo VoiceObjects Developer Edition is based on the concept of drag&drop, and many users will want to assemble their objects e.g by typing static portions and then bringing in object references by dragging them from the Object Browser or from the Object Palette.

dragdrop1

This creates a textual reference to the object indicated by square brackets and boldface, e.g. [V:Song]. Double-clicking the reference opens the respective object editor, and the object’s short description is displayed in a tool tip when the mouse hovers over the reference.

shortcutnotation2

Dragging and dropping is swell, but sometimes you know exactly which objects you want to reference and would prefer not to interrupt the flow of typing. And the great thing is that in these cases, you can also just type in the textual reference!

shortcutnotation1 

To make this as easy as possible, object references are validated in real time as you type. So when you start with something like [V: and then type the name of the Variable object to be referenced (more on object types below) followed by a closing bracket ] the object reference is recognized and automatically highlighted in boldface.

shortcutnotation3

But what if you mistyped the object name? Well, that’s recognized, too, and indicated by red font and question marks:

shortcutnotation4

You can simply correct the typo (in this case replace the “i” by an “o”) and the reference will again automatically and immediately change into the boldface [V:Song]. Neat, right?
And despite all the extra functionality of being clickable and showing tool tips, the shortcut notation references still are “normal” text, so you can handle them like you would any other text. In particular, you can copy and paste them e.g. from one Output item to another, or from an Output object to a Log object.

Before saving an object you should make sure that all invalid references are corrected. Why?
A correctly established object reference is stored internally as such, i.e. in our example the Voxeo VoiceObjects platform knows that when processing the Output object, it needs to refer to the value of the Variable object “Song”. When saving the Output object with the invalid reference to the “Sing” variable, no such dependency can be established and therefore what you intended as a reference will (need to) be treated as pure text. So instead of “You are about to download Like a Virgin” you’ll hear “You are about to download Sing”.

As mentioned above, the different types of objects that can be referenced using shortcut notation are identified by the initial letter following the opening bracket (note that not all types are appropriate in all places, e.g. an Output object cannot be referenced within a Log object):

  • [A:Audio] references an Audio object
  • [C:Collection] references a Collection object
  • [E:Expression] references an Expression object
  • [L:Layer] references a Layer object
  • [M:Movie] references a Video object
  • [O:Output] references an Output object
  • [S:Silence] references a Silence object
  • [V:Variable] references a Variable object
  • [X:Script] references a Script object (which is eXecutable)

So the next time you need to insert an object reference into your Output item or Log entry, be aware of your options. Nothing wrong with dragging and dropping; nothing wrong with just typing along. All just a matter of taste.

By the way, to pre-empt a common feature request: We know that it would be *really* neat if you could start typing e.g. [V:So and be presented with a list of possible completions. It’s high on our own wish list, too; stay tuned and you may see this and other things show up in future versions.

Finally, if you’re reading this close the date of original posting, there’s still time to register for our next Developer Jam Session. It’s coming up this Wednesday, June 24, at 11am Eastern and deals with Integrating advanced call control in VoiceObjects applications using CCXML.
And if you’ reading this article at your leisure later on – fear not, because our archived jam sessions are available here for your convenience.

How to grease lightning

Thursday, June 18th, 2009

After our recent lengthy article on the benefits of the editor outline, today’s is a much shorter but no less important tip when working with Voxeo VoiceObjects Developer Edition.

As you may know, the Developer Edition provides a convenient all-in-one packaging of the entire Voxeo VoiceObjects platform. One of its invisible parts is an embedded database that is used to store all object definitions and deployed services. It is based on the acclaimed Apache Derby DB and usually provides you with excellent, reliable, and fast service whenever you turn the key. In grateful return, you should tend to its needs every now and then.

When you work on your applications, entries in the database are created, modified, and deleted. Over time, this can lead to a certain amount of disorder and dirt that accumulates in the DB tables - engine gunk, as they call it in the car commercials. It can lead to sluggish performance e.g. when opening projects or saving objects. Not to worry, though, since there is an easy solution that you can apply without ever having to open the hood.

From the VoiceObjects menu, select the entry Optimize Embedded Database.

optimizedb1

This starts a fully automatic clean-up and optimization process, which may take a couple of minutes depending on how big (and dirty) your database has become.

optimizedb21

This time is very well spent, however, since after it is finished you will likely notice a significant boost in responsiveness and performance. Cleaner engines do run faster.

Think of it as an occasional oil change for your IDE. No need to do it on a weekly basis, but every couple of months or whenever you have the feeling that Developer Edition has become noticeably slower than it used to be is a good time.

I’m not lost, but I don’t know where I am

Tuesday, June 16th, 2009

It’s time for another entry in our “tips and tricks” series on VoiceObjects Developer Edition. Today we want to take a closer look at the editor outline view and how you can use it to quickly find your way in complex object definitions.

Take a look at the List object below (we’re using the Neon theme here for maximum impact):

listobjecteditor

Feeling lost yet? Don’t! The outline’s here to help.
At its top level, the outline shows all the sections that can be defined for a specific object. All object types have the Definition and the Properties sections. Other sections vary depending on the object type. For example, objects representing input states (such as the Input or Menu object, or indeed our List object) have Event Handling and Tuning sections.

outlinetop

Just like the editor itself, the outline uses color coding to indicate required sections. A section is shown as required as long as it contains at least one undefined required field or sub-section. By expanding the marked sections using the “+” buttons you can drill down into these sub-sections. 

requiredfields1

Click on a section header in the outline to open the respective section in the editor. If necessary, the editor will scroll to bring the section into view.

sectionclick1

As you define some of the fields in the editor, the color coding of the sections changes and you see the “(…)” icon indicating that the respective section contains entries. In our example we start by filling the Data Definition section:

filledsection

The Voxeo VoiceObjects platform uses a full object-oriented approach for maximum re-usability, so in particular you can always utilize autonomous objects in place of embedded ones. As an example within our List object, we utilize existing autonomous Output objects instead of defining embedded ones for the Welcome and No Data messages. To do this, simply drag the Output objects on the respective section headers. As they drop into place, the chain link icon symbolizes the reference. In addition, the respective section and all its parents are marked with the “*” icon to indicate unsaved changes.

linkedobjects

But the outline doesn’t just show information, it can also be used to modify the object. Right-click on a section header in the outline to get a context menu with options. In the example shown above, you can clear the reference to the autonomous object.
One of the places where the outline really shines is when working with sets of items. The Voxeo VoiceObjects tools use this concept in many places; a straightforward example are output items within an Output object:

outputitems1

Each item is represented by a separate entry in the outline. By default, these entries summarize the key settings made for the respective item – for output items these are the language, the occurrence level, and layer switches. If you define a label for an item, this is used instead.
The more items you have – and in multi-lingual applications using personalization and random prompting there can easily be quite a number – the higher the benefit.

outputitems2

Click on any item in the outline to open it, and to simultaneously close all other items that may be open in the editor on the same nesting level. This reduces visual clutter and makes working with items very efficient, even when there are many of them. Also, using the right-click context menu in the outline, you can add, remove, and clear items without the need to switch to the editor itself.
What we’ve shown here for output items works the same way, of course, for menu items, event handling items, grammar items – just any items you can think of. Isn’t consistency a wonderful thing?

So in summary, the outline provides you with

  • a quick overview of sections with content through the “(…)” icon;
  • a quick overview of sections with unsaved changes through the “*” icon;
  • a quick overview of sections with required fields through color coding;
  • a quick indication of linked autonomous objects through the chain link icon;
  • an efficient way of navigating to specific places in the object definition;
  • an efficient way of modifying the object definition;
  • the most efficient way of dealing with sets of items.

In a word: The outline is your friend. Make sure you treat it like one, and you’ll never be lost again.

–Incidentally, to give credit where credit is due: The title line is from the Talking Head’s “The Lady Don’t Mind”. Great stuff, if you happen to like it.

Turn that switch

Friday, April 17th, 2009

In this latest post in our “tips and tricks” series, we want to take a look at how to efficiently work with layers in VoiceObjects Developer Edition.

Layer objects are, as you probably already know, what the Voxeo VoiceObjects platform uses to enable dynamic personalization. To learn more about the concept, have a look at Volker’s excellent introduction. What we’re interested in here is how to utilize your layer objects to influence the behavior e.g. of prompts that are played.

When you open object editors in VoiceObjects Developer Edition you see that in many places you have a Layer field that allows you to apply personalization. To do this, simply drag&drop any layer state (not the layer object itself!) into the field. You’ll end up with something like this:

layerstateinitial

All good and fine. Now whenever the coffee size is “tall”, this particular output will be activated.
But what if you wanted to change the relevant layer state and use the output e.g. when the coffe size is “venti”? You could, of course, drag&drop that layer state onto the field to replace the existing content. But there’s a much simpler way! Just click on the layer state side of the entry, and a pop-up menu listing all possible states for this layer appears:

layerstatechoice

Now just select the state you want, and you’re done.

Sometimes you want to take a certain action when one specific case is present (e.g. the caller selected a tall coffee). Yet some other times you want to take a certain action when a specific case is not present – for instance you may want to let callers know that “venti” is really the best value option when they selected anything else. How can you achieve this?

Easy: Layer state conditions can use both the “equal” and the “not equal” operator. Just click on the operator, and you get a pop-up menu:

layeroperatorchoice1

Select “!=” for “not equal”, and your output will be activated whenever the caller selected either “tall” or “grande” (or any other layer state you may later add, other than “venti”).

Layers are an extremely powerful way of building personalized phone applications that dynamically adjust to your callers’ needs and preferences. For a lot more information take a look at chapter 7 in our Design Guide (PDF) and at the documentation of the Layer object in the Object Reference (PDF). Both are part of the VoiceObjects documentation, which is available in its entirety right here.

Join the adventure

Wednesday, April 1st, 2009

Building great phone applications is kind of an adventure all by itself. But let’s admit it, from time to time there’s also just the need for some good, clean fun. In this special edition of our “tips and tricks” series, we’ll show you that the Voxeo VoiceObjects tools can deliver on that count, too.

If you’ve already worked with VoiceObjects Developer Edition you know that it offers fully integrated application testing capabilities. Just select “Test Application” on any start object and use the Test Monitor to call the application using a variety of IVRs including Voxeo Prophecy, or step through the mark-up code using the Debug Viewer. When building text or mobile Web applications you can also use the Phone Simulator to experience the application in same way that it appears on actual phones including e.g. BlackBerries and the iPhone.
What you probably don’t know is that there’s more than meets the eye.

Are you bold and fearless? Are you willing to venture where few have dared to tread? Are you sure you don’t have any project deadlines coming up?
Then follow these steps into the unknown:

  1. Create a new Module object and call it “I want to play”
  2. In the Object Browser, right-click on the Module object and select “Test Application”testapplication
  3. This opens up the Test Monitor. Right-click the “Call” button and select “Phone Simulator – Web”

    testmonitor2

  4. Pick the phone skin of your choice – BlackBerry looks best.
    phonesimulator
  5. Enjoy
    adventure

Oh, and if you get stuck don’t hesitate to contact our Extreme Support. We’re here to help :-)

Exercise your options

Monday, March 30th, 2009

This is the second post in our “tips and tricks” series, and this time we’re taking a look at dialog flow options and new capabilities added with VoiceObjects 7.4.

If you have already worked with the Voxeo VoiceObjects tools you know that application dialog flows are presented in a self-organizing tree format, like this:

carinsurance

You read the flow from top to bottom, and at any point you can “drill down” to explore more details. In the  example shown above, you could expand the sub-sequence “Check applicable rebates” to examine its dialog interaction. Or, if you do not really care about that part of the application for the time being, you can leave it collapsed and have it out of the way while you work elsewhere.

By default, the dialog flow shows the “main path” through the application. In addition there are a variety of options that show more information and enable other ways of interacting with the dialog flow. To activate these options, right-click anywhere within the whitespace of a dialog flow editor:

displayoptionsgenericmenu

Alternatively, you can access the options by clicking on the Dialog Options button in the menu bar:

displayoptionsmenubar

Either way will get you to the Display Options window:

displayoptions

By default, only Show comment icons is selected. It alerts you to comments defined on objects by showing a text bubble icon to the right of the object name. The comment itself can be seen in the object’s tool tip. It is often used by designers to explain certain assumptions made in the object, or certain restrictions it exhibits.

healthinsurancecomment

Show Output items enables the separate display of each item within an Output object, as well as embedded outputs within other objects such as Modules, Menus, Inputs, etc.

outputitems

Show pre-/postprocessing enables the display of pre- and postprocessing for all objects that have it. For Module objects, it additionally shows Dialog End Processing.

piprepost

Enable validation automatically validates the dialog flow to indicate broken or insufficiently configured objects such as Inputs without grammars. Broken objects are marked in the dialog flow by a red name display.

brokeninput

Normally, the modified display option settings are only applied to the current dialog flow editor. By selecting Use as default for new worksheets you can set them as the new default for the current as well as all newly opened dialog flow editors.

But display options do more than just change the look of the dialog flow. They also offer additional ways of manipulating the dialog flow, always specifically adjusted to what you’re looking at. When displaying pre- and postprocessing, the respective embedded sequences can be manipulated in the dialog flow by simply dragging objects into them. Additionally, pre- or postprocessing can be set directly by dragging a Sequence object onto e.g. a Module object and selecting the respective command from the pop-up menu:

modulepopup

Likewise when displaying output items, embedded outputs e.g. in a Menu can be set by just dragging an Output object onto the Menu and selecting the desired target:

menupopup

The dialog flow display options are one of the ways in which users can customize the Voxeo VoiceObjects tools to suit their own preferences and working styles. Stay tuned, there’s more to come in future posts of our “tips and tricks” series. And as always, let us know what you think and how we can make you even more productive in building outstanding phone applications.

Colorize your life

Saturday, March 28th, 2009

VoiceObjects Developer Edition offers lots of little features that may go unnoticed with casual users. In a series of blog entries, we want to point them out to you so you can get the most out of your work with the Voxeo VoiceObjects tools.

As a start, we pick a fun feature appropriate for the weekend: editor themes. VoiceObjects Developer Edition offers five of them, which can be selected in the Advanced section of the Preferences:

preferencesthemes

The default theme is Arctic Blue, a suave mix of cool blues and sand tones that feel right at home within the Eclipse framework:

arcticblue

Lovers of understatement may prefer Slate, a monochromatic blend of solemn grays:

slate

More outgoing users will enjoy Neon, a no-holds-barred theme of greens and yellows that is sure to get your attention as well as that of your office neighbors:

neon

If you have been using the VoiceObjects tools for some time you may enjoy Classic, a theme that is reminiscent of the VoiceObjects Desktop for Web look:

classic1

Finally, the Canyon theme is our reverence to the rugged reddish beauty of the American West:

canyon

Pick the theme that fits your style or mood – add a bit of additional fun to building great phone applications in the Voxeo VoiceObjects tools. And by all means let us know which one is your favorite, and which other themes you would love to see in future versions!

General Availability of VoiceObjects Developer Edition 7.4

Monday, January 12th, 2009

VoiceObjects Developer Edition 7.4 is available for download now.

Exciting new features of this release include:

  • Support for 2-way SMS dialogs
    VoiceObjects 7.4 has expanded the text channel so that in addition to USSD dialogs text messaging from mobile devices using the Short Message Service (SMS) is now supported. The architecture follows a flexible, extensible adapter approach to be able to support arbitrary SMS gateways. Using the new functionality organizations can extend their automated self-service offerings to additional channels, providing users of mobile phones and messaging clients a powerful and efficient interface. Moreover, new customer groups may be entered by providing a means of interaction that is unmatchable low in cost.

  • Security enhancements
    Two new user roles as well as several new capabilities related to password handling have been added to VoiceObjects user management to support deployments in security-sensitive areas.

  • Newly supported Media Platforms
    Support has also been added in VoiceObjects 7.4 for the media platforms Nortel ICP and Voxeo Prophecy 9.0.
  • New expression functions
    A significant number of new expression functions has been added to enable more convenient manipulation of strings and dates. There is also a new function to easily apply configuration settings in a bulk operation. Visit our blog to learn how the new functions can be used: Exploring the new Expression Functions in VoiceObjects 7.4 and Handling Test Case Data in VoiceObjects 7.4

You can download VoiceObjects Developer Edition 7.4 from
http://developers.voiceobjects.com/downloads/

To learn more about VoiceObjects 7.4  join our Developer Jam Session on January 14th.
Join us to stay up-to-date with the newest release.