---
sourceDocument: Interfaces conversacionais de Yokohama
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/yokohama/conversational-interfaces

 Release :

    - yokohama

ft:locale :

    - pt-BR

ft:publication_title :

    - Interfaces conversacionais de Yokohama

ft:clusterId :

    - convint

bundleId :

    - convint

workflow :

    - Platform


---

# Controles de saída de resposta múltipla

# Controles de saída de resposta múltipla {#ariaid-title1}

* Versão de lançamento: Yokohama
* 
* Atualizado 30 de jan. de 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 2 min. de leitura

Implemente controles que envolvem várias etapas para obter entrada do usuário.
Use a API a seguir para configurar dados de contexto para controles de várias saídas.

## Casos de uso comuns {#ccci-multi-flow-output-controls__section_q3n_xht_h4b}

1. Para obter a paginação de seletores: Page_no, pagination_length atualizado na entrada com base no botão Avançar/Anterior é lido na saída.
2. Resposta passo a passo do selecionador de data, como primeiro ano, mês e, em seguida, seleção de data.
{#ccci-multi-flow-output-controls__ol_mbj_yht_h4b} As APIs a seguir estão disponíveis somente em transformadores de entrada e saída.

    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)

O transformador de saída do controle do seletor pode armazenar detalhes da página atual no contextData do usuário.

     var paginationData = {
              "page_index": 1,
              "pagination_length": 2
        }
    };
    sn_cs.VASystemObject.setProviderUserContext("picker_pagination", paginationData, providerAppId, providerUserId, );

O transformador de entrada do controle do seletor pode obter detalhes da página atual do contextData do usuário.

    var paginationData = sn_cs.VASystemObject.getProviderUserContext("picker_pagination", providerAppId, providerUserId);

## Código de exemplo para transformador de saída de controle do seletor {#ccci-multi-flow-output-controls__section_cvt_p3t_h4b}

    (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);


