Modèle de message
La trousse SDK utilise un modèle de message de type cohérent pour tout le trafic. Comprendre les types d'enveloppe et de données utiles est important pour les intégrations sans tête, les délégués, le rendu personnalisé et les tests. Tous les éléments de conversation sont des messages avec une enveloppe standard :
{
  "messagePayload": { /* see types below */ },
  "userId": "guest"
}
 détermine la forme de charge utile du béton.- messagePayload.type
- Les messages d'utilisateur sont lancés par le client; les messages de réponse proviennent de la compétence ou de l'agent.
Types de base
Il s'agit des types de base utilisés dans tous les messages envoyés de l'utilisateur à la compétence, et inversement. Ils constituent la base de tous les messages.
                     
- Action : Les variantes incluent call,client,location,popup,postback,share,submitForm,url
- Pièce jointe : audio,file, image,video
- Carte : titre : description, imageUrl,actions
- Emplacement : latitude,longitude,optional title/url
- Voix : text,longText,soundUrl
- Champ : en lecture seule (link,text,media,action) et modifiable (textInput,numberInput,datePicker,timePicker,singleSelect,multiSelect,toggle)
- SelectFieldOption:- label,- value
- TableHeading
- TableRow
- Form
- FormRow
- FormColumn
- PaginationInfo
- EventContextProperties
Types de données utiles de message d'utilisateur
- Texte{ "type": "text", "text": "Order Pizza" }
- Fichier joint
- { "type": "attachment", "attachment": { "type": "image", "URL": "https://..." } }
- Emplacement{ "type": "location", "location": { "latitude": 45.9, "longitude": 132.6 } }
- Reporter{ "type": "postback", "text": "Small", "postback": { "variables": { "pizza": "Small" }, "system.botId": "....", "system.state": "orderPizza" } }
- Événement entrant{ "type": "inboundEvent", "eventType": "com.pizzastore.pizza.orderserved", "eventVersion": "1.0", "eventData": { "size": "Medium", "type": "Cheese" }, "contextProperties": { "id": "6ce23f...", "source": "pizza/service" } }
- Soumission de formulaire{ "type": "formSubmission", "submittedFields": { "Subject": "Expense", "Amount": 6 }, "partialSubmitField": "Attendees", "postback": { "system.state": "editFormMapVar" } }
Messages de réponse
Les données utiles de réponse de l'aptitude/agent sont les suivantes :
                     
- Texte{ "type": "text", "text": "What do you want to do?" }
- Fichier joint{ "type": "attachment", "attachment": { "type": "file", "url": "https://..." } }
- Carte{ "type": "card", "layout": "horizontal", "cards": [{ "title": "Hawaiian Pizza", "actions": [/*...*/] }] }
- Commande{ "type": "command", "command": "someCommand", "properties": { "k": "v" } }
- Erreur{ "type": "error", "errorMessage": "Details...", "error": "..." }
- Exécuter la commande de contexte d'application{ "type": "executeApplicationActionCommand", "actionType": "navigate", "command": "executeApplicationAction", "context": "appName", "properties": { "route": "/home" } }
- Rétroaction (étoiles){ "type": "text", "text": "How would you like to rate us?", "channelExtensions": { "displayType": "stars" }, "actions": [/* star postbacks */] }
- Emplacement{ "type": "location", "location": { "latitude": 37.53, "longitude": -122.26 } }
- Événement sortant{ "type": "outboundEvent", "eventType": "com.pizzastore.pizza.ordercreated", "eventVersion": "1.0", "eventData": { "size": "Medium" } }
- Brut{ "type": "raw", "payload": { /* channel specific */ } }
- Session fermée{ "type": "sessionClosed" }
- Flux de texte{ "type": "texStream", "streamId": "123", "streamState": "running", "text": "partial chunk", "aggregateText": "accumulated text so far" }
- Edit‑Form prend en charge replaceMessageau moyen dechannelExtensions.
Action
Une action représente un élément que l'utilisateur peut sélectionner.
                     
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type d'action | chaîne | Oui | 
| label | Texte de l'étiquette descriptive de l'action. | chaîne | Au moins un élément labelouimageUrldoit être inclus. | 
| imageUrl | Image de l'action | chaîne | Au moins une propriété labelouimageUrlunique 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 | 
CallAction
Demande au client d'appeler un numéro de téléphone spécifié pour le compte de l'utilisateur.
                        
Par exemple :
| Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type d'action | "call" | Oui | 
| phoneNumber | Numéro de téléphone à appeler | chaîne | Oui | 
{
    "type": "call",
    "label": "Call Support",
    "imageUrl": "http://example.com.ar/files/2016/05/cuidado.jpg",
    "phoneNumber": "18005555555"
}LocationAction
Demande au client de demander l'emplacement de l'utilisateur.
                        
Par exemple :
| Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type d'action | "location" | Oui | 
{
    "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 après que les utilisateurs ont effectué une action de clic sur un élément. 
PopupAction utilise les propriétés Action avec les siennes :
                        | Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type d'action | "popup" | Oui | 
| popupContent | Contenu qui s'affiche dans la fenêtre contextuelle. | Données utiles du message (voir 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,
    }
}PostbackAction
Envoie une republication prédéfinie à la compétence lorsque l'utilisateur sélectionne une action.
                
                        
Par exemple :
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type d'action | "postback" | Oui | 
| postback | Republication retournée lorsque l'utilisateur sélectionne une action. | Chaîne ou objet JSON | Oui | 
{
    "type": "postback",
    "label": "Large Pizza",
    "imageUrl": "https://example.com/images/gallery/locations/11.jpg",
    "postback": {
        "state": "askSize",
        "action": "getCrust"
    }
}ShareAction
Demande au client d'ouvrir une boîte de dialogue de partage pour l'utilisateur.
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type d'action | "share" | Oui | 
SubmitFormAction
Cette action est utilisée pour soumettre un formulaire d'entrée à la compétence lorsqu'elle satisfait à la validation côté client. Il ajoute les propriétés suivantes aux propriétés d'action :
                        
Exemple de JSON
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type d'action | "submitForm" | Oui | 
| postback | Données utiles de republication, qui peuvent inclure une action pour déclencher la navigation. La valeur de cette propriété doit être définie dans FormSubmissionMessagePayload. | JSONObject | Non | 
{
    "type": "submitForm",
    "label": "Submit",
    "postback": {
        "system.botId": "6803DE12-DAA9-4182-BD54-3B4D431554F4",
        "system.flow": "ExpenseFlow",
        "system.state": "editFormMapVar"
    }
}Fichier joint
Représente un fichier joint envoyé par l'utilisateur.
                     
Par exemple :
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| title | Titre du fichier joint | chaîne | Non | 
| type | Type de fichier joint | chaîne (valeurs valides : audio, file, image, video) | Oui | 
| url | URL de téléchargement du fichier joint | chaîne | Oui | 
{
    "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 dans les données utiles du message. 
                     
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| title | Titre de la carte, affiché sur la première ligne de celle-ci. | 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 par toucher. | chaîne | Non | 
| actions | Tableau d'actions liées au texte | tableau | Non | 
| channelExtensions | Propriétés d'extension propres au canal associées au message | JSONObject | Non | 
Emplacement
Représente un objet d'emplacement.
                     
Par exemple :
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| title | Titre de l'emplacement | chaîne | Non | 
| url | URL permettant d'afficher l'emplacement 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 | 
{
    "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
}Voix
Représente une information vocale dans un message
                     
.
                  
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| text | Texte sommaire pour TTS | chaîne | Au moins une des propriétés doit être transmise | 
| longText | Texte détaillé pour TTS | chaîne | Au moins une des propriétés doit être transmise | 
| soundUrl | URL d'un fichier audio à lire | chaîne | Au moins une des propriétés doit être transmise | 
Champ
Représente les informations atomiques d'une cellule de table ou d'un champ de formulaire dans les objets 
Table, Form et Table-Form, fournis en tant que paire clé-valeur.
                     | Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | Chaîne | Oui | 
| label | La clé du champ | Chaîne | Oui | 
| marginTop | Quantité d'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 l'étiquette de 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 | 
PaginationInfo
Représente les informations de pagination pour les résultats dans les objets Table, Form et Table-Form.
                  
| Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| totalCount | Nombre total de résultats | nombre | Oui | 
| rangeSize | Taille de l'intervalle des résultats par page | nombre | Oui | 
| status | Message de statut de pagination | Chaîne | Oui | 
| currentRangeSize | Taille de l'intervalle de résultats courant | nombre | Oui | 
| rangeStart | Décalage de début de l'intervalle de résultats courant | nombre | Oui | 
| nextRangeSize | Taille de l'intervalle de résultats suivant | nombre | Oui | 
| hasPrevious | Indique s'il existe un jeu de résultats précédent | booléen | Oui | 
| hasNext | Indique s'il existe un jeu de résultats suivant | booléen | Oui | 
Champ en 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 :
                     
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| value | Valeur du champ | chaîne | Oui | 
| width | Pourcentage suggéré de la largeur totale disponible que le champ doit occuper dans une disposition de tableau. | nombre | Non | 
| alignment | Alignement de la valeur dans une colonne de table. L'alignement par défaut est right. | "left","center"et"right" | Non | 
| onHoverPopupContent | Contenu qui s'affiche lorsque les utilisateurs positionnent le pointeur de la souris sur un champ. | Données utiles du message | Non | 
Champ de texte
Le champ de texte hérite de toutes les propriétés de champ en lecture seule. 
                        
.
                     
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| displayType | Type d'élément. | text(valeur de chaîne) | Oui | 
| truncateAt | Position à laquelle le texte long est tronqué et où une marque de points de suspension (qui indique que la valeur a été tronquée) s'affiche. | Numéro | 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 :
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | "link" | Oui | 
| linkLabel | Étiquette utilisée pour le lien hypertexte | chaîne | Non | 
| imageUrl | URL de l'image qui ouvre un lien lorsque l'utilisateur clique dessus. | chaîne | Non | 
Champ de mé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 :
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | "média" | Oui | 
| mediaType | Type de média du champ | "video","audio","image" | Oui | 
Champ d'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 | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | "action" | Oui | 
| action | Action qui doit être effectuée 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 | Obligatoire? | 
|---|---|---|---|
| id | ID 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 entré de valeur. | chaîne | Non | 
| required | Indique si cette entrée est requise pour soumettre le formulaire | booléen | Non | 
| clientErrorMessage | Message d'erreur au niveau du champ affiché sous le champ lorsqu'une erreur de validation côté client se produit. Si elle n'est pas fournie, la trousse SDK prend par défaut la valeur editFieldErrorMessage. | chaîne | Non | 
| serverErrorMessage | Message d'erreur au niveau du champ affiché sous le champ lorsqu'une erreur de validation côté serveur se produit. Ce message d'erreur doit être inclus dans les données utiles envoyées par la compétence. | chaîne | Non | 
| autoSubmit | Lorsque cette option est réglée à true, le formulaire est soumis automatiquement lorsque l'utilisateur a entré 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 :
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | "singleSelect" | Oui | 
| defaultValue | La sélection par défaut | Types de données primitifs (chaîne, nombre, booléen, etc.) | Non | 
| options | Tableau d'options présenté à l'utilisateur. | Un tableau selectFieldOption | Oui | 
| layoutStyle | Style de disposition utilisé pour afficher les options de sélection unique. La disposition par défaut est list. | "list","radioGroup" | Non | 
| layoutDirection | Direction de disposition (horizontale ou verticale) des boutons radio lorsque  layoutStyleest réglé àradioGroup. Par défaut, la direction de disposition est réglée àvertical,, mais vous pouvez la régler à 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 | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | "multiSelect" | Oui | 
| defaultValue | La sélection par défaut | Tableau<object> de types de données primitifs (chaîne, nombre, booléen, etc.) | Non | 
| options | Tableau d'options présenté à l'utilisateur | Un tableau  selectFieldOption | Oui | 
| layoutStyle | Style de disposition utilisé pour afficher les options. | "list","checkboxes" | Non | 
| layoutDirection | Direction de disposition (horizontale ou verticale) des cases à cocher lorsque  layoutStyleest réglé àcheckboxes. Par défaut, la direction de disposition est réglée à vertical, mais vous pouvez également la définir à horizontal. | Chaîne | Non | 
DatePicker
Le champ du sélecteur de date hérite des propriétés du champ modifiable et possède les propriétés supplémentaires suivantes :
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | "datePicker" | Oui | 
| defaultValue | Valeur initiale de ce champ. Le format doit être AAAA-MM-JJ. | chaîne | Non | 
| minDate | Date minimale ou au plus tôt autorisée. Le format doit être AAAA-MM-JJ. | chaîne | Non | 
| maxDate | Date maximale ou au plus tard autorisée. Le format doit être AAAA-MM-JJ. | chaîne | Non | 
TimePicker
Le champ de sélecteur d'heure hérite des propriétés du champ modifiable et possède les propriétés supplémentaires suivantes :
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | "timePicker" | Oui | 
| defaultValue | Valeur initiale de ce champ, entrée en tant que HH:mm au format 24 heures. | chaîne | Non | 
| minTime | Heure minimale ou au plus tôt autorisée, entrée en tant que HH:mm au format 24 heures. Par exemple, 00 :00. | chaîne | Non | 
| maxTime | Heure maximale ou la plus récente autorisée, entrée 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 :
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | "toggle" | Oui | 
| defaultValue | Valeur initiale sélectionnée. Si vous voulez que l'activation/désactivation soit activée initialement, réglez la valeur par défaut à la même valeur que valueOn. | chaîne | Non | 
| valueOff | Valeur lorsque le basculement est désactivé | chaîne | Oui | 
| valueOn | Valeur lorsque le basculement est activé | chaîne | Oui | 
| labelOff | Étiquette de la valeur "Off" | chaîne | Non | 
| labelOn | Étiquette de la valeur "on" | chaîne | Non | 
TextInput
Le champ d'entrée de texte hérite des propriétés du champ modifiable et possède les propriétés supplémentaires suivantes :
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | "textInput" | Oui | 
| defaultValue | La valeur initiale de ce champ | chaîne | non | 
| validationRegularExpression | Expression rationnelle indiquant le format requis pour cette entrée de texte | chaîne | non | 
| multiline | Indicateur qui détermine s'il faut afficher plusieurs lignes d'entrée | booléen | non | 
| minLength | Longueur minimale d'entrée que l'utilisateur doit fournir | entier | non | 
| maxLength | Nombre maximal de caractères autorisés dans le champ d'entrée de texte | entier | non | 
| inputStyle | Style d'entrée utilisé par le client. Les valeurs autorisées sont : "text","tel","url","email",et"password". Retourne àtextsi le style d'entrée n'a pas été défini. | chaîne | non | 
NumberInput
Le champ d'entrée numérique hérite des propriétés du champ modifiable et possède les propriétés supplémentaires suivantes :
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| displayType | Type de champ | "numberInput" | Oui | 
| defaultValue | La valeur initiale de ce champ | Entier | Non | 
| minValue | Un plus petit nombre autorisé | Entier | Non | 
| maxValue | Le plus grand nombre autorisé. | Entier | Non | 
selectFieldOption
Les champs Sélection unique et Sélection multiple utilisent une liste d'options de sélection de champ avec les propriétés suivantes :
                     
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| label | Le 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 | 
TableHeading
Représente un en-tête pour les tables d'un objet 
Table ou Table-Form.
                     | Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| label | L'étiquette 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 | 
TableRow
Représente un tableau de champs.
                     
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| fields | Un tableau de champs | <Champ> | Oui | 
| selectAction | Action exécutée lorsque l'enregistrement est sélectionné. L'étiquette de l'action s'affiche en tant qu'infobulle lorsque les utilisateurs pointent au-dessus de la rangée. | Action | 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 formulaires imbriqués d'une rangée de table.
                     | Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| id | ID du formulaire | Chaîne | Non | 
| title | Le titre du formulaire | Chaîne | Non | 
| fields | Un tableau de champs | Tableau <Champ> | Oui | 
| actions | Tableau d'actions | Tableau <BotsAction> | Non | 
| separator | Indique si un séparateur doit être affiché pour le formulaire ou non. Si cette valeur n'est pas transmise, un séparateur s'affiche pour le formulaire. | boolean | Non | 
| formRows | Liste des rangées pouvant inclure à la fois des champs modifiables et des champs en lecture seule. Vous pouvez définir la liste de champs (à l'aide de fieldset éventuellement des propriétésformColumns) ou une liste de rangées à l'aide de cette propriété.fieldsetformRowssont mutuellement exlusifs. | Action | Non | 
| channelExtensions | Propriétés d'extension propres au canal associées au message | JSONObject | Non | 
FormRow
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| id | ID de la rangée du formulaire | Chaîne | Non | 
| columns | Liste des colonnes affichées dans la rangée du formulaire. | Tableau <FormColumn> | Oui | 
| selectAction | Actions exécutées lorsque le formulaire a été sélectionné. Lorsque les utilisateurs positionnent le pointeur de la souris sur le formulaire, l'étiquette de l'action s'affiche sous forme d'infobulle (lorsqu'elle est prise en charge par le canal). | Action | Non | 
| separator | Le réglage de cette propriété à Vrai insère une ligne de séparation au-dessus du contenu dans la ligne du formulaire. | Boolean | Non | 
| channelExtensions | Propriétés d'extension propres au canal associées au message | JSONObject | Non | 
FormColumn
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| 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 ReadOnlyFieldlorsque la colonne est utilisée dans uneFormRowdans uneForm. Les champs peuvent être en lecture seule et modifiables lorsqueFormRowest utilisé dans unEditFormMessagePayload. | 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 rangée du formulaire. Les valeurs autorisées sont auto(valeur par défaut) etstretch. Lorsque cette option est réglée àstretch, la colonne prend toute la largeur restante après l'affichage des colonnes à largeur automatique. Si plusieurs colonnes sont réglées àstretch, elles divisent uniformément la largeur restante. | Chaîne | Non | 
| widthPct | Réussi lorsque la largeur est réglée à Fixe. Règle la propriété width de l'élément de colonne à la valeur de pourcentage transmise. | nombre | Non | 
| channelExtensions | Propriétés d'extension propres au canal associées au message | JSONObject | Non | 
EventContextProperties
Les propriétés de contexte d'événement représentent les propriétés de contexte 
CloudEvent.
                     | Le nom | Description | Type | Obligatoire? | 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 incluses dans l'attribut de données. | Chaîne | Non | "application/json" | 
| source | Ressource qui a produit l'événement. | URI | Non | "objectstorage" | 
| time | Heure de l'événement dans le format d'heure 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 d'événements ou du type d'événement. | Chaîne | Non | "mynewfile.jpg" | 
Message de conversation
Tous les messages d'une conversation ont la structure suivante :
                     
Par exemple :
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| messagePayload | Données utiles du message | Message | Oui | 
| userId | ID utilisateur | chaîne | Oui | 
{
    "messagePayload": {
        "text": "show menu",
        "type": "text"
    },
    "userId": "guest"
}Message d'utilisateur
Représente un message envoyé par l'utilisateur à la compétence.
Message texte d'utilisateur
Message texte simple envoyé au serveur.
                        
Par exemple :
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "text" | Oui | 
| text | Texte du message | chaîne | Oui | 
{
    "messagePayload": {
        "text": "Order Pizza",
        "type": "text"
    },
    "userId": "guest"
}Message joint d'utilisateur
Message de réponse avec fichier joint envoyé au serveur.
                        
Par exemple :
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "attachment" | Oui | 
| attachment | Métadonnées du fichier joint | Annexe | Oui | 
{
    "messagePayload": {
        "attachment": {
            "type": "image",
            "url": "http://oda-instance.com/attachment/v1/attachments/d43fd051-02cf-4c62-a422-313979eb9d55"
        },
        "type": "attachment"
    },
    "userId": "guest"
}Message de republication d'utilisateur
Message de réponse de republication envoyé au serveur.
                        
Par exemple :
| Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "postback" | Oui | 
| text | Texte de republication | chaîne | Non | 
| postback | Republication de l'action sélectionnée | Une chaîne ou JSONObject | Oui | 
{
    "messagePayload": {
        "postback": {
            "variables": {
                "pizza": "Small"
            },
            "system.botId": "69BBBBB-35BB-4BB-82BB-BBBB88B21",
            "system.state": "orderPizza"
        },
        "text": "Small",
        "type": "postback"
    },
    "userId": "guest"
}Message d'emplacement d'utilisateur
Message de réponse d'emplacement envoyé au serveur.
                        
Par exemple :
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "location" | Oui | 
| location | Informations sur l'emplacement de l'utilisateur | Emplacement | Oui | 
{
    "messagePayload": {
        "location": {
            "latitude": 45.9285271,
            "longitude": 132.6101925
        },
        "type": "location"
    },
    "userId": "guest"
}Message de l'utilisateur inboundEvent
Représente les messages d'événement sortants qui peuvent être envoyés au serveur. Elle applique les propriétés suivantes à 
Par exemple :
Message.
                        | Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "inboundEvent" | Oui | 
| eventType | 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'affaires | JSONObject | Oui | 
| contextProperties | Propriétés du contexte d'événement | Propriétés de contexte d'événement | Non | 
{
    "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 d'utilisateur
Il s'agit du message de soumission de formulaire envoyé après que l'utilisateur a soumis un formulaire par une adresse SubmitFormAction. Il possède les propriétés suivantes :
                        
Exemple de JSON
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| 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 | Données utiles de republication, qui peuvent inclure une propriété d'action pour déclencher la navigation. La valeur de cette propriété doit être extraite de SubmitFormAction. | JSONObject | Non | 
| partialSubmitField | ID du champ qui déclenche la soumission d'un formulaire partiel. Les champs dont la propriété autoSumbitest réglée àtruepeuvent déclencher une soumission partielle de formulaire. | Chaîne | Non | 
{
    "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"
}Messages de réponse
Représente le message envoyé par la compétence ou l'agent à l'utilisateur.
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| 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 de pied de page affiché sous le texte et les actions du message, mais avant les actions globales. | chaîne | Non | 
| actions | Liste des actions liées au message | Array<Action> | Non | 
| footerForm | Disposition de formulaire qui s'affiche sous le texte de pied de page du message et au-dessus de ses actions globales. | Message de formulaire d'aptitude | 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 de fichier joint à l'aptitude
Représente un message avec fichier joint. Elle applique les propriétés suivantes aux messages de réponse.
                        
| Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "attachment" | Oui | 
| attachment | Fichier joint envoyé | Annexe | Oui | 
 Note
Les téléchargements de fichiers depuis le site hôte risquent d'échouer et d'émettre une erreur console semblable à ce qui suit :
Les téléchargements de fichiers depuis le site hôte risquent d'échouer et d'émettre une erreur 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 resourceMessage de carte d'aptitude
Représente un ensemble de choix proposés à l'utilisateur, horizontalement sous forme de carrousels ou verticalement sous forme de listes. Elle applique les propriétés suivantes aux messages de réponse.
                        
| Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "card" | Oui | 
| layout | Indique si les messages doivent être affichés horizontalement ou verticalement. | chaîne (values : horizontal,vertical) | Oui | 
| cards | Tableau de cartes à afficher. | tableau | Oui | 
Données utiles de message de commande de réponse d'aptitude
Représente les données utiles d'un message de commande.
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "command" | Oui | 
| command | La commande qui doit être exécutée | chaîne | Oui | 
| properties | Une carte de paires clé-valeur | JSONObject | Oui | 
Données utiles du message d'erreur de réponse d'aptitude
Représente les données utiles d'un message d'erreur qui fournissent une rétroaction aux clients sur les erreurs dans le système dorsal.
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "error" | Oui | 
| errorMessage | Le message d'erreur | chaîne | Oui | 
| error | java.lang.Error object | chaîne | Non | 
Réponse à l'aptitude ExecuteApplicationContextCommand - Données utiles du message
Ceci représente les données utiles d'un message de commande d'action d'exécution d'application.
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message |  "executeApplicationActionCommand" | |
| actionType | Type de l'action | "custom", "navigate", "query", "updateFields" | Oui | 
| command | La commande execute application action | "executeApplicationAction" | Oui | 
| context | Le nom du contexte d'application | chaîne | Oui | 
| customAction | Requis lorsque actionType est 'custom' | chaîne | Non | 
| properties | Paires clé-valeur pouvant être utilisées comme arguments lors de l'exécution de l'action | JSONObject | Non | 
Messages de rétroaction
Il s'agit d'un composant de notation de rétroaction qui prend la rétroaction d'un utilisateur à l'aide d'une jauge de notation (généralement un système de notation en étoile). Ses données utiles sont similaires à un message de texte, mais un champ d'objet 
Par exemple :
channelExtensions supplémentaire est réglé à { "displayType": "stars" }. Elle applique les propriétés suivantes aux messages de réponse.
                        | Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "text" | Oui | 
| text | Texte du message | chaîne | Oui | 
| channelExtensions | Objet décrivant les extensions des données utiles. | { “displayType”: “stars” } | Oui | 
{
    "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 d'emplacement d'aptitude
Représente un message d'emplacement. Elle applique les propriétés suivantes aux messages de réponse.
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "location" | Oui | 
| location | Emplacement | Emplacement | Oui | 
Message d'événement sortant d'aptitude
Représente les messages d'événement sortants qui peuvent être envoyés par le serveur. Elle applique les propriétés suivantes à 
Par exemple :
Message.
                        | Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "outboundEvent" | Oui | 
| eventType | 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'affaires | JSONObject | Oui | 
| contextProperties | Propriétés du contexte d'événement | Propriétés de contexte d'événement | Non | 
{
    "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 brut d'aptitude
Utilisé lorsqu'un composant crée les données utiles propres à un canal. 
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "raw" | Oui | 
| payload | Données utiles propres au canal | Objet JSON | Oui | 
Session de réponse d'aptitude - Données utiles de message fermé
Cela représente les données utiles d'un message fermé de session. Il fournit un accusé de réception de la fermeture de session sur le serveur dorsal.
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "sessionClosed" | Oui | 
Message texte de réponse d'aptitude
Représente un message texte. Elle applique les propriétés suivantes aux messages de réponse.
                        
Par exemple :
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "text" | Oui | 
| text | Texte du message | chaîne | Oui | 
{
    "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"
}Réponse d'aptitude - Données utiles de message de flux de texte
Les données utiles de réponse de flux de texte r représentent une réponse textuelle de flux qui est fournie en fragments. Il applique les propriétés suivantes aux données utiles du message de réponse : 
                        
| Le nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "texStream" | Oui | 
| aggregateText | Texte agrégé transmis dans le flux jusqu'au fragment courant. | chaîne | Oui | 
| streamId | ID du flux. Les fragments du même flux ont le même streamId. | chaîne | Oui | 
| streamState | État du flux du bloc de flux courant | "start","running","end" | Oui | 
| text | Texte partiel fourni dans le fragment courant | chaîne | Oui | 
Message de formulaire d'aptitude
Représente un message qui retourne les résultats d'une interrogation 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 qui représentent un champ. Elle applique les propriétés suivantes aux messages de réponse.
                         Note
Ce type de message est utilisé pour les boîtes de dialogue SQL.
Ce type de message est utilisé pour les boîtes de dialogue SQL.
| Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "form" | Oui | 
| forms | Tableau de résultats de formulaire. Chaque résultat contient un tableau fieldsqui représente les champs de formulaire. | Tableau <Rangée> | 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 d'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 rangées elles-mêmes contiennent un tableau 
fields qui représente des cellules individuelles. Elle applique les propriétés suivantes aux messages de réponse.
                         Note
Ce type de message est utilisé pour les boîtes de dialogue SQL.
Ce type de message est utilisé pour les boîtes de dialogue SQL.
| Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "table" | Oui | 
| headings | Tableau d'en-têtes de table | Tableau<En-tête> | Oui | 
| tableTitle | Le titre du tableau | chaîne | Non | 
| rows | Tableau de rangées de table. Chaque ligne contient un tableau  fieldsqui représente les cellules de la table. | Tableau <Rangée> | Oui | 
| paginationInfo | Informations de pagination pour les résultats du tableau | 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"
    }
}Message de formulaire de table d'aptitudes
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 comporte un formulaire en lecture seule en plus des informations sur la ligne. Elle applique les propriétés suivantes aux messages de réponse.
                         Note
Ce type de message est utilisé pour les boîtes de dialogue SQL.
Ce type de message est utilisé pour les boîtes de dialogue SQL.
| Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| type | Type de message | "tableForm" | Oui | 
| tableTitle | Le titre du tableau | chaîne | Non | 
| headings | Tableau d'en-têtes de table | Tableau<En-tête> | Oui | 
| rows | Tableau de rangées de table. Chaque ligne contient un tableau de champs qui représentent les cellules de la table. | Tableau <Rangée> | Oui | 
| forms | Tableau de résultats de formulaire correspondant à chaque ligne de table. Chaque formulaire contient un tableau fieldsqui représente les champs de 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 lié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 de formulaire de modification d'aptitude
Représente un message de formulaire modifiable (formulaire d'entrée). Le message comprend un tableau de champ. 
                        
| Nom | Description | Type | Obligatoire? | 
|---|---|---|---|
| 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 des champs 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 des rangées pouvant inclure à la fois des champs modifiables et des champs en lecture seule. Vous devez définir la propriété fieldsetformRowsest requis. Ils sont mutuellement exclusifs. | Tableau <FormRow> | |
| errorMessage | Message d'erreur au niveau du 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 | No | 
| actions | Tableau d'actions liées au formulaire de modification. Ce tableau comprend un fichier SubmitFormAction. Une erreur s'affiche dans la console du navigateur lorsque SubmitFormActionn'est pas inclus dans le tableauactions. | Tableau <Action> | No | 
| globalActions | Tableau d'actions globales | Tableau <Action> | Non | 
| channelExtensions | Ensemble de propriétés d'extension propres au canal L'objet  | 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"
}