Contrôles de sortie multi-réponses
Implémentez des contrôles qui impliquent plusieurs étapes pour obtenir des informations utilisateur.
Utilisez l’API suivante pour configurer les données contextuelles pour les contrôles multi-sorties.
Cas d’utilisation courants
- Pour réaliser la pagination des sélecteurs, page_no, pagination_length mis à jour en entrant en fonction du bouton suivant/précédent est lu en sortant.
- Réponse étape par étape du sélecteur de date comme la première année, puis le mois, puis la sélection de la date.
Les API suivantes ne sont disponibles que dans les transformateurs entrants et sortants.
sn_cs.VASystemObject.setProviderUserContext( key, contextData, providerAppId, providerUserId);
sn_cs.VASystemObject.getProviderUserContext(key, providerAppId, providerUserId);
sn_cs.VASystemObject.removeProviderUserContext(key, providerAppId, providerUserId);
sn_cs.VASystemObject.removeAllProviderUserContext(providerAppId, providerUserId)Le transformateur sortant du contrôle du sélecteur peut stocker les détails de la page actuelle dans contextData utilisateur.
var paginationData = {
"page_index": 1,
"pagination_length": 2
}
};
sn_cs.VASystemObject.setProviderUserContext("picker_pagination", paginationData, providerAppId, providerUserId, );Le transformateur entrant du contrôle du sélecteur peut obtenir les détails de la page actuelle à partir de contextData de l’utilisateur.
var paginationData = sn_cs.VASystemObject.getProviderUserContext("picker_pagination", providerAppId, providerUserId);Exemple de code pour le transformateur sortant pour le contrôle de sélecteur
(function execute(inputs, outputs) {
var control = inputs.rich_control;
var payload = inputs.payload;
var appId = payload.appId;
var userId = payload.userId;
var paginationData = sn_cs.VASystemObject.getProviderUserContext('picker_control', appId, userId);
paginationData = JSON.parse(paginationData);
//First time when the outbound picker is called when selecting the topic.
if (paginationData == null) {
paginationData = {
'page_index': 1,
'pagination_length': 5
};
sn_cs.VASystemObject.setProviderUserContext('picker_control', paginationData, appId, userId);
}
var page_index = paginationData['page_index'];
var pagination_length = paginationData['pagination_length'];
var start = (page_index - 1) * pagination_length;
var end = page_index * pagination_length;
if (control['options']) {
var options = control['options'];
var optionsLength = options.length;
if (end > optionsLength)
end = optionsLength;
var picker = control["label"] + ":";
if (start > 0)
picker += "\n" + "*" + ": " + "prev";
for (var x = start; x < end; x++) {
gs.log("here " + x + " : " + options[x]);
picker += "\n" + (x + 1) + ": " + options[x].label;
}
if (end < optionsLength)
picker += "\n" + "#" + ": " + "next";
}
outputs.text_message = picker;
})(inputs, outputs);
Example Picker Control Inbound Tranformer
(function execute(inputs, outputs) {
var request_context = inputs.request_context;
var rich_control = inputs.rich_control;
var appId = request_context.appId;
var userId = request_context.userId;
var selectedValue = request_context["typed_value"];
var result = {};
result["value"] = "";
result["search_text"] = selectedValue;
var options = rich_control['options'];
var paginationData = sn_cs.VASystemObject.getProviderUserContext('picker_control', appId, userId);
paginationData = JSON.parse(paginationData);
switch (selectedValue) {
case 'prev': {
--paginationData["page_index"];
result["send_prev_control"] = true;
}
break;
case 'next': {
++paginationData["page_index"];
result["send_prev_control"] = true;
}
break;
default: {
var selectedIndex = Number(selectedValue) - 1;
if (paginationData["page_index"] != undefined && paginationData["pagination_length"] != undefined) {
var highestOptionInPage = paginationData["page_index"] * paginationData["pagination_length"];
if (selectedIndex >= 0 && selectedIndex < highestOptionInPage) {
var selectedOption = options[selectedIndex];
result["value"] = selectedOption.value;
result["search_text"] = "";
}
} else {
var selectedOption = options[selectedIndex];
result["value"] = selectedOption.value;
result["search_text"] = "";
}
}
}
sn_cs.VASystemObject.setProviderUserContext('picker_control', paginationData, appId, userId);
outputs.result = result;
})(inputs, outputs);