如何在Teams频道中创建主动对话?



所以我一直在遵循如何发送主动消息的指南,我已经设置了,但它目前响应设置消息。我想它创建一个全新的对话,我发现了一些使用CreateConversationAsync()函数的代码,但我只设法让它与用户一起工作,而不是在通道内。代码示例如下:

我知道我做错了什么,但我现在不知道是什么。

const string botAppId = "<MicrosoftApptId GUID>";
const string serviceUrl = "<my service URL>";
const string tenantId = "<my tenant ID>";
const string recipientId = "<recipient ID xy:GUID>";
var title = "test title";
var activity = Activity.CreateMessageActivity();
activity.Type = ActivityTypes.Message;
activity.Text = "test message";
await ((BotAdapter)_adapter).CreateConversationAsync(
botAppId: botAppId,
channelId: Microsoft.Bot.Connector.Channels.Msteams,
serviceUrl: serviceUrl,
audience: null,
conversationParameters: new ConversationParameters
{
Activity = (Activity)activity,
Bot = new ChannelAccount(botAppId),
IsGroup = false,
Members = new List<ChannelAccount> { new ChannelAccount(recipientId) },
TopicName = title,
TenantId = tenantId
},
callback: BotCallback,
cancellationToken: default(CancellationToken));

您正在使用"收件人ID",这可能是该用户唯一的东西,就像用户唯一的Azure AD ID一样,这可能就是为什么它'DM'用户,可以这么说。您需要做的是捕获机器人被添加到的对话的'conversationId',它基本上是通道的conversationId。

这里是我对这个主题给出的更详细的答案,以及一个示例和一个视频的链接,这些链接涉及主动消息传递,希望对解决这个问题有用:通过Teams聊天机器人从外部流程向组织用户发送主动消息