gpt4 book ai didi

botframework - 以编程方式向 Microsoft Teams 中的机器人发送消息

转载 作者:行者123 更新时间:2023-12-04 05:27:25 24 4
gpt4 key购买 nike

我创建了一个主动机器人,当用户开始与机器人对话时,它基本上会向用户提出某些问题。该机器人部署在 Microsoft Teams 环境中。有什么方法可以向 channel 中的机器人发送自动消息?我知道可以通过使用特定团队公开的 webhook url 或使用 MS Flow 使用 powershell 发送消息。但是我想在消息 中提及机器人(例如@mybothandle)所以机器人开始自己提问,而不是要求用户开始对话(通过手动提及机器人)但找不到路提一下。
欢迎您提出建议。

最佳答案

基本上,您希望在特定时间点(例如 24 小时后)直接向用户发送消息。我正在几个不同的机器人中这样做,所以这绝对是可能的。 Wajeed 在对您的问题的评论中发送的链接正是您所需要的 - 当用户与您的机器人交互时,您需要保存重要信息,例如对话 ID、对话类型、服务 URL 以及收件人和发件人信息。例如,您可以将其存储在数据库中,然后您实际上可以拥有一个完全独立的应用程序来进行调用,就好像它是您的机器人一样。例如,在我的机器人中,我将机器人托管在普通主机(例如 Azure 网站)中,但随后有一个 Azure 函数发送消息,例如,24 小时后。它只是在用户看来就像是来自机器人的消息,就像正常一样。

你还需要你的机器人的 Microsoft 应用程序 ID 和应用程序密码,你应该已经有了(如果没有,它在 Azure 门户中)。

在您的“发送”应用程序中,您将需要创建一个 Microsoft 实例。 Bot.Connector.ConnectorClient,如下所示:

var Connector = new ConnectorClient(serviceUrl, microsoftAppId: credentialProvider.AppId, microsoftAppPassword: credentialProvider.Password);

您还需要“信任”您正在调用的服务 URL,如下所示:
MicrosoftAppCredentials.TrustServiceUrl(serviceURL);

然后你创建一个 Microsoft.Bot.Schema.Activity 的实例,设置所需的属性,并通过你创建的连接器发送它:
 var activity = Activity.CreateMessageActivity();

activity.From = new ChannelAccount([FromId], [FromName];
activity.Recipient = new ChannelAccount([ToId], [ToName]);
activity.Conversation = new ConversationAccount(false, [ConversationType], [ConversationId]);
activity.Conversation.Id = [ConversationId];

activity.Text = "whatever you want to send from the bot...";

Connector.Conversations.SendToConversationAsync((activity as Activity)).Wait();

方括号中的所有项目都是您从用户与机器人的初始对话中获得的内容,除了 From 和 To 被切换(当用户向您的机器人发送消息时,用户是 FROM 而您的机器人是TO,当机器人发送时,您可以切换它们。

希望有帮助

关于botframework - 以编程方式向 Microsoft Teams 中的机器人发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59370644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com