How to put custom attributes into the USSD <page> tag
Use Case
We are starting to use VoiceObjects to generate text channel pages using the Cellicium Cellcube 3.6 driver (for Cellcube USSD gateway).
Now we have the request to add the nav="end" attribute to the rendered <page> element as follows:
<page tag="id7" ismenu="false" nav="end" volatile="false">
This is needed for using the USSD feature called "short code", which means that user can add responses after the USSD number.
The number the user dials on the phone may look like: *74363*3*3*2# where:
- 74363 is the number of the USSD service
- 3 is the answer to the first prompt from the text system
- 3 is the answer to the second prompt from the text system
- 2 is the answer to the third prompt from the text system
This will enable power users to directly call in a deeper structure of an USSD service.
However, some inputs / menus should be "unskipable" by this short code - user must always see their prompt and choose manually.
This is accomplished by adding the nav="end" attribute to the <page> element so that the USSD gateway knows it should stop there.
We would like to add this attribute to pages where the unskippable input/menu object should be rendered.
Resolution
General Solution
The functionality is reachable over the RenderTemplates.xml in the WEB-INF/config/ folder. Please make sure to backup this file before changing any setting!
To get a handling per object, you will need to add object-specific rendering templates in the <celliciumxmltext>-section of the RenderTemplates.xml:
<templates ... >
<text>
[...]
<celliciumxmltext>
Here you will find entities for the different object types.
To change the behavior for one object only, you will need to copy the whole object element structure, change the rendered data and add the object information to this new entry. The object information are added in the object type element as follows:
<input referenceID="stopHere">
<template id [...]
I recommend to change the referenceIDs of objects with changed behavior to readable referenceIDs (like in my example) in VoiceObjects Desktop.
Specific Solution for single objects
- Modify the rendering template by adding a custom property for the
nav="XYZ" attribute
- Set this as a custom tuning property on each Input / Menu / ... object.
This way you don't need an extra rendering template per object; it represents a much more generic approach.