В соответствии с этим официальным примером проекта (https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/typescript_nodejs/13.core-bot/src/bots/dialogAndWelcomeBot.ts) я могу идентифицировать новых участников и отправить им приветственное сообщение, используя этот (мой код):
this.onMembersAdded(async (context) => {
const welcomeCardTemplate = require("../lib/data/resources/cards/welcomeCard.json");
const membersAdded = context.activity.membersAdded;
for (const member of membersAdded) {
if (member.id !== context.activity.recipient.id) {
const welcomeCard = CardFactory.adaptiveCard(welcomeCardTemplate );
await context.sendActivity({ attachments: [welcomeCard] });
}
}
});
Отлично работает при использовании эмулятора. Как только я подключаюсь к чату, я получаю приветственное сообщение, но при использовании чата в Azure или веб-чата оно не запускается, пока я сначала не введу какой-либо текстовый ввод в чат.
Одна вещь, которую я заметил, заключается в том, что когда я использую эмулятор, сразу после подключения к чату на бот отправляются две активности, одна из которых содержит Id бота, а другая - Id пользователя, но при использовании других параметров чата (Azure Chat и WebChat) отправляется только одно действие (где memberId совпадает с идентификатором receientId), поэтому оно никогда не проходит мимо оператора if.
Чего мне здесь не хватает, почему из чата Azure и веб-чата отправляется только одно действие?