Modelo de Mensagem

Para usar recursos como o modo sem interface do usuário e delegar, é necessário entender mensagens do usuário e da habilidade. Tudo o que é recebido ou enviado do Oracle Chat Server é representado como uma mensagem que é enviada do usuário à habilidade ou da habilidade ao usuário.

Estes são os tipos base usados em todas as mensagens enviadas do usuário para a habilidade e vice-versa. Eles são blocos de construção de todas as mensagens.

Ação

Uma ação representa algo que o usuário pode selecionar.
Nome Descrição Tipo 0brigatório?
type O tipo de ação string Sim
label O texto descritivo do label da ação. string Pelo menos um label ou imageUrl deve ser incluído.
imageUrl A imagem da ação string Pelo menos uma única propriedade label ou imageUrl deve ser incluída.
style O estilo de renderização do botão "primary", "danger", "default" No
displayType A renderização para o tipo de elemento de ação (botão, link ou ícone) "button", "link", "icon" No
channelExtensions As propriedades de extensão específicas do canal associadas à ação JSONObject No

PostbackAction

Envia um postback predefinido de volta à habilidade quando o usuário seleciona uma ação.
Nome Descrição Tipo 0brigatório?
type O tipo de ação "postback" Sim
postback O postback retornado quando o usuário seleciona uma ação. Uma string ou um objeto JSON Sim
Por exemplo :
{
    "type": "postback",
    "label": "Large Pizza",
    "imageUrl": "https://example.com/images/gallery/locations/11.jpg",
    "postback": {
        "state": "askSize",
        "action": "getCrust"
    }
}

CallAction

Solicita que o cliente chame um número de telefone especificado em nome do usuário.
Nome Descrição Tipo 0brigatório?
type O tipo de ação "ligar" Sim
phoneNumber O número de telefone a ser chamado string Sim
Por exemplo :
{
    "type": "call",
    "label": "Call Support",
    "imageUrl": "http://example.com.ar/files/2016/05/cuidado.jpg",
    "phoneNumber": "18005555555"
}

urlAction

Solicita que o cliente abra um site em uma nova guia ou em um browser no aplicativo.

Nome Descrição Tipo 0brigatório?
type O tipo de ação "ligar" Sim
url O URL do site que é exibido. string Sim

ShareAction

Solicita que o cliente abra uma caixa de diálogo de compartilhamento para o usuário.
Nome Descrição Tipo 0brigatório?
type O tipo de ação "share" Sim

LocationAction

Solicita que o cliente pergunte a localização do usuário.
Nome Descrição Tipo 0brigatório?
type O tipo de ação "location" Sim
Por exemplo :
{
    "type": "location",
    "label": "Share location",
    "imageUrl": "http://images.example.com/location-clipart-location-pin-clipart-1.jpg"
}

PopupAction

Essa ação abre uma janela pop-up depois que os usuários executam uma ação de clique em um elemento. PopupAction usa as propriedades Action juntamente com as suas:
Nome Descrição Tipo 0brigatório?
type O tipo de ação "popup" Sim
popupContent O conteúdo exibido na janela pop-up. O payload da mensagem (consulte o exemplo JSON a seguir) Sim
{
    "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,
    }
}

SubmitFormAction

Esta ação é usada para enviar um formulário de entrada para a habilidade quando ela satisfaz a validação do cliente. Ele adiciona as seguintes propriedades às propriedades Ação:
Nome Descrição Tipo 0brigatório?
type O tipo de ação "submitForm" Sim
postback O payload de postback, que pode incluir uma propriedade de ação para acionar a navegação. O valor dessa propriedade deve ser definido em FormSubmissionMessagePayload. JSONObject No
Exemplo de JSON
{
    "type": "submitForm",
    "label": "Submit",
    "postback": {
        "system.botId": "6803DE12-DAA9-4182-BD54-3B4D431554F4",
        "system.flow": "ExpenseFlow",
        "system.state": "editFormMapVar"
    }
}

Anexo

Representa um anexo que é enviado pelo usuário.
Nome Descrição Tipo 0brigatório?
title O título do anexo string No
type O tipo de anexo string (valores válidos: áudio, arquivo, imagem, vídeo) Sim
url O URL de download do anexo string Sim
Por exemplo :
{
    "title": "Oracle Open World Promotion",
    "type": "image",
    "url": "https://www.oracle.com/us/assets/hp07-oow17-promo-02-3737849.jpg"
}

Cartão

Representa um único cartão no payload da mensagem.
Nome Descrição Tipo 0brigatório?
title O título do cartão, exibido como a primeira linha no cartão. string Sim
description A descrição do cartão string No
imageUrl O URL da imagem que é exibida. string No
URL O URL do site que é aberto por um toque. string No
actions Um array de ações relacionadas ao texto array No
channelExtensions As propriedades de extensão específicas do canal associadas à mensagem JSONObject No

Localização

Representa um objeto de localização.
Nome Descrição Tipo 0brigatório?
title O título da localização string No
url O URL para exibir a localização em um mapa string No
latitude O valor da longitude da coordenada de GPS duplo Sim
longitude O valor da latitude da coordenada de GPS duplo Sim
Por exemplo :
{
    "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
}

PaginationInfo

Representa as informações de paginação dos resultados nos objetos Table, Form e Table-Form.

Nome Descrição Tipo 0brigatório?
totalCount A contagem total de resultados número Sim
rangeSize O tamanho do intervalo dos resultados por página número Sim
status A mensagem de status de paginação String Sim
currentRangeSize O tamanho da faixa de resultados atual número Sim
rangeStart O deslocamento inicial do intervalo atual de resultados número Sim
nextRangeSize O tamanho do próximo intervalo de resultados número Sim
hasPrevious Indica se há um conjunto de resultados anterior booleano Sim
hasNext Indica se há um próximo conjunto de resultados booleano Sim

FormRow

Nome Descrição Tipo 0brigatório?
id O ID da linha do formulário String Número
columns Uma lista de colunas exibidas na linha do formulário. Array <Coluna> Sim
selectAction As ações que são executadas quando o formulário é selecionado. Quando os usuários passam o mouse sobre o formulário, o rótulo da ação é exibido como uma dica de ferramenta (quando suportado pelo canal). Ação No
separator Definir esta propriedade como verdadeira insere uma linha separadora acima do conteúdo na linha do formulário. Boolean No
channelExtensions As propriedades de extensão específicas do canal associadas à mensagem JSONObject No

Coluna

Nome Descrição Tipo 0brigatório?
id O ID da coluna String No
fields Uma lista de campos que são exibidos verticalmente dentro da coluna. Esses campos devem ser instâncias ReadOnlyField quando a coluna for usada em um FormRow dentro de um Form. Os campos podem ser somente leitura e editáveis quando o FormRow é usado em um EditFormMessagePayload. Array<Campo> Sim
verticalAlignment O alinhamento vertical da coluna em relação às outras colunas na mesma linha do formulário. String No
width Determina a largura da coluna na linha do formulário. Os valores permitidos são auto (o padrão) e stretch. Quando definida como stretch, a coluna usa toda a largura restante depois que qualquer coluna de largura automática é renderizada. Se houver várias colunas definidas como stretch, elas dividirão uniformemente a largura restante. String No
channelExtensions As propriedades de extensão específicas do canal associadas à mensagem JSONObject No

Form

Representa uma matriz de campos junto com um título. Usado em mensagens Table-Form para formulários aninhados de uma linha de tabela.
Nome Descrição Tipo 0brigatório?
id O ID do formulário String No
title O título do form String No
fields Uma matriz de campos <Campo> do Array Sim
actions Um array de ações Array <BotsAction> No
formRows Uma lista de linhas que podem incluir campos editáveis e somente leitura. Você pode definir a lista de campos (usando fields e, opcionalmente, as propriedades formColumns) ou uma lista de linhas usando essa propriedade. As opções fields e formRows são mutuamente exlusivas. Ação Número
channelExtensions As propriedades de extensão específicas do canal associadas à mensagem JSONObject Número

Linha

Representa uma matriz de campos
Nome Descrição Tipo 0brigatório?
fields Uma matriz de campos <Campo> Sim
selectAction A ação executada quando a linha é selecionada. O rótulo da ação é mostrado como dica de ferramenta quando os usuários passam o mouse sobre a linha. Ação Número
channelExtensions As propriedades de extensão específicas do canal associadas à mensagem JSONObject Número

Cabeçalho

Representa um cabeçalho para tabelas em um objeto Table ou Table-Form.
Nome Descrição Tipo 0brigatório?
label O rótulo do cabeçalho String Sim
alignment O posicionamento do rótulo dentro da célula "left", "right", "center" Sim
width A porcentagem sugerida da largura da tabela que deve ser fornecida ao cabeçalho.   No
channelExtensions As propriedades de extensão específicas do canal associadas à mensagem JSONObject No

Campo

Representa as informações atômicas de uma célula de tabela ou de um campo de formulário nos objetos Table, Form e Table-Form, fornecidos como par chave/valor.
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo String Sim
label A chave do campo String Sim
marginTop A quantidade de espaço vertical entre este campo e o campo anterior dentro da mesma coluna "none", "medium","large" No
labelFontSize O tamanho da fonte usado para o rótulo do campo "small", "medium", "large" Número
labelFontWeight O posicionamento do rótulo dentro de sua célula "light", "medium", "bold" Número
channelExtensions As propriedades de extensão específicas do canal associadas à mensagem JSONObject Número

selectFieldOption

Os campos Seleção Única e Seleção Múltipla usam uma lista de opções de campo de seleção com as seguintes propriedades:
Nome Descrição Tipo 0brigatório?
label O texto de exibição string Sim
value O valor da opção Tipos de dados primitivos (string, número, booliano etc.) Número
channelExtensions As propriedades de extensão específicas do canal associadas à opção de campo. JSONObject Número

Campo Somente Leitura

Representa um campo somente leitura. Todos os campos somente leitura herdam as propriedades de campo e têm as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
value O valor do campo string Sim
width A porcentagem sugerida da largura total disponível que o campo deve ocupar em um layout de tabela. número No
alignment O alinhamento do valor em uma coluna de tabela. O alinhamento padrão é right. "left", "center" e "right" No
onHoverPopupContent O conteúdo que é exibido quando os usuários passam o mouse sobre um campo. Payload da Mensagem No

Campo Texto

O campo de texto herda todas as propriedades do campo somente leitura.
Nome Descrição Tipo 0brigatório?
displayType O tipo de elemento. text (um valor de String) Sim
truncateAt A posição na qual o texto longo fica truncado e onde uma marca de reticências (que indica que o valor foi truncado) é exibida. Número No
fontSize O tamanho da fonte usado para o valor do campo "small", "medium", "large" No
fontWeight A espessura da fonte usada para o valor do campo "light", "medium", "bold" No
.

Campo de Link

O campo de link herda todas as propriedades de campo somente leitura e tem as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo "link" Sim
linkLabel O rótulo usado para o hiperlink string No
imageUrl O URL da imagem que abre um link quando clicado. string No

Campo de Mídia

O campo de mídia herda todas as propriedades de campo somente leitura e tem as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo "media" Sim
mediaType O tipo de mídia do campo "video", "audio", "image" Sim

Campo Ação

O campo de ação herda todas as propriedades de campo somente leitura e tem as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo "action" Sim
action A ação que deve ser executada quando o usuário clica no botão de ação. Ação Sim

Campo editável

Representa um campo editável. Todos os campos editáveis herdam as propriedades de campo e têm as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
id O ID do campo string Sim
placeholder Uma descrição da entrada esperada do usuário. Este texto é exibido quando o usuário ainda não fez uma seleção ou inseriu um valor. string Número
required Se esta entrada é necessária para enviar o formulário booleano Número
clientErrorMessage A mensagem de erro no nível do campo exibida abaixo do campo quando ocorre um erro de validação no lado do cliente. Se não for fornecido, o SDK assumirá como padrão editFieldErrorMessage. string Número
serverErrorMessage A mensagem de erro no nível do campo exibida abaixo do campo quando ocorre um erro de validação no lado do servidor. Essa mensagem de erro deve ser incluída no payload enviado pela habilidade. string Número
autoSubmit Quando definido como true, o formulário será enviado automaticamente quando o usuário tiver digitado um valor para o campo.   Número

Seleção Única

O campo de seleção única herda todas as propriedades do Campo Editável e tem as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo "singleSelect" Sim
defaultValue A seleção default Tipos de dados primitivos (string, número, booliano etc.) No
options Uma matriz de opções apresentadas ao usuário. Um array selectFieldOption Sim
layoutStyle O estilo de layout usado para renderizar as opções de seleção única. O layout padrão é list. "list", "radioGroup" No
layoutDirection A direção do layout (horizontal ou vertical) para os botões de opção quando layoutStyle é definido como radioGroup. Por padrão, a direção do layout é definida como vertical,, mas você pode defini-la como horizontal. String No

Multisseleção

O campo de seleção múltipla herda todas as propriedades do Campo Editável e tem as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo "multiSelect" Sim
defaultValue A seleção default Uma matriz<objeto> de tipos de dados primitivos (uma string, um número, um valor booliano etc.) No
options Uma matriz de opções apresentadas ao usuário Um array selectFieldOption Sim
layoutStyle O estilo de layout usado para renderizar as opções. "list", "checkboxes" No
layoutDirection A direção do layout (horizontal ou vertical) para as caixas de seleção quando layoutStyle é definido como checkboxes. Por padrão, a direção do layout é definida como vertical, mas você também pode defini-la como horizontal. String No

DatePicker

O campo do seletor de data herda as propriedades do Campo Editável e tem as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo "datePicker" Sim
defaultValue O valor inicial deste campo. O formato deve ser AAAA-MM-DD. string No
minDate A data mínima ou mais antiga permitida. O formato deve ser AAAA-MM-DD. string No
maxDate A data máxima ou mais recente permitida. O formato deve ser AAAA-MM-DD. string No

TimePicker

O campo do seletor de tempo herda as propriedades do Campo Editável e tem as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo "timePicker" Sim
defaultValue O valor inicial para este campo, inserido como HH:mm no formato de 24 horas. string No
minTime O tempo mínimo, ou mais antigo, permitido, inserido como HH:mm no formato de 24 horas. Por exemplo, 00:00. string No
maxTime O tempo máximo, ou mais recente, permitido, inserido como HH:mm, no formato de 24 horas. Por exemplo, 13:00. string No

Alternar

O campo de alternância herda todas as propriedades do Campo Editável e tem as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo "toggle" Sim
defaultValue O valor selecionado inicial. Se quiser que a alternância seja ativada inicialmente, defina o valor padrão para o mesmo valor que valueOn. string No
valueOff O valor quando a alternância está desativada string Sim
valueOn O valor quando a alternância está ativada string Sim
labelOff O label do valor "off" string No
labelOn O label do valor "on" string No

TextInput

O campo de entrada de texto herda as propriedades do Campo Editável e tem as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo "textInput" Sim
defaultValue O valor inicial deste campo string nenhuma
validationRegularExpression Uma expressão regular indicando o formato necessário para esta entrada de texto string nenhuma
multiline O flag que determina se renderizar várias linhas de entrada booleano nenhuma
minLength O tamanho mínimo da entrada que o usuário deve fornecer inteiro nenhuma
maxLength O número máximo de caracteres permitido no campo de entrada de texto inteiro nenhuma
inputStyle O estilo de entrada usado pelo cliente. Os valores permitidos são: "text", "tel", "url","email", e "password". string nenhum

NumberInput

O campo de entrada de número herda as propriedades do Campo Editável e tem as seguintes propriedades adicionais:
Nome Descrição Tipo 0brigatório?
displayType O tipo de campo "numberInput" Sim
defaultValue O valor inicial deste campo Inteiro No
minValue Um menor número permitido Inteiro No
maxValue O maior número permitido. Inteiro No

EventContextProperties

As propriedades do contexto do evento representam as propriedades do contexto CloudEvent.
Nome Descrição Tipo 0brigatório? Exemplo
dataschema Identifica o esquema ao qual os dados aderem. URI No "/dw/approval_payload.json"
datacontenttype O tipo de conteúdo dos dados contidos no atributo de dados. String No "application/json"
source O recurso que produziu o evento. URI No "objectstorage"
time O horário do evento expresso no formato de timestamp da RFC 3339. Timestamp No "2021-01-10T21:19:24Z"
specversion A versão da especificação do CloudEvents. String No "1.0"
id O ID da especificação CloudEvents. String No "123e4567-e89b-12d3-a456-426614174000"
subject O assunto do evento no contexto do produtor e/ou tipo de evento. String No "mynewfile.jpg"

Mensagem da Conversa

Todas as mensagens que fazem parte de uma conversa têm a seguinte estrutura:
Nome Descrição Tipo 0brigatório?
messagePayload O payload da mensagem Mensagem Sim
userId O ID do Usuário string Sim
Por exemplo :
{
    "messagePayload": {
        "text": "show menu",
        "type": "text"
    },
    "userId": "guest"
}

Mensagem

Mensagem é um tipo de base abstrato para todas as outras mensagens. Todas as mensagens o estendem para fornecer algumas informações.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem string Sim

Mensagem do Usuário

Representa uma mensagem enviada do usuário à habilidade.

Mensagem de Texto do Usuário

A mensagem de texto simples enviada ao servidor.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "text" Sim
text O texto da mensagem string Sim
Por exemplo :
{
    "messagePayload": {
        "text": "Order Pizza",
        "type": "text"
    },
    "userId": "guest"
}

Mensagem de Postback do Usuário

A mensagem de resposta de postback enviada ao servidor.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "postback" Sim
text O texto de postback string No
postback O postback da ação selecionada Uma string ou JSONObject Sim
Por exemplo :
{
    "messagePayload": {
        "postback": {
            "variables": {
                "pizza": "Small"
            },
            "system.botId": "69BBBBB-35BB-4BB-82BB-BBBB88B21",
            "system.state": "orderPizza"
        },
        "text": "Small",
        "type": "postback"
    },
    "userId": "guest"
}

Mensagem inboundEvent do Usuário

Representa as mensagens de eventos de saída que podem ser enviadas para o servidor. Ele aplica as propriedades a seguir ao Message.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "inboundEvent" Sim
eventType O tipo de evento (definido no catálogo de eventos) String Sim
eventVersion A versão do tipo de evento (definida no catálogo de eventos) String Sim
eventData Os dados comerciais JSONObject Sim
contextProperties As propriedades do contexto do evento Propriedades de contexto do evento No
Por exemplo :
{
    "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"
}

Mensagem de Envio de Formulário do Usuário

Isso representa a mensagem de envio de formulário que é enviada depois que o usuário enviou um formulário por um SubmitFormAction. Ela tem as seguintes propriedades:
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem. "formSubmission" Sim
submittedFields Pares de chave/valor dos valores de campo enviados. A chave é o nome (ID) do campo. JSONObject Sim
postback O payload de postback, que pode incluir uma propriedade de ação para acionar a navegação. O valor desta propriedade deve ser obtido de SubmitFormAction. JSONObject No
partialSubmitField O ID do campo que aciona um envio parcial do formulário. Os campos com a propriedade autoSumbit definida como true podem acionar um envio parcial de formulário. String No
Exemplo de JSON
{
    "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"
}

Mensagem de Anexo do Usuário

A mensagem de resposta de anexo enviada ao servidor.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "attachment" Sim
attachment Os metadados do anexo Anexo Sim
Por exemplo :
{
    "messagePayload": {
        "attachment": {
            "type": "image",
            "url": "http://oda-instance.com/attachment/v1/attachments/d43fd051-02cf-4c62-a422-313979eb9d55"
        },
        "type": "attachment"
    },
    "userId": "guest"
}

Mensagem de Localização do Usuário

A mensagem de resposta de localização enviada ao servidor.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "location" Sim
location As informações de localização do usuário Localização Sim
Por exemplo :
{
    "messagePayload": {
        "location": {
            "latitude": 45.9285271,
            "longitude": 132.6101925
        },
        "type": "location"
    },
    "userId": "guest"
}

Mensagem de qualificação

Representa a mensagem enviada da habilidade para o usuário.

Nome Descrição Tipo 0brigatório?
type O tipo de mensagem string Sim
headerText O texto do cabeçalho exibido acima do texto da mensagem. string No
footerText O texto do rodapé exibido abaixo do texto e das ações da mensagem, mas antes das ações globais. string No
actions Uma lista de ações relacionadas à mensagem Array<Action> No
footerForm Um layout de formulário que é exibido abaixo do texto do rodapé da mensagem e acima de suas ações globais. Mensagem do formulário de qualificação No
globalActions Uma lista de ações globais relacionadas ao texto Array<Ação> Número
channelExtensions As propriedades de extensão específicas do canal associadas à mensagem JSONObject Número

Mensagens de Texto do Bot

Representa uma mensagem de texto. Ele aplica as propriedades a seguir à Mensagem de Habilidade.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "text" Sim
text O texto da mensagem string Sim
Por exemplo :
{
    "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"
}

Mensagem de Localização da Habilidade

Representa uma mensagem de localização. Ele aplica as propriedades a seguir à Mensagem de Habilidade.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "location" Sim
location O local Localização Sim

Mensagem de Anexo de Habilidade

Representa uma mensagem de anexo. Ele aplica as propriedades a seguir à Mensagem de Habilidade.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "attachment" Sim
attachment O anexo enviado Anexo Sim
Observação

Os uploads de arquivos do site do host podem falhar e gerar um erro de console semelhante ao seguinte:
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
Isso ocorre porque as definições de CORS (Compartilhamento de Recursos entre Origens) do site do host, que bloqueiam todas as solicitações HTTP de origem cruzada, também podem bloquear solicitações de upload da instância do cliente para o servidor de anexos do Oracle Digital Assistant. Se você se deparar com esse problema, atualize a política de segurança do site do host para permitir o domínio da instância do Digital Assistant. Como a conversa usa conexões do WebSocket, o CORS não afeta a conversa.

Informando Nomes de Arquivo

Use os seguintes cabeçalhos para recuperar o nome de um arquivo (incluindo arquivos de vídeo, áudio ou imagem) que foi submetido a upload para o servidor de arquivos do ODA:
  • x-oda-meta-file-name
  • x-oda-meta-file-type
Você pode retornar esses cabeçalhos com solicitações GET ou HEAD. Use HEAD se um componente personalizado não precisar do conteúdo do arquivo.

Mensagens de Feedback

Isso representa um componente de classificação de feedback, que recebe o feedback de um usuário usando um indicador de classificação (geralmente um sistema de classificação por estrelas). Seu payload é semelhante a uma mensagem de texto, mas tem um campo de objeto channelExtensions adicional definido como { "displayType": "stars" }. Ele aplica as propriedades a seguir à Mensagem de Habilidade.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "text" Sim
text O texto da mensagem string Sim
channelExtensions Um objeto descrevendo extensões para o payload. { “displayType”: “stars” } Sim
Por exemplo :
{
    "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>"
}

Mensagem do Cartão de Habilidade

Representa um conjunto de opções que são exibidas para o usuário, horizontalmente como carrosséis ou verticalmente como listas. Ele aplica as propriedades a seguir à Mensagem de Habilidade.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "card" Sim
layout Se as mensagens serão exibidas horizontal ou verticalmente. string (valor: horizontal, vertical) Sim
cards Um array de cartões a serem renderizados. array Sim

Cartão

Representa um único cartão no payload da mensagem.
Nome Descrição Tipo 0brigatório?
title O título do cartão, exibido como a primeira linha no cartão. string Sim
description A descrição do cartão string Número
imageUrl O URL da imagem que é exibida. string Número
url O URL do site que é aberto por um toque. string Número
actions Um array de ações relacionadas ao texto array Número
Veja um exemplo:
{
    "messagePayload": {
        "type": "card",
        "layout": "horiztonal",
        "cards": [
            {
                "title": "Hawaiian Pizza",
                "description": "Ham and pineapple on thin crust",
                "actions": [
                    {
                        "type": "postback",
                        "label": "Order Small",
                        "postback": {
                            "state": "GetOrder",
                            "variables": {
                                "pizzaType": "hawaiian",
                                "pizzaCrust": "thin",
                                "pizzaSize": "small"
                            }
                        }
                    },
                    {
                        "type": "postback",
                        "label": "Order Large",
                        "postback": {
                            "state": "GetOrder",
                            "variables": {
                                "pizzaType": "hawaiian",
                                "pizzaCrust": "thin",
                                "pizzaSize": "large"
                            }
                        }
                    }
                ]
            },
            {
                "title": "Cheese Pizza",
                "description": "Cheese pizza (i.e. pizza with NO toppings) on thick crust",
                "actions": [
                    {
                        "type": "postback",
                        "label": "Order Small",
                        "postback": {
                            "state": "GetOrder",
                            "variables": {
                                "pizzaType": "cheese",
                                "pizzaCrust": "thick",
                                "pizzaSize": "small"
                            }
                        }
                    },
                    {
                        "type": "postback",
                        "label": "Order Large",
                        "postback": {
                            "state": "GetOrder",
                            "variables": {
                                "pizzaType": "cheese",
                                "pizzaCrust": "thick",
                                "pizzaSize": "large"
                            }
                        }
                    }
                ]
            }
        ],
        "globalActions": [
            {
                "type": "call",
                "label": "Call for Help",
                "phoneNumber": "123456789"
            }
        ]
    },
    "userId": "guest"
}

Mensagem de Postback de Habilidade

Representa um postback. Ele aplica as propriedades a seguir à Mensagem de Habilidade.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "postback" Sim
text O texto da mensagem string No
postback O postback Uma string ou um JSONObject Sim

Mensagem do formulário de qualificação

Representa uma mensagem que retorna os resultados de uma consulta em um formulário que é somente leitura. A mensagem consiste em uma matriz de resultados de formulário. Cada resultado de formulário contém um array fields com pares de chave/valor que representam um campo. Ele aplica as propriedades a seguir à Mensagem de Habilidade.
Observação

Este tipo de mensagem é usado para caixas de diálogo SQL.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "form" Sim
forms Uma matriz de resultados do formulário. Cada resultado contém um array fields que representa os campos do formulário. Matriz<Linha> Sim
formColumns O número de colunas em que os campos do formulário devem ser agrupados. 1 2 Sim
paginationInfo As informações de paginação dos resultados no formulário 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"
        }
    ]
}

Mensagem da Tabela de Habilidades

Representa uma mensagem que retorna os resultados de uma consulta em forma de tabela. A mensagem consiste em uma matriz de cabeçalhos e uma matriz de linhas. As próprias linhas contêm um array fields que representa células individuais. Ele aplica as propriedades a seguir à Mensagem de Habilidade.
Observação

Este tipo de mensagem é usado para caixas de diálogo SQL.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "table" Sim
headings Uma matriz de cabeçalhos de tabela Matriz<Cabeçalho> Sim
tableTitle O título da tabela string Número
rows Uma matriz de linhas de tabela. Cada linha contém um array fields que representa as células da tabela. Matriz<Linha> Sim
paginationInfo As informações de paginação dos resultados na tabela PaginationInfo Número
{
    "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"
    }
}

Tabela de Habilidades - Mensagem de Formulário

Essa mensagem combina os tipos de mensagem Table e Form. Ele representa uma mensagem que retorna os resultados de uma consulta na forma de uma tabela. Cada linha da tabela tem um formulário somente leitura além das informações da linha. Ele aplica as propriedades a seguir à Mensagem de Habilidade.
Observação

Este tipo de mensagem é usado para caixas de diálogo SQL.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "tableForm" Sim
tableTitle O título da tabela string No
headings Uma matriz de cabeçalhos de tabela Matriz<Cabeçalho> Sim
rows Uma matriz de linhas de tabela. Cada linha contém uma matriz de campos que representam as células da tabela. Matriz<Linha> Sim
forms Um array de resultados de formulário que correspondem a cada linha da tabela. Cada formulário contém um array fields que representa os campos do formulário. Matriz<Form> Sim
formColumns O número de colunas em que os campos do formulário devem ser agrupados. 1 2 Sim
paginationInfo Um array de ações globais relacionadas ao texto Array<Ação> 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"
}

Mensagem de Evento de Saída de Habilidade

Representa as mensagens de eventos de saída que podem ser enviadas pelo servidor. Ele aplica as propriedades a seguir ao Message.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "outboundEvent" Sim
eventType O tipo de evento (definido no catálogo de eventos) String Sim
eventVersion A versão do tipo de evento (definida no catálogo de eventos) String Sim
eventData Os dados comerciais JSONObject Sim
contextProperties As propriedades do contexto do evento Propriedades do Contexto do Evento No
Por exemplo :
{
    "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"
        }
    }
}

Mensagem do Formulário de Edição de Qualificação

Representa uma mensagem de formulário editável (formulário de entrada). A mensagem consiste em um array de Campo.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem. Nesse caso, é "editForm". "editForm" Sim
title Um título de representante para o formulário de edição String No
fields Uma lista de campos que podem incluir campos editáveis e somente leitura. Array<Field> Sim
formColumns O número de colunas nas quais os campos do formulário devem ser agrupados. A propriedade só é aplicável quando você também define a propriedade field. Número Inteiro No
formRows Uma lista de linhas que podem incluir campos editáveis e somente leitura. Defina a propriedade fields e formRows como obrigatórios. Elas são mutuamente exclusivas. Matriz<FormRow>  
errorMessage Uma mensagem de erro no nível do formulário que é exibida quando o usuário enviou dados inválidos, mas o erro não pode ser vinculado a um campo individual. String No
actions Uma matriz de ações relacionadas ao formulário de edição. Esse array inclui um SubmitFormAction. Um erro é exibido na console do browser quando o SubmitFormAction não está incluído no array actions. Array<Ação> No
globalActions Um array de ações globais Array<Ação> Não
channelExtensions Um conjunto de propriedades de extensão específicas do canal

O objeto channelExtensions pode incluir uma propriedade replaceMessage usada para substituir um formulário de entrada anterior.

JSONObject Não
{
    "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"
}

Mensagem Bruta da Habilidade

Usado quando um componente cria o payload específico do canal.
Nome Descrição Tipo 0brigatório?
type O tipo de mensagem "raw" Sim
payload O payload específico do canal Um objeto JSON Sim