Modelo de mensaje

El SDK utiliza un modelo de mensajes consistente y de tipo para todo el tráfico. Comprender los tipos de sobre y carga útil es importante para las integraciones, los delegados, la representación personalizada y las pruebas sin cabecera. Todos los elementos de conversación son mensajes con un sobre estándar:

{
  "messagePayload": { /* see types below */ },
  "userId": "guest"
}
  • messagePayload.type
    determina la forma de carga útil concreta.
  • Los mensajes de usuario los inicia el cliente; los mensajes de respuesta se originan en la aptitud o el agente.

Tipos de base

Estos son los tipos base utilizados en todos los mensajes enviados del usuario a la aptitud y viceversa. Se trata de los elementos fundamentales de todos los mensajes.
  • Acción: las variantes incluyen call, client, location, popup, postback, share, submitForm, url
  • Documento adjunto: audio, file, image, video
  • Tarjeta: título: descripción, imageUrl, actions
  • Ubicación: latitude, longitude, optional title/url
  • Voz: text, longText, soundUrl
  • Campo: read-only (link, text, media, action) y editable (textInput, numberInput, datePicker, timePicker, singleSelect, multiSelect, toggle)
  • SelectFieldOption: label, value
  • TableHeading
  • TableRow
  • Form
  • FormRow
  • FormColumn
  • PaginationInfo
  • EventContextProperties

Tipos de carga útil de mensaje de usuario

  • Texto
    { "type": "text", "text": "Order Pizza" }
    
  • Asociación
  • {
      "type": "attachment",
      "attachment": { "type": "image", "URL": "https://..." }
    }
    
  • Ubicación
    { "type": "location", "location": { "latitude": 45.9, "longitude": 132.6 } }
    
  • Contzn
    {
      "type": "postback",
      "text": "Small",
      "postback": {
        "variables": { "pizza": "Small" },
        "system.botId": "....",
        "system.state": "orderPizza"
      }
    }
    
  • Evento de entrada
    {
      "type": "inboundEvent",
      "eventType": "com.pizzastore.pizza.orderserved",
      "eventVersion": "1.0",
      "eventData": { "size": "Medium", "type": "Cheese" },
      "contextProperties": { "id": "6ce23f...", "source": "pizza/service" }
    }
    
  • Envío de formulario
    {
      "type": "formSubmission",
      "submittedFields": { "Subject": "Expense", "Amount": 6 },
      "partialSubmitField": "Attendees",
      "postback": { "system.state": "editFormMapVar" }
    }
    

Mensajes de Respuesta

Las cargas útiles de respuesta de la aptitud/agente incluyen:
  • Texto
    { "type": "text", "text": "What do you want to do?" }
    
  • Asociación
    {
      "type": "attachment",
      "attachment": { "type": "file", "url": "https://..." }
    }
    
  • Tarjeta
    {
      "type": "card",
      "layout": "horizontal",
      "cards": [{ "title": "Hawaiian Pizza", "actions": [/*...*/] }]
    }
    
  • Comando
    { "type": "command", "command": "someCommand", "properties": { "k": "v" } }
    
  • Error
    { "type": "error", "errorMessage": "Details...", "error": "..." }
    
  • Ejecutar Comando de Contexto de Aplicación
    {
      "type": "executeApplicationActionCommand",
      "actionType": "navigate",
      "command": "executeApplicationAction",
      "context": "appName",
      "properties": { "route": "/home" }
    }
    
  • Comentarios (estrellas)
    {
      "type": "text",
      "text": "How would you like to rate us?",
      "channelExtensions": { "displayType": "stars" },
      "actions": [/* star postbacks */]
    }
    
  • Ubicación
    { "type": "location", "location": { "latitude": 37.53, "longitude": -122.26 } }
    
  • Evento de salida
    {
      "type": "outboundEvent",
      "eventType": "com.pizzastore.pizza.ordercreated",
      "eventVersion": "1.0",
      "eventData": { "size": "Medium" }
    }
    
  • Sin formato
    { "type": "raw", "payload": { /* channel specific */ } }
    
  • Sesión Cerrada
    { "type": "sessionClosed" }
    
  • Flujo de texto
    {
      "type": "texStream",
      "streamId": "123",
      "streamState": "running",
      "text": "partial chunk",
      "aggregateText": "accumulated text so far"
    }
    
  • Edit‑Form admite replaceMessage a través de channelExtensions.

Acción

Una acción representa algo que el usuario puede seleccionar.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de acción Cadena
label Texto de etiqueta descriptivo de la acción. Cadena Se debe incluir al menos uno de estos elementos: label o imageUrl.
imageUrl Imagen para la acción Cadena Se debe incluir al menos una sola propiedad label o imageUrl.
style El estilo de representación del botón "primary", "danger", "default" No
displayType Representación del tipo de elemento de acción (botón, enlace o icono) "button", "link", "icon" No
channelExtensions Propiedades de extensión específicas del canal asociadas a la acción JSONObject No

CallAction

Solicita al cliente que llame un número de teléfono especificado en nombre del usuario.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de acción "llamar"
phoneNumber Número de teléfono al que llamar Cadena
Por ejemplo:
{
    "type": "call",
    "label": "Call Support",
    "imageUrl": "http://example.com.ar/files/2016/05/cuidado.jpg",
    "phoneNumber": "18005555555"
}

LocationAction

Pide al cliente que solicite la ubicación del usuario.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de acción "location"
Por ejemplo:
{
    "type": "location",
    "label": "Share location",
    "imageUrl": "http://images.example.com/location-clipart-location-pin-clipart-1.jpg"
}

PopupAction

Esta acción abre una ventana emergente después de que los usuarios realicen una acción de clic en un elemento. PopupAction utiliza las propiedades Action junto con sus propias:
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de acción "popup"
popupContent El contenido que se muestra en la ventana emergente. Carga útil del mensaje (consulte el siguiente ejemplo de JSON)
{
    "type": "popup",
    "label": "Give Feedback",
    "popupContent": {
        "formRows": [
            {
                "columns": [
                    {
                        "width": "stretch",
                        "fields": [
                            {
                                "displayType": "text",
                                "label": "What was the issue with this response?"
                            },
                            {
                                "displayType": "multiSelect",
                                "options": [
                                    {
                                        "label": "Inaccurate",
                                        "value": "inaccurate"
                                    },
                                    {
                                        "label": "Inappropriate",
                                        "value": "inappropriate"
                                    }
                                ],
                                "id": "system_feedback_reasons",
                                "required": true
                            },
                            {
                                "displayType": "textInput",
                                "id": "system_feedback_comments",
                                "placeholder": "Additional feedback"
                            }
                        ]
                    }
                ]
            },
            {
                "columns": [
                    {
                        "fields": [
                            {
                                "displayType": "action",
                                "action": {
                                    "postback": {
                                        "rating": "negative",
                                        "action": "cancel",
                                    },
                                    "label": "Cancel",
                                    "type": "postback"
                                },
                            }
                        ]
                    },
                    {
                        "fields": [
                            {
                                "displayType": "action",
                                "action": {
                                    "postback": {
                                        "rating": "negative",
                                        "system.state": "invokeLLM"
                                    },
                                    "label": "Submit Feedback",
                                    "type": "submitForm"
                                },
                            }
                        ]
                    }
                ]
            }
        ],
        "type": "editForm",
        "title": "Give your feedback",
        "formColumns": 1,
    }
}

PostbackAction

Envía una devolución predefinida a la aptitud cuando el usuario selecciona una acción.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de acción "devolución"
postback Devolución que se obtiene cuando el usuario selecciona una acción. Cadena u objeto JSON
Por ejemplo:
{
    "type": "postback",
    "label": "Large Pizza",
    "imageUrl": "https://example.com/images/gallery/locations/11.jpg",
    "postback": {
        "state": "askSize",
        "action": "getCrust"
    }
}

ShareAction

Solicita al cliente que abra un cuadro de diálogo de uso compartido para el usuario.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de acción "share"

SubmitFormAction

Esta acción se utiliza para enviar un formulario de entrada a la aptitud cuando cumple la validación del cliente. Agrega las siguientes propiedades a las propiedades de Acción:
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de acción "submitForm"
postback La carga útil de devolución, que puede incluir una propiedad de acción para disparar la navegación. El valor de esta propiedad se debe establecer en FormSubmissionMessagePayload. JSONObject No
JSON de ejemplo
{
    "type": "submitForm",
    "label": "Submit",
    "postback": {
        "system.botId": "6803DE12-DAA9-4182-BD54-3B4D431554F4",
        "system.flow": "ExpenseFlow",
        "system.state": "editFormMapVar"
    }
}

urlAction

Solicita al cliente que abra un sitio web en un nuevo separador o en un explorador de la aplicación.

Nombre Descripción Tipo ¿Obligatoria?
type Tipo de acción "llamar"
url URL del sitio web que se muestra. Cadena

Asociación

Representa un anexo enviado por el usuario.
Nombre Descripción Tipo ¿Obligatoria?
title Título del anexo Cadena No
type Tipo de anexo cadena (valores válidos: audio, archivo, imagen, vídeo)
url URL de descarga del anexo Cadena
Por ejemplo:
{
    "title": "Oracle Open World Promotion",
    "type": "image",
    "url": "https://www.oracle.com/us/assets/hp07-oow17-promo-02-3737849.jpg"
}

Tarjeta

Representa una única tarjeta en la carga útil del mensaje.
Nombre Descripción Tipo ¿Obligatoria?
title Título de la tarjeta, que se muestra como la primera línea de la tarjeta. Cadena
description Descripción de la tarjeta Cadena No
imageUrl URL de la imagen que se muestra. Cadena No
URL URL del sitio web abierta con un toque. Cadena No
actions Matriz de acciones relacionadas con el texto matriz No
channelExtensions Las propiedades de extensión específicas del canal asociadas al mensaje JSONObject No

Ubicación

Representa un objeto de ubicación.
Nombre Descripción Tipo ¿Obligatoria?
title Título de la ubicación Cadena No
url URL para mostrar la ubicación en un mapa Cadena No
latitude Valor de longitud de las coordenadas GPS doble
longitude Valor de latitud de las coordenadas GPS doble
Por ejemplo:
{
    "title": "Oracle Headquarters",
    "url": "https://www.google.com.au/maps/place/37°31'47.3%22N+122°15'57.6%22W",
    "longitude": -122.265987,
    "latitude": 37.529818
}

Voz

Representa la información de voz en un mensaje
Nombre Descripción Tipo ¿Obligatoria?
text Texto de resumen de TTS Cadena Se debe transferir al menos una de las propiedades
longText Texto detallado para TTS Cadena Se debe transferir al menos una de las propiedades
soundUrl URL de un archivo de sonido para reproducir Cadena Se debe transferir al menos una de las propiedades
.

Campo

Representa la información atómica de una celda de tabla o un campo de formulario dentro de los objetos Table, Form y Table-Form, proporcionados como par clave-valor.
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo Cadena
label La clave de campo Cadena
marginTop Cantidad de espacio vertical entre este campo y el campo anterior dentro de la misma columna "none", "medium","large" No
labelFontSize Tamaño de fuente utilizado para la etiqueta de campo "small", "medium", "large" No
labelFontWeight Posicionamiento de la etiqueta dentro de su celda "light", "medium", "bold" No
channelExtensions Las propiedades de extensión específicas del canal asociadas al mensaje JSONObject No

PaginationInfo

Representa la información de paginación de los resultados en los objetos Table, Form y Table-Form.

Nombre Descripción Tipo ¿Obligatoria?
totalCount Recuento total de resultados número
rangeSize El tamaño de rango de los resultados por página número
status El mensaje de estado de paginación Cadena
currentRangeSize El tamaño del rango de resultados actual número
rangeStart Desplazamiento inicial del intervalo de resultados actual número
nextRangeSize El tamaño del siguiente rango de resultados número
hasPrevious Indica si hay un juego de resultados anterior booleano
hasNext Indica si hay un siguiente juego de resultados booleano

Campo Sólo Lectura

Representa un campo de solo lectura. Todos los campos de solo lectura heredan las propiedades de campo y tienen las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
value El valor del campo Cadena
width Porcentaje sugerido del ancho total disponible que debe ocupar el campo en un diseño de tabla. número No
alignment La alineación del valor dentro de una columna de tabla. La alineación por defecto es right. "left", "center" y "right" No
onHoverPopupContent Contenido que se muestra cuando los usuarios pasan el mouse sobre un campo. Carga Útil de Mensaje No

Campo de Texto

El campo de texto hereda todas las propiedades de campo de solo lectura.
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de elemento. text (un valor de cadena)
truncateAt Se muestra la posición en la que se trunca el texto largo y donde se muestra una marca de puntos suspensivos (que indica que el valor se ha truncado). Número No
fontSize Tamaño de fuente utilizado para el valor de campo "small", "medium", "large" No
fontWeight El grosor de fuente utilizado para el valor de campo "light", "medium", "bold" No
.

Campo de Enlace

El campo de enlace hereda todas las propiedades de campo de solo lectura y tiene las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo "link"
linkLabel Etiqueta utilizada para el hiperenlace Cadena No
imageUrl URL de la imagen que abre un enlace al hacer clic. Cadena No

Campo de medios

El campo de medios hereda todas las propiedades de campo de solo lectura y tiene las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo "medio"
mediaType Tipo de medios de campo "video", "audio", "image"

Campo de acción

El campo de acción hereda todas las propiedades de campo de solo lectura y tiene las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo "action"
action Acción que se debe realizar cuando el usuario hace clic en el botón de acción. Acción

Campo Editable

Representa un campo editable. Todos los campos editables heredan las propiedades de campo y tienen las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
id ID de campo Cadena
placeholder Descripción de la entrada que se espera del usuario. Este texto se muestra cuando el usuario aún no ha realizado una selección o introducido un valor. Cadena No
required Si esta entrada es necesaria para enviar el formulario booleano No
clientErrorMessage Mensaje de error de nivel de campo que se muestra debajo del campo cuando se produce un error de validación del lado del cliente. Si no se proporciona, el SDK se define por defecto en editFieldErrorMessage. Cadena No
serverErrorMessage Mensaje de error de nivel de campo que se muestra debajo del campo cuando se produce un error de validación del servidor. Este mensaje de error se debe incluir en la carga útil enviada por la aptitud. Cadena No
autoSubmit Cuando se establece en true, el formulario se envía automáticamente cuando el usuario ha introducido un valor para el campo.   No

Selección Única

El campo de selección única hereda todas las propiedades de Campo editable y tiene las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo "singleSelect"
defaultValue Selección por defecto Tipos de dato primitivos (cadena, número, booleano, etc.) No
options Matriz de opciones presentadas al usuario. Una matriz selectFieldOption
layoutStyle Estilo de diseño utilizado para representar las opciones de selección única. El diseño por defecto es list. "list", "radioGroup" No
layoutDirection Dirección de diseño (horizontal o vertical) de los botones de radio cuando layoutStyle está definido en radioGroup. Por defecto, la dirección de diseño se define como vertical,, pero puede definirla como horizontal. Cadena No

Selección Múltiple

El campo de selección múltiple hereda todas las propiedades de Campo editable y tiene las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo "multiSelect"
defaultValue Selección por defecto Una matriz<objeto> de tipos de dato primitivos (una cadena, un número, un valor booleano, etc.) No
options Matriz de opciones presentadas al usuario Una matriz selectFieldOption
layoutStyle Estilo de diseño utilizado para representar las opciones. "list", "checkboxes" No
layoutDirection Dirección de diseño (horizontal o vertical) de las casillas de control cuando layoutStyle está definido en checkboxes. Por defecto, la dirección de diseño se define como vertical, pero también se puede definir como horizontal. Cadena No

DatePicker

El campo de selector de fecha hereda las propiedades de Campo editable y tiene las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo "datePicker"
defaultValue El valor inicial de este campo. El formato debe ser YYYY-MM-DD. Cadena No
minDate La fecha mínima o más temprana permitida. El formato debe ser YYYY-MM-DD. Cadena No
maxDate Fecha máxima o última permitida. El formato debe ser YYYY-MM-DD. Cadena No

TimePicker

El campo de selector de tiempo hereda las propiedades de Campo editable y tiene las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo "timePicker"
defaultValue El valor inicial de este campo, introducido como HH:mm en formato de 24 horas. Cadena No
minTime El tiempo mínimo o más temprano permitido, introducido como HH:mm en formato de 24 horas. Por ejemplo, 00:00. Cadena No
maxTime El tiempo máximo o el último permitido, introducido como HH:mm, en formato de 24 horas. Por ejemplo, 13:00. Cadena No

Alternar

El campo de alternancia hereda todas las propiedades de Campo editable y tiene las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo "toggle"
defaultValue El valor seleccionado inicial. Si desea que el conmutador esté activado inicialmente, defina el valor por defecto en el mismo valor que valueOn. Cadena No
valueOff El valor cuando el conmutador está desactivado Cadena
valueOn El valor cuando el conmutador está activado Cadena
labelOff Etiqueta para el valor "off" Cadena No
labelOn Etiqueta para el valor "on" Cadena No

TextInput

El campo de entrada de texto hereda las propiedades de Campo editable y tiene las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo "textInput"
defaultValue El valor inicial de este campo Cadena no
validationRegularExpression Expresión regular que indica el formato necesario para esta entrada de texto Cadena no
multiline Indicador que determina si se deben representar varias líneas de entrada booleano no
minLength Longitud mínima de entrada que el usuario debe proporcionar entero no
maxLength Número máximo de caracteres permitidos en el campo de entrada de texto entero no
inputStyle Estilo de entrada utilizado por el cliente. Los valores permitidos son: "text", "tel", "url","email", y "password". Vuelve a text si el estilo de entrada no se ha definido. Cadena no

NumberInput

El campo de entrada de número hereda las propiedades de Campo editable y tiene las siguientes propiedades adicionales:
Nombre Descripción Tipo ¿Obligatoria?
displayType Tipo de campo "numberInput"
defaultValue El valor inicial de este campo Entero No
minValue Un número mínimo permitido Entero No
maxValue El mayor número permitido. Entero No

selectFieldOption

Los campos Selección única y Selección múltiple utilizan una lista de opciones de campo de selección con las siguientes propiedades:
Nombre Descripción Tipo ¿Obligatoria?
label El texto mostrado Cadena
value Valor de la opción Tipos de dato primitivos (cadena, número, booleano, etc.) No
channelExtensions Propiedades de extensión específicas del canal asociadas con la opción de campo. JSONObject No

TableHeading

Representa una cabecera para tablas en un objeto Table o Table-Form.
Nombre Descripción Tipo ¿Obligatoria?
label La etiqueta de cabecera Cadena
alignment Posicionamiento de la etiqueta dentro de la celda "left", "right", "center"
width Porcentaje sugerido de ancho de tabla que se debe proporcionar al encabezado.   No
channelExtensions Las propiedades de extensión específicas del canal asociadas al mensaje JSONObject No

TableRow

Representa una matriz de campos.
Nombre Descripción Tipo ¿Obligatoria?
fields Matriz de campos <Campo>>
selectAction Acción que se ejecuta cuando se selecciona la fila. La etiqueta de la acción se muestra como pista cuando los usuarios pasan el mouse sobre la fila. Acción No
channelExtensions Las propiedades de extensión específicas del canal asociadas al mensaje JSONObject No

Formulario

Representa una matriz de campos junto con un título. Se utiliza en mensajes Table-Form para formas anidadas de una fila de tabla.
Nombre Descripción Tipo ¿Obligatoria?
id ID del formulario Cadena No
title El título del formulario Cadena No
fields Matriz de campos Matriz <Campo>
actions Matriz de acciones Matriz <BotsAction> No
separator Indica si se debe mostrar un separador para el formulario o no. Si no se transfiere este valor, se muestra un separador para el formulario. booleano No
formRows Lista de filas que puede incluir campos editables y de solo lectura. Puede definir la lista de campos (con las propiedades fields y, opcionalmente, formColumns) o una lista de filas que utilizan esta propiedad. fields y formRows son mutuamente exlusivos. Acción No
channelExtensions Las propiedades de extensión específicas del canal asociadas al mensaje JSONObject No

FormRow

Nombre Descripción Tipo ¿Obligatoria?
id ID de la fila del formulario Cadena No
columns Lista de columnas mostradas en la fila del formulario. Matriz <FormColumn>
selectAction Acciones que se ejecutan cuando se selecciona el formulario. Cuando los usuarios pasan el mouse sobre el formulario, la etiqueta de la acción se muestra como una sugerencia de herramienta (cuando está soportada por el canal). Acción No
separator Si se define esta propiedad en true, se inserta una línea de separador sobre el contenido de la fila del formulario. Boolean No
channelExtensions Las propiedades de extensión específicas del canal asociadas al mensaje JSONObject No

FormColumn

Nombre Descripción Tipo ¿Obligatoria?
id ID de la columna Cadena No
fields Lista de campos que se muestran verticalmente en la columna. Estos campos deben ser instancias ReadOnlyField cuando la columna se utiliza en FormRow dentro de Form. Los campos pueden ser campos de solo lectura y editables cuando se utiliza FormRow en EditFormMessagePayload. <Campo> de matriz
verticalAlignment La alineación vertical de la columna con respecto a las otras columnas de la misma fila de formulario. Cadena No
width Determina el ancho de la columna dentro de la fila del formulario. Los valores permitidos son auto (valor por defecto) y stretch. Cuando se define en stretch, la columna toma todo el ancho restante después de presentar cualquier columna de ancho automático. Si hay varias columnas definidas en stretch, dividen de forma uniforme el ancho restante. Cadena No
widthPct Se transfiere cuando el ancho se establece en fijo. Define la propiedad de ancho del elemento de columna en el valor de porcentaje transferido. número No
channelExtensions Las propiedades de extensión específicas del canal asociadas al mensaje JSONObject No

EventContextProperties

Las propiedades de contexto de evento representan las propiedades de contexto CloudEvent.
Nombre Descripción Tipo ¿Obligatoria? Ejemplo
dataschema Identifica el esquema al que se adhieren los datos. URI No "/dw/approval_payload.json"
datacontenttype Tipo de contenido de los datos incluidos en el atributo de datos. Cadena No "application/json"
source Recurso que produjo el evento. URI No "objectstorage"
time Hora a la que se ha expresado el evento en formato de marca de tiempo RFC 3339. Registro de Hora No "2021-01-10T21:19:24Z"
specversion Versión de la especificación CloudEvents. Cadena No "1.0"
id ID de la especificación CloudEvents. Cadena No "123e4567-e89b-12d3-a456-426614174000"
subject Asunto del evento en el contexto del productor del evento y/o tipo de evento. Cadena No "mynewfile.jpg"

Mensaje de Conversación

Todos los mensajes que forman parte de una conversación tienen la siguiente estructura:
Nombre Descripción Tipo ¿Obligatoria?
messagePayload Carga útil del mensaje Mensaje
userId ID de usuario Cadena
Por ejemplo:
{
    "messagePayload": {
        "text": "show menu",
        "type": "text"
    },
    "userId": "guest"
}

Mensaje

El mensaje es un tipo base abstracto para todos los demás mensajes. Todos los mensajes lo amplían para proporcionar información.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje Cadena

Mensaje de usuario

Representa un mensaje enviado del usuario a la aptitud.

Mensaje de texto de usuario

Mensaje de texto simple que se envía al servidor.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "text"
text Texto del mensaje Cadena
Por ejemplo:
{
    "messagePayload": {
        "text": "Order Pizza",
        "type": "text"
    },
    "userId": "guest"
}

Mensaje adjunto de usuario

Mensaje de respuesta del anexo enviado al servidor.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "attachment"
attachment Metadatos del anexo Anexo
Por ejemplo:
{
    "messagePayload": {
        "attachment": {
            "type": "image",
            "url": "http://oda-instance.com/attachment/v1/attachments/d43fd051-02cf-4c62-a422-313979eb9d55"
        },
        "type": "attachment"
    },
    "userId": "guest"
}

Mensaje de devolución del usuario

Mensaje de respuesta de devolución enviado al servidor.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "postback"
text Texto de la devolución Cadena No
postback Devolución de la acción seleccionada Una cadena o JSONObject
Por ejemplo:
{
    "messagePayload": {
        "postback": {
            "variables": {
                "pizza": "Small"
            },
            "system.botId": "69BBBBB-35BB-4BB-82BB-BBBB88B21",
            "system.state": "orderPizza"
        },
        "text": "Small",
        "type": "postback"
    },
    "userId": "guest"
}

Mensaje de la ubicación del usuario

Mensaje de respuesta de la ubicación enviado al servidor.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "location"
location Información de ubicación del usuario Ubicación
Por ejemplo:
{
    "messagePayload": {
        "location": {
            "latitude": 45.9285271,
            "longitude": 132.6101925
        },
        "type": "location"
    },
    "userId": "guest"
}

Mensaje inboundEvent de usuario

Representa los mensajes de eventos salientes que se pueden enviar al servidor. Aplica las siguientes propiedades a Message.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "inboundEvent"
eventType Tipo de evento (definido en el catálogo de eventos) Cadena
eventVersion Versión de tipo de evento (definida en el catálogo de eventos) Cadena
eventData Los datos de negocio JSONObject
contextProperties Propiedades de contexto de evento Propiedades de Contexto de Eventos No
Por ejemplo:
{
    "messagePayload": {
        "eventData": {
            "size": "Medium",
            "type": "Cheese"
        },
        "eventVersion": "1.0",
        "eventType": "com.pizzastore.pizza.orderserved",
        "type": "inboundEvent",
        "contextProperties": {
            "id": "6ce23f09-bff7-4369-8467-0c510e971aaf",
            "source": "pizza/service",
        }
    },
    "userId": "guest"
}

Mensaje de envío de formulario de usuario

Representa el mensaje de envío de formulario que se envía después de que el usuario haya enviado un formulario a SubmitFormAction. Tiene las siguientes propiedades:
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje. "formSubmission"
submittedFields Pares clave-valor de los valores de campo enviados. La clave es el nombre (ID) del campo. JSONObject
postback La carga útil de devolución, que puede incluir una propiedad de acción para disparar la navegación. El valor de esta propiedad se debe tomar de SubmitFormAction. JSONObject No
partialSubmitField ID del campo que dispara un envío de formulario parcial. Los campos con la propiedad autoSumbit definida en true pueden disparar un envío de formulario parcial. Cadena No
JSON de ejemplo
{
    "messagePayload": {
        "submittedFields": {
            "Attendees": [
                "Toff van Alphen"
            ],
            "Type": "Public transport",
            "Description": "expense",
            "Subject": "Expense",
            "Date": "2023-06-07",
            "Time": "18:58",
            "Amount": 6,
            "TipIncluded": "true"
        },
        "partialSubmitField": "Attendees",
        "type": "formSubmission"
    },
    "userId": "guest"
}

Mensajes de Respuesta

Representa el mensaje enviado de la aptitud o el agente al usuario.

Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje Cadena
headerText Texto del encabezado que se muestra encima del texto del mensaje. Cadena No
footerText Texto de pie de página que se muestra debajo del texto y las acciones del mensaje, pero antes de las acciones globales. Cadena No
actions Lista de acciones relacionadas con el mensaje Array<Action> No
footerForm Diseño de formulario que se muestra debajo del texto de pie de página del mensaje y encima de sus acciones globales. Mensaje de formulario de conocimientos No
globalActions Lista de acciones globales relacionadas con el texto Matriz<Acción> No
channelExtensions Las propiedades de extensión específicas del canal asociadas al mensaje JSONObject No

Mensaje de anexo de aptitud

Representa un mensaje de anexo. Aplica las siguientes propiedades a los mensajes de respuesta.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "attachment"
attachment Anexo enviado Anexo
Nota

Las cargas de archivos desde el sitio del host pueden fallar y devolver un error de consola similar al siguiente:
https://<oda-instance>/chat/v1/attachments from origin <client site> has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource
Esto se debe a que los valores de CORS ( uso compartido de recursos de origen cruzado) del sitio host, que bloquean todas las solicitudes HTTP de origen cruzado, también pueden bloquear las solicitudes de carga de la instancia de cliente en el servidor de anexos de Oracle Digital Assistant. Si se encuentra en este problema, actualice la política de seguridad del sitio host para permitir el dominio de la instancia de Digital Assistant. Debido a que la conversación utiliza conexiones de WebSocket, CORS no afecta a la conversación.

Mensaje de tarjeta de conocimientos

Representa un juego de opciones que se muestran al usuario, en sentido horizontal como carrusel o verticalmente como listas. Aplica las siguientes propiedades a los mensajes de respuesta.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "card"
layout Si se va a mostrar los mensajes en sentido horizontal o vertical. cadena (valor: horizontal, vertical)
cards Matriz de tarjetas que se va a presentar. matriz

Carga útil de mensaje de comando de respuesta de aptitud

Representa una carga útil de mensaje de comando.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "command"
command El comando que se debe realizar Cadena
properties Una asignación de pares clave-valor JSONObject

Carga útil de mensaje de error de respuesta de aptitud

Representa una carga útil de mensaje de error que proporciona comentarios a los clientes sobre los errores en el backend.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "error"
errorMessage El mensaje de error Cadena
error java.lang.Error object Cadena No

Carga útil de mensaje ExecuteApplicationContextCommand de respuesta de aptitud

Representa una carga útil de mensaje de comando de acción de ejecución de aplicación.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "executeApplicationActionCommand"  
actionType Tipo de acción "custom", "navigate", "query", "updateFields"
command El comando execute application action "executeApplicationAction"
context Nombre del contexto de aplicación Cadena
customAction Se necesita cuando actionType es 'custom' Cadena No
properties Pares clave-valor que se pueden utilizar como argumentos al ejecutar la acción JSONObject No

Mensajes de comentarios

Representa un componente de calificación de comentarios, que toma los comentarios de un usuario mediante un indicador de calificación (normalmente un sistema de calificación por estrellas). Su carga útil es similar a un mensaje text, pero tiene un campo de objeto channelExtensions adicional que se define como { "displayType": "stars" }. Aplica las siguientes propiedades a los mensajes de respuesta.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "text"
text Texto del mensaje Cadena
channelExtensions Objeto que describe las extensiones de la carga útil. { “displayType”: “stars” }
Por ejemplo:
{
    "messagePayload":{
        "text":"How would you like to rate us?",
        "type":"text",
        "actions":[
            {
                "postback":{
                    "variables":{
                        "rating":"1"
                    },
                    "system.botId":"61C8D800-23AF-4DDD-B5AF-D79AB3F3BE67",
                    "action":"1",
                    "system.state":"giveFeedback"
                },
                "label":"1",
                "type":"postback"
            },
            {
                "postback":{
                    "variables":{
                        "rating":"2"
                    },
                    "system.botId":"61C8D800-23AF-4DDD-B5AF-D79AB3F3BE67",
                    "action":"2",
                    "system.state":"giveFeedback"
                },
                "label":"2",
                "type":"postback"
            },
            {
                "postback":{
                    "variables":{
                        "rating":"3"
                    },
                    "system.botId":"61C8D800-23AF-4DDD-B5AF-D79AB3F3BE67",
                    "action":"3",
                    "system.state":"giveFeedback"
                },
                "label":"3",
                "type":"postback"
            },
            {
                "postback":{
                    "variables":{
                        "rating":"4"
                    },
                    "system.botId":"61C8D800-23AF-4DDD-B5AF-D79AB3F3BE67",
                    "action":"4",
                    "system.state":"giveFeedback"
                },
                "label":"4",
                "type":"postback"
            },
            {
                "postback":{
                    "variables":{
                        "rating":"5"
                    },
                    "system.botId":"61C8D800-23AF-4DDD-B5AF-D79AB3F3BE67",
                    "action":"5",
                    "system.state":"giveFeedback"
                },
                "label":"5",
                "type":"postback"
            }
        ],
        "channelExtensions":{
            "displayType":"stars"
        }
    },
    "source":"BOT",
    "userId":"<userID>"
}

Mensaje de ubicación de aptitud

Representa un mensaje de ubicación. Aplica las siguientes propiedades a los mensajes de respuesta.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "location"
location Ubicación Ubicación

Mensaje de evento de salida de aptitud

Representa los mensajes de eventos salientes que puede enviar el servidor. Aplica las siguientes propiedades a Message.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "outboundEvent"
eventType Tipo de evento (definido en el catálogo de eventos) Cadena
eventVersion Versión de tipo de evento (definida en el catálogo de eventos) Cadena
eventData Los datos de negocio JSONObject
contextProperties Propiedades de contexto de evento Propiedades de Contexto de Eventos No
Por ejemplo:
{
    "messagePayload": {
        "eventData": {
            "size": "Medium",
            "type": "Cheese"
        },
        "eventVersion": "1.0",
        "eventType": "com.pizzastore.pizza.ordercreated",
        "type": "outboundEvent",
        "contextProperties": {
            "tenancy": "odaserviceinstance00",
            "specversion": "1.0",
            "id": "7a923f09-bff7-4369-8467-0c510e971aaf",
            "source": "hello/app",
            "time": 1659357000,
            "type": "com.pizzastore.pizza.ordercreated",
            "channelname": "System_Global_Test",
            "version": "1.0",
            "userid": "3910088",
            "contenttype": "application/json"
        }
    }
}

Mensaje raw de aptitud

Se utiliza cuando un componente crea la carga útil específica del canal.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "raw"
payload Carga útil específica del canal Objeto JSON

Carga útil de mensaje cerrado de sesión de respuesta de aptitud

Representa una carga útil de mensaje cerrada de sesión. Proporciona acuse de recibo del cierre de sesión en el backend.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "sessionClosed"

Mensaje de texto de respuesta de aptitud

Representa un mensaje de texto. Aplica las siguientes propiedades a los mensajes de respuesta.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "text"
text Texto del mensaje cadena
Por ejemplo:
{
    "messagePayload": {
        "type": "text",
        "text": "What do you want to do?",
        "actions": [
            {
                "type": "postback",
                "label": "Order Pizza",
                "postback": {
                    "state": "askAction",
                    "action": "orderPizza"
                }
            },
            {
                "type": "postback",
                "label": "Cancel A Previous Order",
                "postback": {
                    "state": "askAction",
                    "action": "cancelOrder"
                }
            }
        ]
    },
    "userId": "guest"
}

Carga útil de mensaje de flujo de texto de respuesta de aptitud

La carga útil de respuesta de flujo de texto r representa una respuesta de flujo de texto que se entrega en fragmentos. Aplica las siguientes propiedades a la carga útil del mensaje de respuesta:
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "texStream"
aggregateText Texto agregado que se entrega en el flujo hasta el fragmento actual. cadena
streamId ID del conjunto. Los fragmentos del mismo flujo tienen el mismo streamId. cadena
streamState Estado de flujo del fragmento de flujo actual "start", "running", "end"
text Texto parcial entregado en el fragmento actual cadena

Mensaje de formulario de conocimientos

Representa un mensaje que devuelve los resultados de una consulta en un formulario de solo lectura. El mensaje consta de una matriz de resultados de formulario. Cada resultado de formulario contiene una matriz fields con pares clave-valor que representan un campo. Aplica las siguientes propiedades a los mensajes de respuesta.
Nota

Este tipo de mensaje se utiliza para cuadros de diálogo SQL.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "form"
forms Matriz de resultados de formulario. Cada resultado contiene una matriz fields que representa los campos del formulario. Matriz<Fila>
formColumns Número de columnas en las que se deben agrupar los campos del formulario. 1 2
paginationInfo Información de paginación de los resultados del formulario PaginationInfo No
{
    "type":"form",
    "headerText":"A-Team",
    "forms":[
        {
            "fields":[
                {
                    "displayType":"text",
                    "label":"First Name",
                    "alignment":"left",
                    "value":"Aaron"
                },
                {
                    "displayType":"text",
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Adams"
                },
                {
                    "displayType":"text",
                    "label":"Title",
                    "alignment":"left",
                    "value":"Demo Builder"
                },
                {
                    "displayType":"text",
                    "label":"Phone",
                    "alignment":"left",
                    "value":"1234567890"
                },
                {
                    "linkLabel":"Open Link",
                    "displayType":"link",
                    "label":"Contact",
                    "alignment":"left",
                    "value":"https://www.example.com/in/aaron-adams-4862752"
                },
                {
                    "displayType":"text",
                    "label":"Bio",
                    "alignment":"left"
                }
            ]
        },
        {
            "fields":[
                {
                    "displayType":"text",
                    "label":"First Name",
                    "alignment":"left",
                    "value":"Bob"
                },
                {
                    "displayType":"text",
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Brown"
                },
                {
                    "displayType":"text",
                    "label":"Title",
                    "alignment":"left",
                    "value":"Multi-lingual Expert"
                },
                {
                    "displayType":"text",
                    "label":"Phone",
                    "alignment":"left",
                    "value":"1234567890"
                },
                {
                    "linkLabel":"Open Link",
                    "displayType":"link",
                    "label":"Contact",
                    "alignment":"left",
                    "value":"https://www.example.com/in/Bobbrown"
                },
                {
                    "displayType":"text",
                    "label":"Bio",
                    "alignment":"left",
                    "value":"Bob is a member of the cloud architects team which is specialized in enterprise mobility and cloud development. Bob has been directly involved with Oracle middleware since 2005 during which he held different roles in managing highly specialized teams."
                }
            ]
        },
        {
            "fields":[
                {
                    "displayType":"text",
                    "label":"First Name",
                    "alignment":"left",
                    "value":"Charlie"
                },
                {
                    "displayType":"text",
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Chase"
                },
                {
                    "displayType":"text",
                    "label":"Title",
                    "alignment":"left",
                    "value":"Flow Builder"
                },
                {
                    "displayType":"text",
                    "label":"Phone",
                    "alignment":"left",
                    "value":"1234567890"
                },
                {
                    "linkLabel":"Open Link",
                    "displayType":"link",
                    "label":"Contact",
                    "alignment":"left",
                    "value":"https://www.example.com/in/Charlie-chase-97a418"
                },
                {
                    "displayType":"text",
                    "label":"Bio",
                    "alignment":"left",
                    "value":"Charlie is a member of the enterprise mobility team. Charlie has 20+ years experience with custom development. Charlie is an expert on mobile cloud services and development tools. He is the creator of productivity tools. His latest passion is building chatbots with a minimum amount of custom code."
                }
            ]
        }
    ],
    "formColumns":2,
    "paginationInfo":{
        "currentRangeSize":3,
        "rangeStart":0,
        "nextRangeSize":2,
        "hasPrevious":false,
        "hasNext":true,
        "totalCount":5,
        "rangeSize":3,
        "status":"Showing 1-3 of 5 items"
    },
    "globalActions":[
        {
            "postback":{
                "variables":{},
                "action":"system.showMore"
            },
            "label":"Show More",
            "type":"postback"
        }
    ]
}

Mensaje de tabla de aptitudes

Representa un mensaje que devuelve los resultados de una consulta en formato de tabla. El mensaje consta de una matriz de cabeceras y una matriz de filas. Las propias filas contienen una matriz fields que representa celdas individuales. Aplica las siguientes propiedades a los mensajes de respuesta.
Nota

Este tipo de mensaje se utiliza para cuadros de diálogo SQL.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "table"
headings Matriz de cabeceras de tabla Matriz<Cabecera>
tableTitle El título de la tabla cadena No
rows Matriz de filas de tablas. Cada fila contiene una matriz fields que representa las celdas de la tabla. Matriz<Fila>
paginationInfo Información de paginación de los resultados de la tabla PaginationInfo No
{
    "type":"table",
    "headerText":"A-Team",
    "tableTitle": "Document",
    "headings":[
        {
            "width":20,
            "label":"First Name",
            "alignment":"left"
        },
        {
            "width":20,
            "label":"Last Name",
            "alignment":"left"
        },
        {
            "width":35,
            "label":"Title",
            "alignment":"left"
        },
        {
            "width":25,
            "label":"Phone",
            "alignment":"right"
        }
    ],
    "rows":[
        {
            "fields":[
                {
                    "displayType":"text",
                    "width":20,
                    "label":"First Name",
                    "alignment":"left",
                    "value":"Aaron"
                },
                {
                    "displayType":"text",
                    "width":20,
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Adams"
                },
                {
                    "displayType":"text",
                    "width":35,
                    "label":"Title",
                    "alignment":"left",
                    "value":"Demo Builder"
                },
                {
                    "displayType":"text",
                    "width":25,
                    "label":"Phone",
                    "alignment":"right",
                    "value":"1234567890"
                }
            ]
        },
        {
            "fields":[
                {
                    "displayType":"text",
                    "width":20,
                    "label":"First Name",
                    "alignment":"left",
                    "value":"Bob"
                },
                {
                    "displayType":"text",
                    "width":20,
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Brown"
                },
                {
                    "displayType":"text",
                    "width":35,
                    "label":"Title",
                    "alignment":"left",
                    "value":"Multi-lingual Expert"
                },
                {
                    "displayType":"text",
                    "width":25,
                    "label":"Phone",
                    "alignment":"right",
                    "value":"1234567890"
                }
            ]
        },
        {
            "fields":[
                {
                    "displayType":"text",
                    "width":20,
                    "label":"First Name",
                    "alignment":"left",
                    "value":"Charlie"
                },
                {
                    "displayType":"text",
                    "width":20,
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Chase"
                },
                {
                    "displayType":"text",
                    "width":35,
                    "label":"Title",
                    "alignment":"left",
                    "value":"Flow Builder"
                },
                {
                    "displayType":"text",
                    "width":25,
                    "label":"Phone",
                    "alignment":"right",
                    "value":"1234567890"
                }
            ]
        },
        {
            "fields":[
                {
                    "displayType":"text",
                    "width":20,
                    "label":"First Name",
                    "alignment":"left",
                    "value":"David"
                },
                {
                    "displayType":"text",
                    "width":20,
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Davidson"
                },
                {
                    "displayType":"text",
                    "width":35,
                    "label":"Title",
                    "alignment":"left",
                    "value":"Machine Learning Expert"
                },
                {
                    "displayType":"text",
                    "width":25,
                    "label":"Phone",
                    "alignment":"right",
                    "value":"1234567890"
                }
            ]
        },
        {
            "fields":[
                {
                    "displayType":"text",
                    "width":20,
                    "label":"First Name",
                    "alignment":"left",
                    "value":"Eric"
                },
                {
                    "displayType":"text",
                    "width":20,
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Eastman Junior"
                },
                {
                    "displayType":"text",
                    "width":35,
                    "label":"Title",
                    "alignment":"left",
                    "value":"Docker Expert"
                },
                {
                    "displayType":"text",
                    "width":25,
                    "label":"Phone",
                    "alignment":"right",
                    "value":"1234567890"
                }
            ]
        }
    ],
    "paginationInfo":{
        "currentRangeSize":5,
        "rangeStart":0,
        "nextRangeSize":-3,
        "hasPrevious":false,
        "hasNext":false,
        "totalCount":5,
        "rangeSize":8,
        "status":"Showing 1-5 of 5 items"
    }
}

Tabla de aptitudes - Mensaje de formulario

Este mensaje combina los tipos de mensaje Table y Form. Representa un mensaje que devuelve los resultados de una consulta en forma de tabla. Cada fila de la tabla tiene un formulario de solo lectura además de la información de fila. Aplica las siguientes propiedades a los mensajes de respuesta.
Nota

Este tipo de mensaje se utiliza para cuadros de diálogo SQL.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje "tableForm"
tableTitle El título de la tabla cadena No
headings Matriz de cabeceras de tabla Matriz<Cabecera>
rows Matriz de filas de tablas. Cada fila contiene una matriz de campos que representan las celdas de la tabla. Matriz<Fila>
forms Matriz de resultados de formulario que se corresponden con cada fila de tabla. Cada formulario contiene una matriz fields que representa los campos del formulario. Matriz<Formulario>
formColumns Número de columnas en las que se deben agrupar los campos del formulario. 1 2
paginationInfo Matriz de acciones globales relacionadas con el texto Matriz<Acción> No
{
    "type":"tableForm",
    "headerText":"A-Team",
    "tableTitle": "Document",
    "headings":[
        {
            "width":47,
            "label":"First Name",
            "alignment":"left"
        },
        {
            "width":47,
            "label":"Last Name",
            "alignment":"left"
        }
    ],
    "rows":[
        {
            "fields":[
                {
                    "displayType":"text",
                    "label":"First Name",
                    "alignment":"left",
                    "value":"Aaron"
                },
                {
                    "displayType":"text",
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Adams"
                }
            ]
        },
        {
            "fields":[
                {
                    "displayType":"text",
                    "label":"First Name",
                    "alignment":"left",
                    "value":"Bob"
                },
                {
                    "displayType":"text",
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Brown"
                }
            ]
        },
        {
            "fields":[
                {
                    "displayType":"text",
                    "label":"First Name",
                    "alignment":"left",
                    "value":"Charlie"
                },
                {
                    "displayType":"text",
                    "label":"Last Name",
                    "alignment":"left",
                    "value":"Chase"
                }
            ]
        }
    ],
    "forms":[
        {
            "title":"View details Aaron Adams",
            "fields":[
                {
                    "displayType":"text",
                    "label":"Title",
                    "alignment":"left",
                    "value":"Demo Builder"
                },
                {
                    "displayType":"text",
                    "label":"Phone",
                    "alignment":"left",
                    "value":"1234567890"
                },
                {
                    "linkLabel":"Open Link",
                    "displayType":"link",
                    "label":"Contact",
                    "alignment":"left",
                    "value":"https://www.example.com/in/Aaron-adams-4862572"
                },
                {
                    "displayType":"text",
                    "label":"Bio",
                    "alignment":"left"
                }
            ]
        },
        {
            "title":"View details Bob Brown",
            "fields":[
                {
                    "displayType":"text",
                    "label":"Title",
                    "alignment":"left",
                    "value":"Multi-lingual Expert"
                },
                {
                    "displayType":"text",
                    "label":"Phone",
                    "alignment":"left",
                    "value":"1234567890"
                },
                {
                    "linkLabel":"Open Link",
                    "displayType":"link",
                    "label":"Contact",
                    "alignment":"left",
                    "value":"https://www.example.com/in/Bobbrown"
                },
                {
                    "displayType":"text",
                    "label":"Bio",
                    "alignment":"left",
                    "value":"Bob is a member of the cloud architects team which is specialized in enterprise mobility and cloud development. Bob has been directly involved with Oracle middleware since 2005 during which he held different roles in managing highly specialized teams."
                }
            ]
        },
        {
            "title":"View details Charlie Chase",
            "fields":[
                {
                    "displayType":"text",
                    "label":"Title",
                    "alignment":"left",
                    "value":"Flow Builder Fanatic"
                },
                {
                    "displayType":"text",
                    "label":"Phone",
                    "alignment":"left",
                    "value":"1234567890"
                },
                {
                    "linkLabel":"Open Link",
                    "displayType":"link",
                    "label":"Contact",
                    "alignment":"left",
                    "value":"https://www.example.com/in/Charlie-chase-97a418"
                },
                {
                    "displayType":"text",
                    "label":"Bio",
                    "alignment":"left",
                    "value":"Charlie is a member of the enterprise mobility team. Charlie has 20+ years experience with custom development. Charlie is an expert on mobile cloud services and development tools. He is the creator of productivity tools. His latest passion is building chatbots with a minimum amount of custom code."
                }
            ]
        }
    ],
    "formColumns":2,
    "paginationInfo":{
        "currentRangeSize":3,
        "rangeStart":0,
        "nextRangeSize":2,
        "hasPrevious":false,
        "hasNext":true,
        "totalCount":5,
        "rangeSize":3,
        "status":"Showing 1-3 of 5 items"
    },
    "actions":[
        {
            "postback":{
                "variables":{

                },
                "action":"system.showMore"
            },
            "label":"Show More",
            "type":"postback"
        }
    ],
    "footerText":"Tap on a row to see personal details"
}

Mensaje de formulario de edición de aptitud

Representa un mensaje de formulario editable (formulario de entrada). El mensaje consta de una matriz Field.
Nombre Descripción Tipo ¿Obligatoria?
type Tipo de mensaje. En este caso, es "editForm". "editForm"
title Título de representante del formulario de edición Cadena No
fields Lista de campos que pueden incluir campos editables y de solo lectura. Campo<de matriz>
formColumns Número de columnas en las que se deben agrupar los campos del formulario. La propiedad solo se aplica cuando también se define la propiedad field. Entero No
formRows Lista de filas que puede incluir campos editables y de solo lectura. Debe definir la propiedad fields y formRows es necesario. Son mutuamente excluyentes. Matriz<FormRow>  
errorMessage Mensaje de error de nivel de formulario que se muestra cuando el usuario ha enviado datos no válidos pero el error no se puede enlazar a un campo individual. Cadena Número
actions Matriz de acciones relacionadas con el formulario de edición. Esta matriz incluye un SubmitFormAction. Se muestra un error en la consola del explorador cuando SubmitFormAction no está incluido en la matriz actions. Matriz<Acción> Número
globalActions Matriz de acciones globales Matriz<Acción> No
channelExtensions Juego de propiedades de extensión específicas del canal

El objeto channelExtensions puede incluir una propiedad replaceMessage que se utiliza para sustituir un formulario de entrada anterior.

JSONObject No
{
    "messagePayload": {
        "headerText": "Create Expense",
        "type": "editForm",
        "title": "Fill in the below form",
        "fields": [
            {
                "displayType": "textInput",
                "serverErrorMessage": "Invalid Text Input",
                "defaultValue": "Expense",
                "minLength": 5,
                "id": "Subject",
                "label": "Subject",
                "placeholder": "Enter subject of the expense",
                "clientErrorMessage": "Subject is required and must be between 5 and 15 characters",
                "maxLength": 15,
                "required": true
            },
            {
                "displayType": "textInput",
                "defaultValue": "expense",
                "multiLine": true,
                "id": "Description",
                "label": "Description",
                "placeholder": "What is expense justification",
                "clientErrorMessage": "Description is required",
                "required": true
            },
            {
                "displayType": "datePicker",
                "defaultValue": "2023-06-07",
                "maxDate": "2023-06-22",
                "id": "Date",
                "label": "Expense Date",
                "placeholder": "Pick a date in the past",
                "clientErrorMessage": "Expense date is required and must be in the past.",
                "required": true
            },
            {
                "displayType": "timePicker",
                "defaultValue": "18:58",
                "id": "Time",
                "label": "Expense Time",
                "placeholder": "What time was the expense",
                "clientErrorMessage": "Time is required. Please fill a value",
                "required": true
            },
            {
                "displayType": "numberInput",
                "minValue": 5,
                "defaultValue": 6,
                "maxValue": 500,
                "id": "Amount",
                "label": "Amount",
                "placeholder": "Enter expense amount",
                "clientErrorMessage": "Amount is required and must be between 5 and 500.",
                "required": true
            },
            {
                "autoSubmit": true,
                "displayType": "toggle",
                "defaultValue": "true",
                "labelOn": "Yes",
                "id": "TipIncluded",
                "label": "Tip Included?",
                "valueOff": "false",
                "labelOff": "No",
                "valueOn": "true"
            },
            {
                "displayType": "singleSelect",
                "serverErrorMessage": "Invalid Selection",
                "defaultValue": "Public transport",
                "options": [
                    {
                        "label": "Public transport",
                        "value": "Public transport"
                    },
                    {
                        "label": "Flight",
                        "value": "Flight"
                    }
                ],
                "layoutStyle": "list",
                "id": "Type",
                "label": "Expense Type",
                "placeholder": "Select expense type",
                "clientErrorMessage": "Expense type is required",
                "required": true
            },
            {
                "displayType": "multiSelect",
                "defaultValue": [
                    "Toff van Alphen"
                ],
                "options": [
                    {
                        "label": "Toff van Alphen",
                        "value": "Toff van Alphen"
                    },
                    {
                        "label": "Roger Federer",
                        "value": "Roger Federer"
                    }
                ],
                "layoutStyle": "checkboxes",
                "id": "Attendees",
                "label": "Attendees",
                "placeholder": "Select attendees",
                "clientErrorMessage": "Please select atleast one attendee",
                "required": true
            }
        ],
        "formColumns": 1,
        "actions": [
            {
                "postback": {
                    "system.botId": "6803DE12-DAA9-4182-BD54-3B4D431554F4",
                    "system.flow": "ExpenseFlow",
                    "system.state": "editFormMapVar"
                },
                "label": "Submit",
                "type": "submitForm"
            }
        ],
        "channelExtensions": {
            "replaceMessage": "True"
        }
    },
    "source": "BOT",
    "userId": "guest"
}