Multi-step responses

  • Release version: Australia
  • Updated March 12, 2026
  • 1 minute to read
  • An example of multi-step response is a set of images in a carousel or a date control.

    Multipart Control richControl has the following attributes, which can be used to transform control.
    • content: Rich Control which must be presented in current step.
    • navigationBtnLabel: Label for "next" or "more" button for user to click to move to next step.
    Example:
    {
            uiType: "MultiPartOutput",
            group: "DefaultMultiPartOutput",
            navigationBtnLabel: "Go next",
            content: {
                    uiType: "OutputHtml",
                    style: "inline",
                    type: "html",
                    height: 100,
                    width: 100,
                    value: "<div>html</div>"
            }
    }

    Outbound transformation script

    (function execute(inputs, outputs) {
    
        try{
          var richControl = inputs.rich_control;
          var payload = inputs.payload;
      
          var content = richControl.content;
          var navigationBtnLabel = richControl.navigationBtnLabel;
          var uiType = content.uiType;
          var partResult = null;
      
          switch (uiType) {
            case "OutputText":
              partResult = sn_fd.FlowAPI.executeActionQuick('example_default_text_outbound_transformer', {
                  rich_control : content,
                  payload : payload
                });
              break;
            case "OutputLink":
              partResult = sn_fd.FlowAPI.executeActionQuick('example_default_output_link_outbound_transformer', {
                  rich_control : content,
                  payload : payload
                });
              break;
            case "OutputImage":
              partResult = sn_fd.FlowAPI.executeActionQuick('example_default_image_outbound_transformer', {
                  rich_control : content,
                  payload : payload
                });
              break;
            case "OutputHtml":
              partResult = sn_fd.FlowAPI.executeActionQuick('example_default_html_outbound_transformer', {
                  rich_control : content,
                  payload : payload
                });
              break;
            default:
              break;
          }
          partResult =  partResult + addButtonMore(navigationBtnLabel)
          outputs.result = JSON.stringify(outActivity);
        }
        catch(e){
          gs.error("Error in default multipart outbound transformer : " + e.message);
          throw e; 
        }
      
      })(inputs, outputs);

    Inbound transformation script

      (function execute(inputs, outputs) {
        try {
          var requestContext = inputs.request_context;
          var typedValue = requestContext.typed_value;
          outputs.result = typedValue;
        } catch(e) {
           gs.error("Error in default multipart inbound transformer : " + e.message);
           throw e; 
        }
      })(inputs, outputs);