11import { markdownToHTML } from "../../markdown/parser.mjs" ;
2- import { createVector } from "../../utils/nlp.mjs" ;
2+ import { createVector , removeAccents } from "../../utils/nlp.mjs" ;
33import { processMessageWithChoiceOptions } from "../interactions/helpers/choiceOptions.mjs" ;
44import { createMessage } from "../messages/createMessage.mjs" ;
55import { controlEvents } from "../interactions/controlEvents.mjs" ;
@@ -69,6 +69,8 @@ export function initializeChatbot(chatbotData, yaml, params) {
6969 } ,
7070 } ;
7171
72+ controlEvents ( chatbot ) ;
73+
7274 // On récupère le contenu du message initial
7375 const initialMessageContent = initialMessage . content
7476 . join ( "\n" )
@@ -104,7 +106,7 @@ export function initializeChatbot(chatbotData, yaml, params) {
104106 const actionData = action . slice ( separator + 1 ) ;
105107 const isLast = index === actions . length - 1 ;
106108
107- // Si l'action consiste à entrer à un message dans la zone de texte
109+ // Si l'action consiste à entrer un message dans la zone de texte
108110 if ( actionType == "e" ) {
109111 // On affiche ce message
110112 const userMessage = actionData ;
@@ -118,8 +120,41 @@ export function initializeChatbot(chatbotData, yaml, params) {
118120 } ) ;
119121 }
120122 }
123+
124+ // Si l'action consiste à cliquer sur un bouton de réponse
125+ if ( actionType == "c" ) {
126+ // On récupère les boutons de réponse
127+ const choiceOptions = document . querySelectorAll ( ".messageOptions li a" ) ;
128+ // On met la liste dans le sens inverse pour pouvoir chercher en premier dans les dernières options affichées
129+ const choiceArray = Array . from ( choiceOptions ) . reverse ( ) ;
130+ // On recherche le bouton de réponse (en partant des derniers) qui contient le contenu du texte à chercher
131+ // On fait la recherche sans prendre en compte les accents et les majuscules
132+ const actionDataNormalized = removeAccents ( actionData . toLowerCase ( ) ) ;
133+ const selectedChoiceOption = choiceArray . find ( ( option ) =>
134+ removeAccents ( option . innerHTML . toLowerCase ( ) ) . includes (
135+ actionDataNormalized ,
136+ ) ,
137+ ) ;
138+ // Si on a trouvé un bouton de réponse qui correspond
139+ if ( selectedChoiceOption ) {
140+ // On récupère le message à afficher
141+ const messageToDisplay = selectedChoiceOption . innerHTML ;
142+ // Et le message à envoyer au chatbot
143+ const messageToChatbot = selectedChoiceOption
144+ . getAttribute ( "href" )
145+ . replace ( "#" , "" ) ;
146+ // On affiche le message à afficher côté utilisateur
147+ createMessage ( chatbot , messageToDisplay , { isUser : true } ) ;
148+ // On récupère puis affiche la répones du chatbot
149+ const response = getChatbotResponse ( chatbot , messageToChatbot ) ;
150+ if ( response ) {
151+ createMessage ( chatbot , response , {
152+ isUser : false ,
153+ disableTypewriter : ! isLast ,
154+ } ) ;
155+ }
156+ }
157+ }
121158 } ) ;
122159 }
123-
124- controlEvents ( chatbot ) ;
125160}
0 commit comments