Я пытаюсь отправить индикатор набора в разговореUpdate, но мне кажется, что session.sendTyping () работает только в диалоговом окне. По крайней мере, я безуспешно пытался в каналах Webchat и BotEmulator. Есть идеи о том, как это сделать?
Вот моя попытка:
bot.on('conversationUpdate', async (message) => {
if (message.membersAdded) {
for (let identity of message.membersAdded) {
if (identity.id === message.address.bot.id) {
const replies = getGreetingReplies(message);
cosmosDB.writeOnConvUpdate({ userMessage: message, botMessage: replies[0] }, message.address.conversation.id);
bot.loadSession(message.address, async (err, session) => {
for (let reply of replies) {
//var msg = new builder.Message().address(message.address).text('');
//msg.type = 'Typing';
//bot.send(msg);
await utilities.SendTyping(session, 3000);
bot.send(reply);
}
});
}
}
}});
Для прямой линии / веб-чата обязательно настройте соединение с ботом на веб-интерфейсе следующим образом:
botConnection = new BotChat.DirectLine({
secret: "<secret>",
webSocket:true,
sendTyping: true
});
Затем, чтобы фактически отправить событие sendTyping, вам просто нужно вызвать session.sendTyping()
при получении нового сообщения, или, если вы хотите быть более конкретным, вы можете вызвать метод до того, как что-то, что, как вы знаете, займет некоторое время, например, вызов API.
Событие sendTyping работает только с открытым webSocket и поддерживается не на всех каналах. Однако он будет работать в веб-чате при использовании вышеуказанной конфигурации.