Мы создаем бот-мессенджер на Facebook с Botkit версии 4.
Мы пробовали разные способы добавить задержку при наборе сообщений, но ни один из них не работает должным образом.
Поскольку мы используем разговоры, мы не можем использовать этот формат в промежуточном программном обеспечении
bot.reply(message, { type: "typing" });
Поэтому мы используем что-то вроде следующего:
Решение 1
controller.middleware.send.use(async function (bot, message, next) {
if (bot._config && bot._config.activity && bot._config.activity.conversation && bot._config.activity.conversation.id) {
await typingIndicator(bot,bot._config.activity.conversation.id)
setTimeout(async () => { next(); }, 2000);
} else {
next();
}
});
async function typingIndicator(bot, id) {
await bot.api.callAPI('/me/messages', 'post', {
recipient: { id: id }, sender_action: 'typing_on'
})
}
Но эта реализация не работает должным образом.
У меня около 200 - 300 потоков, поэтому я попытался добавить задержку, используя convo.before () Но даже это разрыв между
Решение 2
let dialog = new BotkitConversation('dialog', controller);
dialog.addMessage({text: 'Message 1', action: 'thread_2'}, 'thread_1');
dialog.addMessage({text: 'Message 2', action: 'thread_3'}, 'thread_2');
dialog.addMessage({text: 'Message 3', action: 'thread_4'}, 'thread_3');
dialog.addMessage({text: 'Message 4'}, 'thread_4');
for (let key in dialog.script) {
dialog.before(`${key}`, async (convo, bot) => {
return new Promise((resolve, reject) => {
setTimeout(resolve, 2000);
});
});
}
Любая помощь будет оценена.