Ответ Хилтон по-прежнему хорош, но часть о проактивном обмене сообщениями без предварительного взаимодействия требует слишком длительного ответа. Итак, отвечая на ваши последние комментарии:
Да, бот должен быть установлен для любой команды, в которой находится пользователь, и которую вы хотите предварительно проинформировать. В противном случае у него не будет разрешений на это.
Вам не нужно переопределять OnMembersAddedAsync; просто запросите список (см. ниже).
Вам не нужен идентификатор разговора, чтобы сделать это. Я бы сделал ваш API, вместо этого, принял бы их ID команды. Вы можете получить это, запросив список команд , что вам нужно сделать заранее и сохранить в таблице ha sh или где-то еще ... возможно, в базе данных, если размер вашей команды достаточно велик.
Для получения необходимой информации вам нужно для построения ConversationParameters :
var conversationParameters = new ConversationParameters
{
IsGroup = false,
Bot = turnContext.Activity.Recipient,
Members = new ChannelAccount[] { teamMember },
TenantId = turnContext.Activity.Conversation.TenantId,
};
..., которые затем вы используете для CreateConversationAsyn c :
await ((BotFrameworkAdapter)turnContext.Adapter).CreateConversationAsync(
teamsChannelId,
serviceUrl,
credentials,
conversationParameters,
async (t1, c1) =>
{
conversationReference = t1.Activity.GetConversationReference();
await ((BotFrameworkAdapter)turnContext.Adapter).ContinueConversationAsync(
_appId,
conversationReference,
async (t2, c2) =>
{
await t2.SendActivityAsync(proactiveMessage, c2);
},
cancellationToken);
},
cancellationToken);
Да, вы можете изменить этот образец. Он возвращает неверный запрос, потому что в /api/messages
разрешена только конкретная схема. Вам нужно будет добавить свою конечную точку. Вот пример NotifyController , который использует один из наших других примеров. Вы можете видеть, что принимает запросы GET . Вам просто нужно изменить нашу собственную сборку, которая принимает запросы POST.
Все это, как говорится, кажется, может быть, это большая задача, чем вы готовы. Ничего плохого в этом нет; Вот как мы учимся. Вместо того, чтобы прыгать прямо в это, я бы начал с:
Получите Проактивный образец и копайте код до тех пор, пока вы действительно понять, как работает API.
Получите Образец команд , а затем попытайтесь заставить его отправлять сообщения отдельным пользователям.
Затем создайте своего бота, который отправляет сообщения пользователям без предварительного взаимодействия.
Если у вас возникли проблемы, не стесняйтесь просматривать мои ответы . Я отвечал на подобные вопросы, много. Имейте в виду, однако, что мы перешли от промежуточного программного обеспечения команд, о котором я упоминаю в некоторых своих ответах, к чему-то более интегрированному в SDK. Образцы наших команд (образцы 50-60) показывают, как делать практически все.