使用Bot Framework V4在团队中发送主动1:1消息

时间:2020-01-21 10:15:55

标签: .net-core botframework microsoft-teams proactive

我正在尝试使用具有以下代码的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);

我对此有以下问题,

  1. 除非用户在部署后进行了事先对话,否则漫游器无法发送主动消息

    Bot部署

    Bill to Bot-Works

    凭单付款-工作

    重新部署机器人

    按期付款-无法使用,因为重新部署后现在对话中没有成员

    Bill to Bot-Works

    Bot to Bill-现在工作,因为Bill在重新部署后进行了对话

  2. Bot向用户多次发送相同的消息

    Bill to Bot-Works

    按期付款-主动工作-正确发送1条定义的消息

    Sim to Bot-Works

    Bot到Sim-发送2条相同的消息,因为现在对话中有两个成员

    愿意机器人-工作

    向遗嘱求助-发送3条相同的消息,因为现在对话中有3位成员

注意:我正在将Teams用户ID存储在数据库中,并使用它们将直接消息发送给用户

任何有关如何纠正此问题的帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

根据评论中的答案,我认为我对场景的理解更好,并且我觉得问题在于您无论如何都没有设置会话ID-尽管您告诉Bot哪个用户< / em>,您需要知道是否要直接 (即1-1)与他们互动,或者是在某个地方或团队频道中作为群聊的一部分。< / p>

您需要通过在Activity实例上配置“对话”属性(在您的情况下为“ message”变量)来进行设置。有关更多详细信息,请参见此处的我的信息:Programmatically sending a message to a bot in Microsoft Teams

希望有帮助-如果没有,请告诉我