The Confirmation object is a configurable dialog component to confirm and, if necessary, to correct information collected in the preceding dialog. It can be used to confirm individual caller inputs immediately after each is collected, or to confirm a summarized block of items at the end of an input series. If the summary is rejected, the caller can specify which item needs to be corrected.
The Object Definition below covers the configuration of the Confirmation object with VoiceObjects Desktop. For information on how to define this object type using VoiceObjectsXML refer to the VoiceObjectsXML Definition paragraph.
The Confirmation object belongs to the object category Components.
The first dialog flow example describes a simple confirmation dialog in a flight booking application.
|
Object – Caller |
Dialog Flow |
|
|
You are looking for a flight departing from Boston, which arrives in San Francisco today, June 20th at 9:15 AM. Is this correct? |
|
|
Yes. |
In the second dialog flow example the caller denies the flight confirmation and the dialog walks the caller through subdialogs to correct the corresponding information.
|
Object – Caller |
Dialog Flow |
|
|
You are looking for a flight departing from Boston, which arrives in San Francisco today, June 20th at 9AM. Is this correct? |
|
|
No. |
|
|
Which part do you want to change? The departure city, the arrival city, date or time? |
|
|
The arrival city. |
|
|
Where do you want to fly? |
|
|
Denver. |
|
|
So that’s a flight departing from Boston, which arrives in Denver today, June 20th at 9AM. Is this correct? |
|
|
Yes. |
The Definition of the Confirmation object provides the following sections:
· Confirmation Request
To define prompts asking for caller confirmation.
· Confirmation Grammar
To define acceptable input for confirmation and denial.
· Correction Request
To define prompts asking for the items that need correction (only in the voice and video channel)
· Correction Mapping
To specify how items are corrected.
· Options
To configure processing options for the Confirmation object.

In addition, the Confirmation editor provides separate Event Handling for the confirmation request as well as for the correction request.

For further details refer to Event Handling in this Object Reference.
Also refer to Pre-/Postprocessing, Navigation, Tuning, and Properties for details on more additional object configuration.
The Confirmation Request consists of three Output object definitions represented by the Initial, Event Reprompt and Confirm sections. It usually uses a combination of Variable objects, which contain information from preceding subdialogs, and various text elements or prerecorded Audio objects.
The Initial section defines the information that needs to be confirmed by the caller. The output defined herein typically summarizes the information gathered so far and asks whether everything is correct.
In the example below the Variable objects are displayed using the shortcut notation.

The Event Reprompt section defines modified outputs for error cases. This is only processed in the voice and video channel.
The Confirm section defines how to present the option to confirm the information. In the voice and video channel, it can be left empty and included in the confirmation request, or it can hold a prompt like “If this is correct, say yes”. In the text and Web channel, it must be defined so that the option to confirm can be displayed. In the text channel, the caller can activate it by responding with the access key defined in the Confirm grammar (see Confirmation Grammar); in the Web channel, the caller activates it through the corresponding hyperlink.

For further details refer to the Output object in this Object Reference.
For a detailed description of how to use the reprompting mechanism, refer to Chapter 8 – Advanced Event Handling in the Design Guide.
The Confirmation Grammar consists of two Grammar object definitions represented by the Confirm and Deny section.
The Confirm section defines the input that confirms the information items presented in the confirmation request. In voice and video applications with speech recognition, this could be a grammar matching utterances like yes, correct, that’s right etc. In a text application, the option to confirm all information is presented first, i.e. before the correction items, so it should get 1 as the grammar.
The Deny section defines the input that indicates that at least one of the information items is wrong. The deny grammar is only processed in the voice and video channel; in the text and Web channel, there will not be an explicit option to deny, instead the correction items (i.e. how to correct each individual piece of summarized information) will be presented immediately.
Neither of these two grammars needs to fill any slots.

For further details refer to the Grammar object in this Object Reference.
The Correction Request section is used to ask the caller which information item needs to be corrected, in case the confirmation request was denied. Usually plain text or Audio objects are used here.
If the Confirmation object has only one correction item, the correction request is played and the object of the correction item is processed right after it. If more than one correction item is defined, the correction request is an input state, so that the application waits for the caller to say which item was wrong. It has its own event handling section which is then applied.
The correction request is only processed in the voice and video channel, as the option to deny the confirmation request is not offered in the text and Web channel.

For further details refer to the Output object in this Object Reference.
The Correction Mapping consists of one or more correction items.

In each correction item the following properties can be specified:
|
Property |
Description |
|
Label |
Optional parameter to identify the correction item in a list. |
|
Layer |
Optional parameter to indicate the layer that the correction item belongs to. For more information on layers, see Layers in this Object Reference or Chapter 7 – How to Use Layers in the Design Guide. |
|
Channel |
Identifies the channels in which the respective correction item is to be active. If a correction item is appropriate for all channels, the default channel layer setting Default should be used. Otherwise, define one of the four channels Voice, Video, Text or Web. For your convenience, use the two combined settings Voice/Video or Text/Web in case the correction item is to be active in those combinations. Using a combined channel is the same as defining two correction items with the individual channel setting, with all other settings being the same. |
|
Exit Confirmation |
Indicates what to do after the object defined for this correction item has been processed. The default setting False indicates that the dialog returns to the Confirmation object, so that after correcting an item the summary is presented again through the confirmation request. When set to True, the processing of the Confirmation object is terminated and the dialog continues with the next object after the Confirmation object (if any). The Exit Confirmation property can dynamically be set at call time by defining it with a Variable, Expression, or Script object. If it is dynamically set, the value is determined before the object defined for the correction item is processed. |
|
Object |
A mandatory object reference that points to the object that processes the correction, typically an Input or a Sequence object, asking again for the respective information. |
|
Grammar |
Specifies the caller input that identifies this particular item as the one that needs to be corrected (if more than one correction item is defined). The input is a response to the correction request. |
|
Presentation Output |
Defines how to present the correction item to the caller. It will be played after the confirmation request, in the order in which the items are defined in the object. In the voice and video channel, the presentation output can be left empty if you do not wish a special prompt to explain how to correct an item. Otherwise it could be something like “To correct the departure city, say departure”. In the text and Web channel, it must be defined to display the correction item; otherwise the caller has no way of activating it. For the example of correcting the date it could be “Change Departure”. |

The processing of the destination object usually results in Variable objects being filled with different values (e.g. different departure cities). After the destination object has been processed, the Confirmation object starts again from the top, i.e. with the confirmation request.
@8 Tip: By providing the appropriate grammars and destinations, the caller can correct both individual items such as an arrival city as well as combinations of items such as date and time. However there is no automatic merging of grammars and destination objects, so individual correction items need to be provided for each combination. If you want the caller to be able to say, e.g., “the date and time are wrong” in a voice or video application with speech recognition, define a separate correction item with a corresponding grammar and a Sequence object that processes two Input objects, the first one asking for the date, the second one asking for the time again.
i8 Note: During all inputs within the Confirmation object in the voice and video channel, the confirm grammar, the deny grammar, and the grammars of all correction items are active. Depending on how these grammars are built, this enables the designer to create Confirmation objects in which the caller can immediately say (in response to the confirmation request) which items need to be corrected, instead of having to wait for the second question asked in the correction request.
In the special case of a single correction item in the voice and video channel, it is not required to define a grammar within this item since the item is activated if the caller input matches the deny grammar defined in the Confirmation Grammar section. Note that the correction request is still played if defined. This is to enable outputs such as “OK, let’s try this again” before processing the object that allows the correction (typically an Input or a Sequence object).
The Confirmation object provides the setting of six options in the Options section.

The option Enable auto-advance on No Input enables auto-advance in case the caller does not respond to the confirmation request (only supported in the voice and video channel). This is useful to allow “silent” confirmation, if desired. If the check box is selected, a No Input event finishes the processing of the Confirmation object and proceeds to the next object in the dialog flow instead of processing the event handling specifications. Thus, not saying anything has the same effect as saying something that is matched by the confirm or deny grammar (depending on the setting of the Auto-advance direction option). By default, the check box is clear.
The option Enable auto-advance on No Match enables auto-advance in case the caller says something in response to the confirmation request that does not match the grammar (only supported in the voice and video channel). If the check box is selected, a No Match event finishes the processing of the Confirmation object and proceeds to the next object in the dialog flow instead of processing the event handling specifications. Thus, saying something that does not match the active grammars has the same effect as saying something that is matched by the confirm or deny grammar (depending on the setting of the Auto-advance direction option). By default, the check box is clear.
The option Enable immediate correction controls whether callers can immediately use an utterance from one of the correction item grammars while in the initial confirmation question (the default). Sometimes, e.g. when working with pure DTMF grammars, this is not desirable and can then be suppressed.
Note that this option is only relevant for the voice and video channel. In the text and Web channel, there is no explicit confirmation phase.
By default, the check box is selected.
The Auto-advance direction option determines in which direction the dialog flow proceeds in case auto-advance has been enabled and a No Input or No Match event occurs. If it is set to Confirm, the dialog proceeds with the object coming right after the Confirmation object. If it is set to Deny, the dialog proceeds with the correction request.
The option Increased Dialog Timeout specifies a timeout value that is applied for this object in case it is higher than the current dialog timeout in a session. If it is lower, the setting is ignored. It is mainly applicable in the text and Web channel, where the dialog timeout of a service should be set to a relatively low value, e.g. 40 seconds, to keep the number of concurrent sessions low, as they usually run into the server timeout due to technical reasons. Use this setting to increase the timeout temporarily for objects that are likely to require more time to respond to, e.g. when the caller has to type in an address.
The option Record utterances specifies whether utterances made in this object are to be recorded (True) or not (False), given that utterance recording is switched on for this session. Always indicates that utterances in this object are always recorded when utterance recording is enabled on the service, regardless of statistical filtering. By default the value is Default, indicating that the current value of the corresponding dialog context setting RECORDUTTERANCES is used.
The option Recording scope defines the scope in which recordings will be made. If set to Recognition, only those utterances will be recorded that were successfully recognized (including the activation of hyperlinks). If set to No Match, only those utterances will be recorded that triggered a No Match event. If set to All, any recording will be stored. If set to Default, the current value of the corresponding dialog context setting RECORDINGSCOPE is used. By default the value is Default.
Due to the nature of recordings, the feature of recording utterances is only available in the voice and video channel. For more information on this refer to Chapter 6 – Recording of Utterances in the Deployment Guide.
The following two examples demonstrate the use of a Confirmation object in a voice application to confirm a single caller input and several inputs at once, respectively.
This example shows how to define a Confirmation object to confirm a single caller input. The Correction Mapping section holds only a single item with no grammar definition. Using this Confirmation object, the caller can confirm a PIN entered earlier in the dialog.
1. Open an empty Confirmation editor.
2. Enter Confirm PIN as the name of the Confirmation object.
3. In the Confirmation Request section, enter the initial prompt of the confirmation request, like You said [V:PIN]. Is that correct?, assuming the caller input is stored in a Variable object PIN.
4. In the Confirm section of the Confirmation Grammar, enter a grammar representing confirming utterances (like yes, okay, or correct, etc.). Then enter a grammar representing rejecting utterances (like no, not correct, etc.) in the Deny section.
5. In the Correction Request section, enter the initial prompt of the correction request, like Sorry, let’s try it again. This prompt is played if the caller denies the confirmation request.
6. In the Correction Mapping section, define a single correction item by linking the Input object that asks the caller to enter the PIN. It can be the same one that was initially used, before the Confirmation object. Leave its Grammar section empty, as this correction item is immediately processed on denial of the confirmation request.
When the caller confirms the repeated PIN, the dialog proceeds with the following object in the dialog flow. When the caller denies the recognized PIN, the Input object asking again for the PIN is processed. After this, the server returns to the Confirmation object, starting all over with the confirmation request, until the caller finally confirms.
This example shows how to define a Confirmation object to confirm several caller inputs in one dialog step. The Correction Mapping section holds two items, to allow the correction of the account number or PIN that the caller entered.
1. Open an empty Confirmation editor.
2. Enter Confirm Account Number and PIN as the name of the Confirmation object.
3. In the Confirmation Request section, enter the initial prompt of the confirmation request, like So your account number is [V:Number] and your PIN is [V:PIN]. Is that correct?, assuming the account number is stored in a Variable object Number and the PIN is stored in a Variable object PIN.
4. In the Confirm section of the Confirmation Grammar, enter a grammar representing confirming utterances (like yes, okay, or correct, etc.). In the Deny section, enter a grammar representing rejecting utterances (like no, not correct, etc.).
5. In the Correction Request section, enter the initial prompt of the correction request, like I’m sorry. What’s wrong, the account number or the PIN?. This prompt is played if the caller denies the confirmation request.
6. In the Correction Mapping section, define the first correction item by linking the Input object that asks the caller to provide the account number. It can be the same one that was initially used, before the Confirmation object. Enter a grammar for this correction item representing utterances that select account number as the item to correct, like account number, the account number, or the number is wrong, etc.
7. Define the second correction item by linking the Input object that asks the caller to provide the PIN. It can be the same one that was initially used, before the Confirmation object. Enter a grammar for this correction item representing utterances that select PIN as the item to correct, like PIN, the PIN, or the PIN is wrong, etc.
8. Define a third correction item that allows the caller to correct both items in case the speech recognizer got both utterances wrong. Link a Sequence object that holds both Input objects from steps 6 and 7. Enter a grammar representing utterances that indicate both items are wrong, like both, both are wrong, neither is correct, etc.
In this example, the caller can correct either the account number or the PIN. In case both items are wrong, the caller can say both, in which case he or she is asked for both the number and the PIN again.
The Confirmation object is represented by the VoiceObjectsXML element <confirmation>. It has five attributes and fifteen groups of children.
In addition, the element has the standard attributes described in the XDK Guide.
The <confirmation> element uses the embedded <correctionItem> element.
· autoAdvanceNoInput
Define whether the dialog should automatically advance in case of a No Input event. Either true or false. If not specified, defaults to false.
· autoAdvanceNoMatch
Define whether the dialog should automatically advance in case of a No Match event. Either true or false. If not specified, defaults to false.
· autoAdvanceDirection
Defines the direction of an auto advance. Can be either confirm or deny. If not specified, defaults to confirm.
· recordUtterances
Defines whether to use utterance recording. One of true, false, always, default. If not specified, defaults to default.
· recordingScope
Defines the scope for utterance recording. One of all, noMatch, recognition, default. If not specified, defaults to default.
· immediateCorrection
Defines whether utterances from the correction item grammars are allowed in the confirmation step. Either true or false. If not specified, defaults to true.
· <expression usage=”precondition”> or
<variable usage=”precondition”> or
<collection usage=”precondition”> or
<script usage=”precondition”>
Defines the precondition for the Confirmation object.
· <sequence usage=”preprocessing”>
Defines the preprocessing sequence for the Confirmation object.
· <output usage=”confirmation” type=”initial”>
Defines the “initial” section of the confirmation request.
· <output usage=”confirmation” type=”reprompt”>
Defines the “event reprompt” section of the confirmation request.
· <output usage=”confirmPresentation”>
Defines the confirm presentation output.
· <grammar usage=”confirm”> [required]
Defines the grammar used to confirm the summary.
· <grammar usage=”deny”> [required]
Defines the grammar used to deny the summary.
· <output usage=”correction” type=”initial”>
Defines the “initial” section of the correction request.
· <output usage=”correction” type=”reprompt”>
Defines the “event reprompt” section of the correction request.
· +<correctionItem>
Defines the list of correction items.
· <eventHandling usage=”confirmation”>
Defines the event handling for the confirmation phase of the Confirmation object.
· <eventHandling usage=”correction”>
Defines the event handling for the correction phase of the Confirmation object.
· <customNavigation>
Defines the navigation settings for the Confirmation object.
· <tuning>
Defines the tuning settings for the Confirmation object.
· <sequence usage=”postprocessing”>
Defines the postprocessing sequence for the Confirmation object.
<confirmation>
<output usage="confirmation">
<outputItem>
<text>You want the insurance premium for a </text>
<variable link=”#Car manufacturer”/>
<text> </text>
<variable link=”#Car model”/>
<text>, right?</text>
</outputItem>
</output>
<grammar usage="confirm">
<grammarItem>
<grammarDefinition mode="voice">
yes, yeah, right, correct
</grammarDefinition>
</grammarItem>
</grammar>
<grammar usage="deny">
<grammarItem>
<grammarDefinition mode="voice">no</grammarDefinition>
</grammarItem>
</grammar>
<output usage="correction">
<outputItem>
<text>What's wrong, the manufacturer or the model?</text>
</outputItem>
</output>
<correctionItem>
<grammar>
<grammarItem>
<grammarDefinition mode="voice">
manufacturer
</grammarDefinition>
</grammarItem>
</grammar>
<input link="#Enter car manufacturer"/>
</correctionItem>
<correctionItem>
<grammar>
<grammarItem>
<grammarDefinition mode="voice">
model
</grammarDefinition>
</grammarItem>
</grammar>
<input link="#Enter car model"/>
</correctionItem>
</confirmation>
· label
A text string providing a name for the correction item.
· layer
Defines the layer for the correction item. Can either be a reference to a Collection, Expression, Script, or Variable object; or a layer state reference of the form “Layer=State” or “Layer!=State” where “State” is the label of a state for the layer “Layer”.
· channel
Defines the channel(s) for which this correction item is valid. Can be default, voice, video, text, web, voiceVideo, or textWeb. If not specified, defaults to default.
· exit
Defines whether the dialog exits the Confirmation object after processing this correction item. Either true or false. If not specified, defaults to false.
· <grammar>
Defines the activation grammar for the correction item. Optional if only a single correction item exists; otherwise it is required.
· <output usage=”presentation”>
Defines the optional presentation for the correction item.
· One of the following:
<module>, <input>, <output>, <sequence>, <menu>, <confirmation>, <list>, <osdm>, <plugin>, <connector>, <script>, <log>, <if>, <case>, <goto>, <loop>, <expression>, <recording>, <transfer>, <pause>, <exit>
Defines the object to be processed if the correction item is activated.
Example
<correctionItem>
<grammar link=”#Correct model grammar”/>
<input link=”#Enter car model”/>
</correctionItem>
The following table contains all object types that can reference a Confirmation object:
|
Icon |
Object Name |
Use Case Example |
|
|
A Confirmation object can be used within the embedded sequence of a Module object. |
|
|
|
Most commonly, a Confirmation object is used within a Sequence object in a dialog flow. |
|
|
|
A Confirmation object can be used as the destination object within a Menu item of a Menu object. |
|
|
|
Confirmation |
A Confirmation object can be used as the destination object within a correction item inside another Confirmation object. |
|
|
A Confirmation object can be used in either the THEN or the ELSE item of an If object. |
|
|
|
A Confirmation object can be used in any WHEN item of a Case object. |
|
|
|
A Confirmation object can be used within the embedded sequence of a Loop object. |
|
|
|
A Confirmation object can be referenced via a Goto object. |
|
|
|
A Confirmation object can be the destination of a Hyperlink object. |
In order to leverage the capabilities of the integrated documentation of VoiceObjects it is important to provide intuitive and self-explanatory object names and descriptions.
The name of a Confirmation object should identify which data items are being confirmed. The short description should contain a brief explanation of the capabilities and restrictions (e.g. only one item can be corrected vs. multiple items can be corrected at once). The table below lists three examples:
|
Name |
Description |
|
|
Presents the entire flight booking, including origin, destination, date, and time. Allows the correction of each individual item. |
|
|
Presents date and time. Either one or both can be corrected. |
|
|
Asks caller whether the transaction should be completed as presented. If not, the entire input process for the transaction is repeated. |