使用 Bot Framework V4 在 Teams 中发送主动式 1:1 消息
Posted
技术标签:
【中文标题】使用 Bot Framework V4 在 Teams 中发送主动式 1:1 消息【英文标题】:Send Proactive 1:1 message in Teams using Bot Framework V4 【发布时间】:2020-05-07 09:07:00 【问题描述】:我正在尝试通过以下代码使用 Teams SDK 从机器人向团队发送主动 1:1 消息
MicrosoftAppCredentials.TrustServiceUrl(turnContext.Activity.ServiceUrl);
var connectorClient = new ConnectorClient(new Uri(turnContext.Activity.ServiceUrl), Configuration["MicrosoftAppId"], Configuration["MicrosoftAppPassword"]);
var userId = _operation.MemberTeamsId;
var tenantId = Configuration["TenantId"];
var parameters = new ConversationParameters
Members = new[] new ChannelAccount(userId) ,
ChannelData = new TeamsChannelData
Tenant = new TenantInfo(tenantId),
,
;
var conversationResource = await connectorClient.Conversations.CreateConversationAsync(parameters);
var message = Microsoft.Bot.Schema.Activity.CreateMessageActivity();
message.Text = _operation.Message;
await connectorClient.Conversations.SendToConversationAsync(conversationResource.Id, (Microsoft.Bot.Schema.Activity)message);
我有以下问题,
除非用户在部署后进行了先前的对话,否则机器人无法发送主动消息
已部署机器人
Bill to Bot - 工作
Bot to Bill - 工作
机器人重新部署
Bot to Bill - 不起作用,因为重新部署后现在对话中没有成员
Bill to Bot - 工作
Bot to Bill - 重新部署后,Bill 进行对话时现在可以正常工作
Bot 多次向用户发送相同的消息
Bill to Bot - 工作
Bot to Bill - 主动工作 - 发送 1 条应定义的消息
Sim to Bot - 工作
Bot to Sim - 发送 2 条相同的消息,因为现在对话中有两个成员
Will to Bot - 工作
Bot to Will - 发送 3 条相同的消息,因为现在对话中有 3 个成员
注意:我将 Teams 用户 ID 存储在数据库中,并使用它们向用户发送直接消息
任何有关如何纠正此问题的帮助将不胜感激。谢谢。
【问题讨论】:
我实际上并不清楚您确切的 question 是什么,但我猜是您不希望发送多条消息?或者,您是否希望将它们直接发送给用户,而不是发送给群聊?还是您希望他们发送到群聊,但只有一条消息? 我正在尝试从 Bot 向用户发送 1:1 个人消息。机器人无法向部署后未对话的用户发送消息。如果它能够在对话后发送,它会根据已经与机器人对话的用户数量多次发送相同的消息,即如果部署后有 10 个用户与 bot 对话,BOT 将向所需用户发送所需的消息 10 次。 【参考方案1】:根据 cmets 中的答案,我认为我更了解该场景,而且在我看来,问题在于您无论如何都没有设置对话 ID - 尽管您告诉 Bot 哪个用户 您想与之互动,它需要知道您是想与他们直接(即 1-1)互动,还是作为某个地方的群聊或团队频道的一部分。
您需要通过在 Activity 实例上配置 Conversation 属性(在您的情况下为“消息”变量)来设置它。更多详细信息请参见我的帖子:Programmatically sending a message to a bot in Microsoft Teams 希望有帮助 - 如果没有,请告诉我
【讨论】:
以上是关于使用 Bot Framework V4 在 Teams 中发送主动式 1:1 消息的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Bot Framework 向 Teams 中的用户发送通知?
如何在基于Bot framewok v4构建的团队聊天机器人中启用语音功能
在公共领域托管 Bot(Microsoft Bot Framework)[重复]