Modèle de message

Pour utiliser des fonctionnalités telles que le mode sans interface utilisateur ou le délégué, vous devez comprendre les messages de l'utilisateur et de la brique. Tout ce qui est reçu ou envoyé par le serveur de discussion Oracle est représenté sous forme de message, qui est envoyé par l'utilisateur à la brique ou par la brique à l'utilisateur.

Il s'agit des types de base utilisés dans tous les messages envoyés par l'utilisateur à la brique, et inversement. Il s'agit des blocs de création de tous les messages.

Action

Une action correspond à un élément que l'utilisateur peut sélectionner.
Nom Description Type Requis ?
type Type d'action chaîne Oui
label Texte du libellé descriptif de l'action. chaîne Au moins l'un des éléments label ou imageUrl doit être inclus.
imageUrl Image de l'action chaîne Au moins une seule propriété label ou imageUrl doit être incluse.
style Style de rendu du bouton "primary", "danger", "default" Non
displayType Rendu du type d'élément d'action (bouton, lien ou icône) "button", "link", "icon" Non
channelExtensions Propriétés d'extension propres au canal associées à l'action JSONObject Non

PostbackAction

Renvoie un postback prédéfini à la brique lorsque l'utilisateur sélectionne une action.
Nom Description Type Requis ?
type Type d'action "postback" Oui
postback Postback qui est renvoyé lorsque l'utilisateur sélectionne une action. Chaîne ou objet JSON Oui
Par exemple :
{
    "type": "postback",
    "label": "Large Pizza",
    "imageUrl": "https://example.com/images/gallery/locations/11.jpg",
    "postback": {
        "state": "askSize",
        "action": "getCrust"
    }
}

CallAction

Demande au client d'appeler un numéro de téléphone indiqué au nom de l'utilisateur.
Nom Description Type Requis ?
type Type d'action "appeler" Oui
phoneNumber Numéro de téléphone à appeler chaîne Oui
Par exemple :
{
    "type": "call",
    "label": "Call Support",
    "imageUrl": "http://example.com.ar/files/2016/05/cuidado.jpg",
    "phoneNumber": "18005555555"
}

urlAction

Demande au client d'ouvrir un site Web dans un nouvel onglet ou dans un navigateur intégré à l'application.

Nom Description Type Requis ?
type Type d'action "appeler" Oui
url URL du site Web affiché. chaîne Oui

ShareAction

Demande au client d'ouvrir une boîte de dialogue de partage pour l'utilisateur.
Nom Description Type Requis ?
type Type d'action "partager" Oui

LocationAction

Demande au client de demander la localisation de l'utilisateur.
Nom Description Type Requis ?
type Type d'action "location" Oui
Par exemple :
{
    "type": "location",
    "label": "Share location",
    "imageUrl": "http://images.example.com/location-clipart-location-pin-clipart-1.jpg"
}

PopupAction

Cette action ouvre une fenêtre contextuelle une fois que les utilisateurs ont effectué une action de clic sur un élément. PopupAction utilise les propriétés Action avec ses propres propriétés :
Nom Description Type Requis ?
type Type d'action "popup" Oui
popupContent Contenu affiché dans la fenêtre contextuelle. Charge utile du message (reportez-vous à l'exemple JSON suivant) Oui
{
    "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

Cette action est utilisée pour soumettre un formulaire d'entrée à la brique lorsqu'elle satisfait la validation côté client. Il ajoute les propriétés suivantes aux propriétés Action :
Nom Description Type Requis ?
type Type d'action "submitForm" Oui
postback Charge utile de postback, qui peut inclure une action proeprty pour déclencher la navigation. La valeur de cette propriété doit être définie dans le fichier FormSubmissionMessagePayload. JSONObject Non
Exemple JSON
{
    "type": "submitForm",
    "label": "Submit",
    "postback": {
        "system.botId": "6803DE12-DAA9-4182-BD54-3B4D431554F4",
        "system.flow": "ExpenseFlow",
        "system.state": "editFormMapVar"
    }
}

Document joint

Représente une pièce jointe envoyée par l'utilisateur.
Nom Description Type Requis ?
title Titre de la pièce jointe chaîne Non
type Type de pièce jointe chaîne (valeurs valides : audio, fichier, image, vidéo) Oui
url URL de téléchargement de la pièce jointe. chaîne Oui
Par exemple :
{
    "title": "Oracle Open World Promotion",
    "type": "image",
    "url": "https://www.oracle.com/us/assets/hp07-oow17-promo-02-3737849.jpg"
}

Carte

Représente une carte unique dans la charge utile du message.
Nom Description Type Requis ?
title Titre de la carte, affiché en tant que première ligne sur la carte. chaîne Oui
description Description de la carte chaîne Non
imageUrl URL de l'image affichée. chaîne Non
URL URL du site Web ouvert en appuyant dessus. chaîne Non
actions Tableau d'actions associées au texte tableau Non
channelExtensions Propriétés d'extension propres au canal associées au message JSONObject Non

Localisation

Représente un objet de localisation.
Nom Description Type Requis ?
title Titre de la localisation chaîne Non
url URL permettant d'afficher la localisation sur une carte chaîne Non
latitude Valeur de longitude des coordonnées GPS double Oui
longitude Valeur de latitude des coordonnées GPS double Oui
Par exemple :
{
    "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

Représente les informations de pagination pour les résultats dans les objets Table, Form et Table-Form.

Nom Description Type Requis ?
totalCount Nombre total de résultats nombre Oui
rangeSize Taille de plage des résultats par page nombre Oui
status Message de statut de pagination Chaîne Oui
currentRangeSize Taille de la plage de résultats actuelle nombre Oui
rangeStart Décalage de début de la plage de résultats actuelle nombre Oui
nextRangeSize Taille de la prochaine plage de résultats nombre Oui
hasPrevious Indique s'il existe un ensemble de résultats précédent boolean Oui
hasNext Indique s'il existe un ensemble de résultats suivant boolean Oui

FormRow

Nom Description Type Requis ?
id ID de la ligne de formulaire Chaîne Non
columns Liste des colonnes affichées dans la ligne du formulaire. Tableau <Colonne> Oui
selectAction Actions exécutées lorsque le formulaire a été sélectionné. Lorsque les utilisateurs survolent le formulaire, le libellé de l'action s'affiche sous la forme d'une info-bulle (si elle est prise en charge par le canal). Action Non
separator La définition de cette propriété sur True insère une ligne de séparation au-dessus du contenu dans la ligne du formulaire. Valeur booléenne Non
channelExtensions Propriétés d'extension propres au canal associées au message JSONObject Non

Colonne

Nom Description Type Requis ?
id ID de la colonne Chaîne Non
fields Liste des champs qui s'affichent verticalement dans la colonne. Ces champs doivent être des instances ReadOnlyField lorsque la colonne est utilisée dans un élément FormRow dans un élément Form. Les champs peuvent être à la fois en lecture seule et modifiables lorsque FormRow est utilisé dans un élément EditFormMessagePayload. Tableau<Champ> Oui
verticalAlignment Alignement vertical de la colonne par rapport aux autres colonnes de la même ligne de formulaire. Chaîne Non
width Détermine la largeur de la colonne dans la ligne du formulaire. Les valeurs autorisées sont auto (valeur par défaut) et stretch. Lorsqu'elle est définie sur stretch, la colonne prend toute la largeur restante après l'affichage des colonnes à largeur automatique. Si plusieurs colonnes sont définies sur stretch, elles divisent uniformément la largeur restante. Chaîne Non
channelExtensions Propriétés d'extension propres au canal associées au message JSONObject Non

Formulaire

Représente un tableau de champs avec un titre. Utilisé dans les messages Table-Form pour les formes imbriquées d'une ligne de table.
Nom Description Type Requis ?
id ID du formulaire Chaîne Non
title Le titre du formulaire Chaîne Non
fields Tableau de champs Tableau <Champ> Oui
actions Tableau d'actions Tableau <BotsAction> Non
formRows Liste de lignes pouvant inclure des champs modifiables et en lecture seule. Vous pouvez définir la liste des champs (à l'aide des propriétés fields et éventuellement formColumns) ou une liste de lignes à l'aide de cette propriété. fields et formRows sont mutuellement exlusifs. Action Non
channelExtensions Propriétés d'extension propres au canal associées au message JSONObject Non

Ligne

Représente un tableau de champs.
Nom Description Type Requis ?
fields Tableau de champs <Champ> Oui
selectAction Action exécutée lorsque la ligne est sélectionnée. Le libellé de l'action s'affiche sous forme d'info-bulle lorsque les utilisateurs survolent la ligne. Action Non
channelExtensions Propriétés d'extension propres au canal associées au message JSONObject Non

En-tête

Représente un en-tête pour les tables dans un objet Table ou Table-Form.
Nom Description Type Requis ?
label Libellé d'en-tête Chaîne Oui
alignment Positionnement de l'étiquette dans la cellule "left", "right", "center" Oui
width Pourcentage suggéré de la largeur du tableau qui doit être fourni à l'en-tête.   Non
channelExtensions Propriétés d'extension propres au canal associées au message JSONObject Non

Champ

Représente les informations atomiques d'une cellule de tableau ou d'un champ de formulaire dans les objets Table, Form et Table-Form, fournis en tant que paire clé-valeur.
Nom Description Type Requis ?
displayType Type du champ Chaîne Oui
label Clé de champ Chaîne Oui
marginTop Espace vertical entre ce champ et le champ précédent dans la même colonne "none", "medium","large" Non
labelFontSize Taille de police utilisée pour le libellé du champ "small", "medium", "large" Non
labelFontWeight Positionnement de l'étiquette dans sa cellule "light", "medium", "bold" Non
channelExtensions Propriétés d'extension propres au canal associées au message JSONObject Non

selectFieldOption

Les champs Sélection unique et Sélection multiple utilisent une liste d'options de champ de sélection avec les propriétés suivantes :
Nom Description Type Requis ?
label Texte d'affichage chaîne Oui
value Valeur de l'option Types de données primitifs (chaîne, nombre, booléen, etc.) Non
channelExtensions Propriétés d'extension propres au canal associées à l'option de champ. JSONObject Non

Champ Lecture seule

Représente un champ en lecture seule. Tous les champs en lecture seule héritent des propriétés de champ et possèdent les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
value Valeur du champ chaîne Oui
width Pourcentage suggéré de la largeur totale disponible que le champ doit occuper dans une présentation de tableau. nombre Non
alignment Alignement de la valeur dans une colonne de tableau. L'alignement par défaut est right. "left", "center" et "right" Non
onHoverPopupContent Contenu qui s'affiche lorsque les utilisateurs survolent un champ. Charge utile de message Non

Champ Texte

Le champ de texte hérite de toutes les propriétés de champ en lecture seule.
Nom Description Type Requis ?
displayType Type d'élément. text (valeur de chaîne) Oui
truncateAt Position à laquelle le texte long est tronqué et où un point de suspension (qui indique que la valeur a été tronquée) s'affiche. Nombre Non
fontSize Taille de police utilisée pour la valeur du champ "small", "medium", "large" Non
fontWeight Poids de police utilisé pour la valeur du champ "light", "medium", "bold" Non
.

Champ de lien

Le champ de lien hérite de toutes les propriétés de champ en lecture seule et possède les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
displayType Type du champ "link" Oui
linkLabel Libellé utilisé pour le lien hypertexte chaîne Non
imageUrl URL de l'image qui ouvre un lien lorsqu'un utilisateur clique dessus. chaîne Non

Champ multimédia

Le champ de média hérite de toutes les propriétés de champ en lecture seule et possède les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
displayType Type du champ "support" Oui
mediaType Type de support du champ "video", "audio", "image" Oui

Champ Action

Le champ d'action hérite de toutes les propriétés de champ en lecture seule et possède les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
displayType Type du champ "action" Oui
action Action à effectuer lorsque l'utilisateur clique sur le bouton d'action. Action Oui

Champ modifiable

Représente un champ modifiable. Tous les champs modifiables héritent des propriétés de champ et possèdent les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
id ID de champ chaîne Oui
placeholder Description de l'entrée attendue de l'utilisateur. Ce texte s'affiche lorsque l'utilisateur n'a pas encore effectué de sélection ou saisi de valeur. chaîne Non
required Indique si cette entrée est requise pour soumettre le formulaire boolean Non
clientErrorMessage Message d'erreur de niveau champ affiché sous le champ lorsqu'une erreur de validation côté client se produit. S'il n'est pas indiqué, le kit SDK prend par défaut la valeur editFieldErrorMessage. chaîne Non
serverErrorMessage Message d'erreur de niveau champ affiché sous le champ lorsqu'une erreur de validation côté serveur se produit. Ce message d'erreur doit être inclus dans la charge utile envoyée par la brique. chaîne Non
autoSubmit Lorsque cette option est définie sur true, le formulaire est soumis automatiquement lorsque l'utilisateur a saisi une valeur pour le champ.   Non

Sélection unique

Le champ à sélection unique hérite de toutes les propriétés du champ modifiable et possède les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
displayType Type du champ "singleSelect" Oui
defaultValue Option par défaut Types de données primitifs (chaîne, nombre, booléen, etc.) Non
options Tableau d'options présenté à l'utilisateur. Tableau selectFieldOption Oui
layoutStyle Style de disposition utilisé pour afficher les options de sélection unique. La présentation par défaut est list. "list", "radioGroup" Non
layoutDirection Sens de mise en page (horizontal ou vertical) des boutons radio lorsque layoutStyle est défini sur radioGroup. Par défaut, la direction de mise en page est définie sur vertical,, mais vous pouvez la définir sur horizontal. Chaîne Non

Sélection multiple

Le champ à sélection multiple hérite de toutes les propriétés du champ modifiable et possède les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
displayType Type du champ "multiSelect" Oui
defaultValue Option par défaut Un tableau<object> de type primitif (chaîne, nombre, booléen, etc.) Non
options Tableau d'options présentées à l'utilisateur Tableau selectFieldOption Oui
layoutStyle Style de mise en page utilisé pour afficher les options. "list", "checkboxes" Non
layoutDirection Sens de mise en page (horizontal ou vertical) des cases à cocher lorsque layoutStyle est défini sur checkboxes. Par défaut, la direction de mise en page est définie sur vertical, mais vous pouvez également la définir sur horizontal. Chaîne Non

DatePicker

Le champ de sélecteur de date hérite des propriétés Champ modifiable et possède les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
displayType Type du champ "datePicker" Oui
defaultValue Valeur initiale de ce champ. Le format doit être YYYY-MM-DD. chaîne Non
minDate Date minimale, ou la plus ancienne, autorisée. Le format doit être YYYY-MM-DD. chaîne Non
maxDate Date maximum, ou dernière, autorisée. Le format doit être YYYY-MM-DD. chaîne Non

TimePicker

Le champ de sélecteur de temps hérite des propriétés Champ modifiable et possède les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
displayType Type du champ "timePicker" Oui
defaultValue Valeur initiale de ce champ, saisie en tant que HH:mm au format 24 heures. chaîne Non
minTime Heure minimale, ou la plus ancienne, autorisée, saisie en tant que HH:mm au format 24 heures. Exemple : 00:00. chaîne Non
maxTime Heure maximale, ou dernière, autorisée, saisie en tant que HH:mm, au format 24 heures. Par exemple : 13:00. chaîne Non

Activer/désactiver

Le champ à bascule hérite de toutes les propriétés du champ modifiable et possède les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
displayType Type du champ "toggle" Oui
defaultValue Valeur sélectionnée initiale. Si vous souhaitez que le basculement soit activé initialement, définissez la valeur par défaut sur la même valeur que valueOn. chaîne Non
valueOff Valeur lorsque la bascule est désactivée chaîne Oui
valueOn Valeur lors de l'activation/désactivation chaîne Oui
labelOff Libellé de la valeur "off" chaîne Non
labelOn Libellé de la valeur "on" chaîne Non

TextInput

Le champ de saisie de texte hérite des propriétés Champ modifiable et possède les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
displayType Type du champ "textInput" Oui
defaultValue Valeur initiale de ce champ chaîne non
validationRegularExpression Expression régulière indiquant le format requis pour cette entrée de texte chaîne non
multiline Indicateur déterminant si plusieurs lignes d'entrée doivent être affichées boolean non
minLength Longueur minimale d'entrée que l'utilisateur doit fournir Nombre entier non
maxLength Nombre maximum de caractères autorisés dans le champ de saisie de texte Nombre entier non
inputStyle Style d'entrée utilisé par le client. Les valeurs autorisées sont : "text", "tel", "url","email", et "password". chaîne non

NumberInput

Le champ d'entrée numérique hérite des propriétés Champ modifiable et possède les propriétés supplémentaires suivantes :
Nom Description Type Requis ?
displayType Type du champ "numberInput" Oui
defaultValue Valeur initiale de ce champ Entier Non
minValue Plus petit nombre autorisé Entier Non
maxValue Le plus grand nombre autorisé. Entier Non

EventContextProperties

Les propriétés de contexte d'événement représentent les propriétés de contexte CloudEvent.
Nom Description Type Requis ? Exemple
dataschema Identifie le schéma auquel les données adhèrent. URI Non "/dw/approval_payload.json"
datacontenttype Type de contenu des données dans l'attribut de données. Chaîne Non "application/json"
source Ressource ayant généré l'événement. URI Non "objectstorage"
time Heure de l'événement exprimée au format d'horodatage RFC 3339. Horodatage Non "2021-01-10T21:19:24Z"
specversion Version de la spécification CloudEvents. Chaîne Non "1.0"
id ID de la spécification CloudEvents. Chaîne Non "123e4567-e89b-12d3-a456-426614174000"
subject Objet de l'événement dans le contexte du producteur et/ou du type d'événement. Chaîne Non "mynewfile.jpg"

Message de conversation

Tous les messages faisant partie d'une conversation ont la structure suivante :
Nom Description Type Requis ?
messagePayload Charge utile du message Message Oui
userId ID utilisateur chaîne Oui
Par exemple :
{
    "messagePayload": {
        "text": "show menu",
        "type": "text"
    },
    "userId": "guest"
}

Message

Le message est un type de base abstrait pour tous les autres messages. Tous les messages l'étendent afin de fournir des informations supplémentaires.
Nom Description Type Requis ?
type Type de message chaîne Oui

Message de l'utilisateur

Représente un message envoyé par l'utilisateur à la brique.

Message texte de l'utilisateur

Message texte simple envoyé au serveur.
Nom Description Type Requis ?
type Type de message "text" Oui
text Texte du message chaîne Oui
Par exemple :
{
    "messagePayload": {
        "text": "Order Pizza",
        "type": "text"
    },
    "userId": "guest"
}

Message de postback de l'utilisateur

Message de réponse de postback envoyé au serveur.
Nom Description Type Requis ?
type Type de message "postback" Oui
text Texte de postback chaîne Non
postback Postback de l'action sélectionnée Chaîne ou JSONObject Oui
Par exemple :
{
    "messagePayload": {
        "postback": {
            "variables": {
                "pizza": "Small"
            },
            "system.botId": "69BBBBB-35BB-4BB-82BB-BBBB88B21",
            "system.state": "orderPizza"
        },
        "text": "Small",
        "type": "postback"
    },
    "userId": "guest"
}

Message inboundEvent de l'utilisateur

Représente les messages d'événement sortants pouvant être envoyés au serveur. Il applique les propriétés suivantes au fichier Message.
Nom Description Type Requis ?
type Type de message "inboundEvent" Oui
eventType Le type d'événement (défini dans le catalogue d'événements) Chaîne Oui
eventVersion Version du type d'événement (définie dans le catalogue d'événements) Chaîne Oui
eventData Les données d'activité JSONObject Oui
contextProperties Propriétés de contexte d'événement Propriétés de contexte d'événement Non
Par exemple :
{
    "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"
}

Message de soumission de formulaire utilisateur

Représente le message de soumission de formulaire envoyé après que l'utilisateur a soumis un formulaire par un SubmitFormAction. Il possède les propriétés suivantes :
Nom Description Type Requis ?
type Type de message. "formSubmission" Oui
submittedFields Paires clé-valeur des valeurs de champ soumises. La clé est le nom (ID) du champ. JSONObject Oui
postback Charge utile de postback, qui peut inclure une propriété d'action pour déclencher la navigation. La valeur de cette propriété doit être extraite du fichier SubmitFormAction. JSONObject Non
partialSubmitField Code du champ qui déclenche une soumission partielle de formulaire. Les champs dont la propriété autoSumbit est définie sur true peuvent déclencher une soumission partielle de formulaire. Chaîne Non
Exemple 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"
}

Message de pièce jointe de l'utilisateur

Message de réponse de pièce jointe envoyé au serveur.
Nom Description Type Requis ?
type Type de message "attachment" Oui
attachment Métadonnées de pièce jointe Document joint Oui
Par exemple :
{
    "messagePayload": {
        "attachment": {
            "type": "image",
            "url": "http://oda-instance.com/attachment/v1/attachments/d43fd051-02cf-4c62-a422-313979eb9d55"
        },
        "type": "attachment"
    },
    "userId": "guest"
}

Message de localisation de l'utilisateur

Message de réponse de localisation envoyé au serveur.
Nom Description Type Requis ?
type Type de message "location" Oui
location Informations sur la localisation de l'utilisateur Localisation Oui
Par exemple :
{
    "messagePayload": {
        "location": {
            "latitude": 45.9285271,
            "longitude": 132.6101925
        },
        "type": "location"
    },
    "userId": "guest"
}

Message de brique

Représente le message envoyé à l'utilisateur à partir de la brique.

Nom Description Type Requis ?
type Type de message chaîne Oui
headerText Texte d'en-tête affiché au-dessus du texte du message. chaîne Non
footerText Texte du pied de page affiché sous le texte du message et les actions, mais avant les actions globales. chaîne Non
actions Liste des actions associées au message Array<Action> Non
footerForm Présentation de formulaire qui s'affiche sous le texte de pied de page du message et au-dessus de ses actions globales. Message de formulaire de compétence Non
globalActions Liste des actions globales liées au texte Tableau<Action> Non
channelExtensions Propriétés d'extension propres au canal associées au message JSONObject Non

Message texte du bot

Représente un message texte. Il applique les propriétés suivantes au Message de compétence.
Nom Description Type Requis ?
type Type de message "text" Oui
text Texte du message chaîne Oui
Par exemple :
{
    "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"
}

Message de lieu de compétence

Représente un message de localisation. Il applique les propriétés suivantes au Message de compétence.
Nom Description Type Requis ?
type Type de message "location" Oui
location Localisation Localisation Oui

Message de pièce jointe de compétence

Représente un message de pièce jointe. Il applique les propriétés suivantes au Message de compétence.
Nom Description Type Requis ?
type Type de message "attachment" Oui
attachment Pièce jointe envoyée Document joint Oui
Remarque

Les téléchargements de fichier à partir du site hôte risquent d'échouer et de générer une erreur de console semblable à ce qui suit :
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
En effet, les paramètres CORS (Cross-Origin Resource Sharing) du site hôte, qui bloquent toutes les demandes HTTP inter-origine, peuvent également bloquer les demandes de téléchargement à partir de l'instance client vers le serveur de pièce jointe Oracle Digital Assistant. Si vous rencontrez ce problème, mettez à jour la stratégie de sécurité du site hôte pour autoriser le domaine de l'instance Digital Assistant. La conversation utilisant des connexions WebSocket, CORS n'a pas d'impact sur elle.

Transmission de noms de fichier

Utilisez les en-têtes suivants pour extraire le nom d'un fichier (y compris d'un fichier vidéo, audio ou image) téléchargé vers le serveur de fichiers ODA :
  • x-oda-meta-file-name
  • x-oda-meta-file-type
Vous pouvez renvoyer ces en-têtes avec des demandes GET ou HEAD. Utilisez HEAD si un composant personnalisé n'a pas besoin du contenu du fichier.

Messages de retour

Il s'agit d'un composant d'évaluation du retour, qui prend le retour d'un utilisateur à l'aide d'une jauge d'évaluation (généralement un système d'évaluation par étoiles). Sa charge utile est similaire à un message text, mais elle comporte un champ d'objet channelExtensions supplémentaire défini sur { "displayType": "stars" }. Il applique les propriétés suivantes au Message de compétence.
Nom Description Type Requis ?
type Type de message "text" Oui
text Texte du message chaîne Oui
channelExtensions Objet décrivant les extensions de la charge utile. { “displayType”: “stars” } Oui
Par exemple :
{
    "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>"
}

Message de fiche d'aptitude

Représente un ensemble de choix affiché pour l'utilisateur, soit horizontalement sous forme de carrousel, soit verticalement sous forme de liste. Il applique les propriétés suivantes au Message de compétence.
Nom Description Type Requis ?
type Type de message "card" Oui
layout Indique si les messages doivent être affichés horizontalement ou verticalement. chaîne (valeurs : horizontal, vertical) Oui
cards Tableau des cartes à afficher. tableau Oui

Carte

Représente une carte unique dans la charge utile du message.
Nom Description Type Requis ?
title Titre de la carte, affiché en tant que première ligne sur la carte. chaîne Oui
description Description de la carte chaîne Non
imageUrl URL de l'image affichée. chaîne Non
url URL du site Web ouvert en appuyant dessus. chaîne Non
actions Tableau d'actions associées au texte tableau Non
Voici un exemple :
{
    "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"
}

Message de postback de compétence

Représente un postback. Il applique les propriétés suivantes au Message de compétence.
Nom Description Type Requis ?
type Type de message "postback" Oui
text Texte du message chaîne Non
postback Postback Chaîne ou JSONObject Oui

Message de formulaire de compétence

Représente un message qui renvoie les résultats d'une requête dans un formulaire en lecture seule. Le message se compose d'un tableau de résultats de formulaire. Chaque résultat de formulaire contient un tableau fields avec des paires clé-valeur représentant un champ. Il applique les propriétés suivantes au Message de compétence.
Remarque

Ce type de message est utilisé pour les boîtes de dialogue SQL.
Nom Description Type Requis ?
type Type de message "form" Oui
forms Tableau de résultats de formulaire. Chaque résultat contient un tableau fields qui représente les champs de formulaire. Tableau<Ligne> Oui
formColumns Nombre de colonnes dans lesquelles les champs du formulaire doivent être regroupés. 1 2 Oui
paginationInfo Informations de pagination pour les résultats dans le formulaire PaginationInfo Non
{
    "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"
        }
    ]
}

Message de la table des aptitudes

Représente un message qui renvoie les résultats d'une requête sous forme de tableau Le message se compose d'un tableau d'en-têtes et d'un tableau de lignes. Les lignes elles-mêmes contiennent un tableau fields qui représente des cellules individuelles. Il applique les propriétés suivantes au Message de compétence.
Remarque

Ce type de message est utilisé pour les boîtes de dialogue SQL.
Nom Description Type Requis ?
type Type de message "table" Oui
headings Tableau d'en-têtes de table Tableau<En-tête> Oui
tableTitle Titre de la table chaîne Non
rows Tableau de lignes de table. Chaque ligne contient un tableau fields qui représente les cellules du tableau. Tableau<Ligne> Oui
paginationInfo Informations de pagination pour les résultats dans la table PaginationInfo Non
{
    "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"
    }
}

Tableau des compétences - Message de formulaire

Ce message combine les types de message Table et Form. Il représente un message qui renvoie les résultats d'une requête sous la forme d'une table. Chaque ligne de la table possède un formulaire en lecture seule en plus des informations de ligne. Il applique les propriétés suivantes au Message de compétence.
Remarque

Ce type de message est utilisé pour les boîtes de dialogue SQL.
Nom Description Type Requis ?
type Type de message "tableForm" Oui
tableTitle Titre de la table chaîne Non
headings Tableau d'en-têtes de table Tableau<En-tête> Oui
rows Tableau de lignes de table. Chaque ligne contient un tableau de champs représentant les cellules du tableau. Tableau<Ligne> Oui
forms Tableau de résultats de formulaire correspondant à chaque ligne du tableau. Chaque formulaire contient un tableau fields qui représente les champs du formulaire. Tableau<Formulaire> Oui
formColumns Nombre de colonnes dans lesquelles les champs du formulaire doivent être regroupés. 1 2 Oui
paginationInfo Tableau d'actions globales associées au texte Tableau<Action> Non
{
    "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"
}

Message d'événement sortant de compétence

Représente les messages d'événement sortants qui peuvent être envoyés par le serveur. Il applique les propriétés suivantes au fichier Message.
Nom Description Type Requis ?
type Type de message "outboundEvent" Oui
eventType Le type d'événement (défini dans le catalogue d'événements) Chaîne Oui
eventVersion Version du type d'événement (définie dans le catalogue d'événements) Chaîne Oui
eventData Les données d'activité JSONObject Oui
contextProperties Propriétés de contexte d'événement Propriétés de contexte d'événement Non
Par exemple :
{
    "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"
        }
    }
}

Message de formulaire de modification d'aptitude

Représente un message de formulaire modifiable (formulaire d'entrée). Le message se compose d'un tableau Field.
Nom Description Type Requis ?
type Type de message. Dans ce cas, il s'agit de "editForm". "editForm" Oui
title Titre représentatif du formulaire de modification Chaîne Non
fields Liste de champs pouvant inclure à la fois des champs modifiables et en lecture seule. Tableau<Champ> Oui
formColumns Nombre de colonnes dans lesquelles les champs de formulaire doivent être regroupés. La propriété est applicable uniquement lorsque vous définissez également la propriété field. Entier Non
formRows Liste de lignes pouvant inclure des champs modifiables et en lecture seule. Vous devez définir la propriété fields et formRows est requis. Ces deux options s'excluent mutuellement. Tableau<FormRow>  
errorMessage Message d'erreur de niveau formulaire qui s'affiche lorsque l'utilisateur a soumis des données non valides mais que l'erreur ne peut pas être liée à un champ individuel. Chaîne Non
actions Tableau d'actions liées au formulaire de modification. Ce tableau inclut un fichier SubmitFormAction. Une erreur s'affiche dans la console du navigateur lorsque SubmitFormAction n'est pas inclus dans le tableau actions. Tableau<Action> Non
globalActions Tableau d'actions globales Tableau<Action> Non
channelExtensions Ensemble de propriétés d'extension propres au canal

L'objet channelExtensions peut inclure une propriété replaceMessage utilisée pour remplacer un formulaire d'entrée précédent.

JSONObject Non
{
    "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"
}

Message brut d'aptitude

Utilisé lorsqu'un composant crée la charge utile propre au canal lui-même.
Nom Description Type Requis ?
type Type de message "raw" Oui
payload Charge utile propre au canal Objet JSON Oui