Возможно, я что-то недопонимаю, но я работаю над некоторыми сообщениями приветствия c, и они запускаются дважды. Я уже делаю foreach, чтобы проверить, кто добавляется в диалог, потому что я знаю, что даже в этом 1-1 я получу уведомление о присоединении пользователя и бота, примерно так:
foreach (var member in membersAdded)
{
if (member.Id == turnContext.Activity.Recipient.Id)
{
await SendWelcomeMessage(turnContext);
break;
}
}
Проблема, однако, заключается в том, что я получаю два полностью дублированных события разговор ". Это чат 1-1, и я получаю следующее (отредактировано) оба раза :
"membersAdded": [
{
"id": "29:...",
"aadObjectId": "[guid]"
},
{
"id": "28:..."
}
],
"type": "conversationUpdate",
"timestamp": "...",
"id": "f:guid",
...
единственное, что меняет, это идентификатор сообщения, но кроме этого Я получаю обе записи в membersAdded оба раза. Я знаю, что должен получать уведомления о добавлении обоих участников к этому 1-1, но, конечно, я должен получить либо две записи в membersAdded или два события "dialogUpdate"? Прямо сейчас я получаю, в основном, 2x2.
Является ли единственным решением для отслеживания состояния разговора, чтобы определить, «приветствовал» ли я этого пользователя раньше в этом же разговоре 1-1? Даже если я попробую это сделать, я боюсь, что в результате у меня появятся две записи о состоянии (например, две дубликаты в базе данных) из-за проблем с синхронизацией потоков (можно создать запись базы данных для диалога, и нет никакого способа чтобы выделить диалоги обновлений прямо сейчас).
Что мне не хватает?
Возможно, уместно, что это пользовательское приложение с боковой загрузкой? Кроме того, это происходит только в первый раз, когда я устанавливаю приложение - если я удаляю и переустанавливаю, я просто получаю 1 уведомление.