Skip to content

Commit 0330b33

Browse files
author
Oshri Levi
committed
Fixed some interactive messages issues
1 parent a987227 commit 0330b33

File tree

1 file changed

+27
-14
lines changed

1 file changed

+27
-14
lines changed

Diff for: botkit-mock/botMock.js

+27-14
Original file line numberDiff line numberDiff line change
@@ -144,19 +144,27 @@ class Bot {
144144
this.detailedAnswers[message.user] = []
145145
this.detailedAnswers[message.user].push(text)
146146
}
147+
148+
this.callInteractiveRepliesCallbacks(message.user);
149+
147150
if (typeof cb === 'function') {
148151
cb({}, {})
149152
}
150153
}
151154
replyInteractive(message, text, cb) {
152155
this.reply(message, text);
153-
if (this.interactiveRepliesCallbacks[message.callback_id]) {
156+
}
157+
callInteractiveRepliesCallbacks(message_user) {
158+
//Check if we have an interactive reply to call to
159+
for (let user in this.interactiveRepliesCallbacks) {
160+
if (user != message_user)
161+
continue;
154162
let result;
155-
if (this.detailedAnswers[message.user]) {
156-
result = this.detailedAnswers[message.user][this.detailedAnswers[message.user].length - 1];
163+
if (this.detailedAnswers[user]) {
164+
result = this.detailedAnswers[user][this.detailedAnswers[user].length - 1];
157165
}
158-
this.interactiveRepliesCallbacks[message.callback_id](result);
159-
delete this.interactiveRepliesCallbacks[message.callback_id];
166+
this.interactiveRepliesCallbacks[user](result);
167+
delete this.interactiveRepliesCallbacks[user];
160168
}
161169
}
162170
// start new conversation
@@ -210,7 +218,7 @@ class Controller {
210218
//store events we want to listen
211219
this.events = [];
212220
}
213-
interactiveMessage(message) {
221+
interactiveMessage(message, userTypes) {
214222
if (!message.callback_id)
215223
throw "Missing callback_id";
216224
return new Promise((resolve, reject) => {
@@ -222,11 +230,15 @@ class Controller {
222230
resolve();
223231
return;
224232
}
225-
226-
if (!this.bot.interactiveRepliesCallbacks[message.callback_id])
227-
this.bot.interactiveRepliesCallbacks[message.callback_id] = [];
228-
229-
this.bot.interactiveRepliesCallbacks[message.callback_id] = resolve;
233+
if (userTypes && userTypes.length > 0) { //If we're expecting the user to enter some text in response to the interactive message, we better store it and let Convo.ask call resolve
234+
this.allTypers = userTypes;
235+
// save options
236+
this.typeOptions = {};
237+
// add resolve to type options
238+
this.typeOptions.resolve = resolve;
239+
} else { //Otherwise, we will call the resolve func once we get an interactiveReply
240+
this.bot.interactiveRepliesCallbacks[message.user] = resolve;
241+
}
230242
//Only support one event listener
231243
relevantEvents[0].callback(this.bot, message);
232244
});
@@ -244,7 +256,7 @@ class Controller {
244256
})[0]
245257
if (!whoStartConvoWithBotFirst)
246258
throw "initiator missing"
247-
// save all typers who will take action in conversation
259+
// save all typers who will take action in conversation
248260
self.allTypers = userTypes;
249261
// save main typer ( first typer )
250262
self.mainTyper = whoStartConvoWithBotFirst;
@@ -254,14 +266,14 @@ class Controller {
254266
self.typeOptions.resolve = resolve;
255267
// get first message which need send to bot
256268
var msg = whoStartConvoWithBotFirst.messages.shift()
257-
// correct message format - message must be an object with property text: "Message Text"
269+
// correct message format - message must be an object with property text: "Message Text"
258270
if (typeof(msg) == 'string')
259271
msg = {
260272
text: msg,
261273
}
262274

263275
msg.type = (whoStartConvoWithBotFirst.type || 'direct_message');
264-
// set message user
276+
// set message user
265277
msg.user = msg.user || whoStartConvoWithBotFirst.user
266278
// send first message
267279
self.initialUserMessage(msg, options)
@@ -370,6 +382,7 @@ class Convo {
370382
return typer.user == self.user;
371383
})[0]
372384
if (currentTyper) {
385+
this.bot.callInteractiveRepliesCallbacks(self.user);
373386
// check if user has some message for answer to bot
374387
if (currentTyper.messages.length) {
375388
// get last message

0 commit comments

Comments
 (0)