Aller au contenu principal

Code JSON d'un formulaire

Cette section vous donne un exemple de code JSON pour les différents composants d'un "Formulaire"" Retorik Studio, présenté dans la documentation fonctionnelle au chapitre Formulaires.

Composants d'un formulaire

Section

Code
{
"$type": "K2.Bot.Forms.Models.Section, K2.Bot.Forms",
"Introduction": "Début du formulaire",
// Mettre Null si le message d'intro est géré dans un composant d'affichage de type Sentence indépendant
// de la section.
"Title": "",
"AskToBegin": false,
"StopFormsIfLaunchRefused": false,
"ForceLaunch": false,
"AskToBeginSentence": null,
"MessageIfLaunchRefused": null,
"Items":[
//Insérer ici le code JSON de chaque composant du formulaire
],
"Choices": {},
"LocalizationContainer": {},
"Identifier": "1",
"NextItemIdentifier": null, //Une section peut en appeler une autre
"GoToIdentifier": null
"Condition": null, //Une section peut être condition par une expression
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Liste de propositions avec Bouton Radio

Liste de boutons radio sur une colonne

Code
{
"$type": "K2.Bot.Forms.Models.Question, K2.Bot.Forms",
"Text": "Voici un exemple de boutons radio sur une colonne",
"Speak": null,
"RepromptInvalidText": null,
"RepromptUnrecognizedText": null,
"StoragePath": "Conversation.Patient.radioUniqueChoice", //Variable qui récupère la donnée saisie
"ForcePrompt": true,
"ValidationButtonText": "Valider",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"ChoicesActions": {},
"Choices": [
"Choix numéro 1",
"Choix numéro 2",
"Choix numéro 3",
"Choix numéro 4",
"Choix numéro 5",
"Choix numéro 6",
"Choix numéro 7"
],
"ChoicesOrder": 0,
"StyleChoice": 7,
"QuizOption": null,
"OutputFormat": 0,
"Split": 0,
"LocalizationContainer": {},
"Identifier": "0.6",
"NextItemIdentifier": "0.7",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Liste de boutons radio sur deux colonnes

Même code que pour une liste à une colonne mais la propriété Split change :
** "Split": 2,**

Valeurs possibles pour StyleChoice

Code
None = 0,
Auto = 1,
Inline = 2,
List = 3,
SuggestedAction = 4,
HeroCard = 5,
CustomListSelect = 6,
CustomListRadio = 7
/*
* 1 : Auto : le bot choisi la forme la plus adaptée selon le nombre de choix
* 2 : Inline : tout sur une seule ligne
* 3 : List : liste précédée de numéros
* 4 : SuggestedAction : Liste de boutons
* 5 : HeroCard : liste de boutons avec texte à l'intérieur (comme le choix multiple de FAQ)
* 6 : CustomListSelect : liste déroulante
* 7 : CustomListRadio : liste avec des boutons radio (choix unique)
*/

Liste de propositions avec Cases à Cocher

Liste de cases à cocher sur une colonne

Code
{
"$type": "K2.Bot.Forms.Models.CustomCheckboxInput, K2.Bot.Forms",
"Text": "Voici un exemple de checkbox sur une colonne",
"Speak": null,
"ListCheckBoxes": {
"Choix numéro 1": "Conversation.Patient.choice1_1", //Variable qui récupère la valeur de la case 1
"Choix numéro 2": "Conversation.Patient.choice1_2", //Variable qui récupère la valeur de la case 2
"Choix numéro 3": "Conversation.Patient.choice1_3", //Variable qui récupère la valeur de la case 3
"Choix numéro 4": "Conversation.Patient.choice1_4", //Variable qui récupère la valeur de la case 4
"Choix numéro 5": "Conversation.Patient.choice1_5" //Variable qui récupère la valeur de la case 5
},
"ValidationButtonText": "Valider",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"Split": 0,
"ForcePrompt": false,
"LocalizationContainer": {},
"Identifier": "0.1",
"NextItemIdentifier": "0.2",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Liste de cases à cocher sur deux colonnes

Même code que pour une liste à une colonne mais la propriété Split change :
** "Split": 2,**

Liste de propositions au format Boutons

Liste de boutons à choix unique

Code
{
"$type": "K2.Bot.Forms.Models.CustomButtonInput, K2.Bot.Forms",
"Text": "Voici un exemple de bouton à choix unique",
"Speak": null,
"ListButtons": {
"Bouton 1": "",
"Bouton 2": "",
"Bouton 3": "",
"Bouton 4": "",
"Bouton 5": ""
},
"ValidationButtonText": "Valider",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"IsMultiple": false,
"StoragePath": "Conversation.Patient.uniqueBtn",
"ForcePrompt": false,
"LocalizationContainer": {},
"Identifier": "0.3",
"NextItemIdentifier": "0.4",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Liste de boutons à choix multiple

Même code que pour une liste à boutons à choix unique mais la propriété IsMultiple change : :
"IsMultiple": true,

Liste de propositions avec Bouton Toggle Switch

Code
{
"$type": "K2.Bot.Forms.Models.CustomToggleInput, K2.Bot.Forms",
"Text": "Voici un exemple de boutons toggle",
"Speak": null,
"ListToggles": {
"Choix numéro 1": "*Conversation.Patient.choice3_1*", // Variable qui récupère la valeur du bouton 1
"Choix numéro 2": "*Conversation.Patient.choice3_2*", // Variable qui récupère la valeur du bouton 2
"Choix numéro 3": "*Conversation.Patient.choice3_3*", // Variable qui récupère la valeur du bouton 3
"Choix numéro 4": "*Conversation.Patient.choice3_4*", // Variable qui récupère la valeur du bouton 4
"Choix numéro 5": "*Conversation.Patient.choice3_5*" // Variable qui récupère la valeur du bouton 5
},
"ValidationButtonText": "**Valider**",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"ForcePrompt": false,
"LocalizationContainer": {},
"Identifier": "0.5",
"NextItemIdentifier": "0.6",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Liste déroulante

Code
{
"$type": "K2.Bot.Forms.Models.Question, K2.Bot.Forms",
"Text": "Voici un exemple de liste déroulante",
"Speak": null,
"RepromptInvalidText": null,
"RepromptUnrecognizedText": null,
"StoragePath": "Conversation.Patient.selectList", //Variable qui récupère la valeur sélectionnée
"ForcePrompt": true,
"ValidationButtonText": "***Valider***",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"ChoicesActions": {},
"Choices": [
"Réponse 1",
"Réponse 2",
"Réponse 3",
"Réponse 4",
"Réponse 5",
"Réponse 6",
"Réponse 7"
],
"ChoicesOrder": 0,
"StyleChoice": 6,
"QuizOption": null,
"OutputFormat": 0,
"Split": 1,
"LocalizationContainer": {},
"Identifier": "0.8",
"NextItemIdentifier": "0.9",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": "Réponse 6",
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Sélection d'image(s)

Code
{
"$type": "K2.Bot.Forms.Models.CustomImageChoiceSetInput, K2.Bot.Forms",
"Text": "Quelle image préférez-vous ?",
"Speak": null,
"ValidationButtonText": "Valider",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"StoragePath": "Conversation.Patient.ImageSelection1", // Variable qui récupère la valeur de l'image
// sélectionnée
"IsMultiple": false, // Mettre true (choix multiple) ou false(choix unique) selon votre souhait
"SmallImages": true, // Mettre true ou false selon votre souhait
"ShowCaptions": true, // Mettre true (légendes visible) ou false (légendes invisible) selon votre souhait
"choicesWithUrl": [
{
"title": "Image1", // Légende visible à l'écran si ShowCaptions est à true
"value": "test1", // Valeur récupérée par la variable définie par StoragePath
"url": "https://picsum.photos/300/300.jpg",
"LocalizationContainer": {}
},

//Recopier le code JSON de l'image 1 autant de fois que nécessaire

],
"ForcePrompt": false,
"LocalizationContainer": {},
"Identifier": "0.03",
"NextItemIdentifier": "0.04",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Sélection d'une date

Code
{
"$type": "K2.Bot.Forms.Models.Input, K2.Bot.Forms",
"Text": "Quelle est votre date de naissance ?",
"Speak": null,
"RepromptInvalidText": null,
"RepromptUnrecognizedText": null,
"StoragePath": "Conversation.Patient.Date", //Variable qui récupère la donnée saisie
"ForcePrompt": false,
"**TypeInput": "DateWithPicker",
"ValidationButtonText": "Valider",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"LocalizationContainer": {},
"Identifier": "0.000011",
"NextItemIdentifier": "0.0002",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Sélection d'une heure

Code
{
"$type": "K2.Bot.Forms.Models.**Input**, K2.Bot.Forms",<br/>
"Text": "A quelle heure êtes-vous arrivé ?",
"Speak": null,
"RepromptInvalidText": null,
"RepromptUnrecognizedText": null,
"StoragePath": "Conversation.Patient.Time",
"ForcePrompt": false,
"TypeInput": "Time",
"ValidationButtonText": "***Valider***",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"LocalizationContainer": {},
"Identifier": "0.001",
"NextItemIdentifier": "0.002",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Echelle de mesure de type curseur

Code
{
"$type": "K2.Bot.Forms.Models.CustomSliderInput, K2.Bot.Forms",
"Text": "Sur une échelle de 1 à 10, comment mesurez-vous votre douleur ?",
"Speak": null,
"MinLabel": "1",
"MaxLabel": "10",
"MinValue": 1,
"MaxValue": 10,
"ValidationButtonText": "Valider",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"StoragePath": "Conversation.Patient.Slider",
"ForcePrompt": false,
"LocalizationContainer": {},
"Identifier": "0.01",
"NextItemIdentifier": "0.02",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Echelle de likert

Code
{
"$type": "K2.Bot.Forms.Models.CustomLikertInput, K2.Bot.Forms",
"Text": "Quelle note attribuez-vous à cette application ?",
"Speak": null,
"RatingMin": 1,
"RatingMax": 5,
"Emojis": [
"🟊"
],
"StrokeColor": "#ffae00", // Couleur Jaune par défaut
"ValidationButtonText": "Valider",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"StoragePath": "*Conversation.Patient.Likert*",
"ForcePrompt": false,
"LocalizationContainer": {},
"Identifier": "0.02",
"NextItemIdentifier": "0.03",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Affichage d'un message

Code
{
"$type": "K2.Bot.Forms.Models.Sentence, K2.Bot.Forms",
"Text": "Bonjour ${turn.activity.from.name}, je m’appelle Nom de l'assistant digital.",
// La variable ${turn.activity.from.name} permet de récupérer le prénom de l'utilisateur de la conversation.
"Speak": null, // Laisser à Null s'il n'y a pas besoin d'ajustement avec la voix
"LocalizationContainer": {},
"Identifier": "0.10",
"NextItemIdentifier": "0.11",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Affichage d'un message avec bouton d'action

Code
{
"$type": "K2.Bot.Forms.Models.Question, K2.Bot.Forms",
"Text": "Merci d’avoir pris le temps de répondre à ces questions.",
"Speak": null,
"RepromptInvalidText": null,
"RepromptUnrecognizedText": null,
"StoragePath": "Conversation.Patient.end",
"ForcePrompt": false,
"ValidationButtonText": "Sauvegarder",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"ChoicesActions": {},
"Choices": [
"Continuer"
],
"ChoicesOrder": 0,
"StyleChoice": 5,
"QuizOption": null,
"OutputFormat": 0,
"Split": 1,
"LocalizationContainer": {},
"Identifier": "0.37",
"NextItemIdentifier": "0.99",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Saisie d'une valeur numérique ou alphanumérique

Code pour la saisie d'une valeur numérique
{
"$type": "K2.Bot.Forms.Models.Input, K2.Bot.Forms",
"Text": "Quelle est votre taille ?",
"Speak": null,
"RepromptInvalidText": null,
"RepromptUnrecognizedText": null,
"StoragePath": "Conversation.Patient.length", // Variable qui récupère la donnée saisie
"ForcePrompt": false,
"TypeInput": "Number",
"ValidationButtonText": "false",
"ValidationButtonPosition": "fullwidth",
"ValidationButtonDisplay": "button",
"LocalizationContainer": {},
"Identifier": "0.0002",
"NextItemIdentifier": "0.000211",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}

Appel d'un formulaire

Recopier ce code JSON d'appel d'un formulaire dans la zone nommée JSON de l'élément à envoyer à la fin de formulaire :

Code
[
{
"$type": "K2.Bot.Forms.Models.Event K2.Bot.Forms",
"Name": "FormEvent",
"Payload": {
"event": {
"type": 0,
"formId": "*Nom du formulaire",
"sectionId": "0" //ID de l'élément de départ dans le formulaire appelé
}
},
"StopForm": true,
"StopSection": false,
"IsInnerEvent": true,
"IsWaitingEvent": false,
"WaitingEventName": null,
"LocalizationContainer": {},
"Identifier": "990",
"NextItemIdentifier": "991",
"GoToIdentifier": null,
"Condition": null,
"Validation": null,
"DisplayExternal": true,
"Value": null,
"DefaultValue": null,
"Locked": false,
"ColumnPosition": 0,
"RowPosition": 0,
"SizePercentage": 0,
"Meta": null
}
]

Démarrage d'un formulaire via le bot

Code
const customActEvent = new CustomEvent("retorikSendActivity", {
detail: {
type: "event",
name: "StartFormEvent",
value: {
type: 0,
formId: "Nom de formulaire",
sectionId: "0",
},
},
});
document.dispatchEvent(customActEvent);