繁体   English   中英

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

[英]Programmatically sending a message to a bot in Microsoft Teams

我创建了一个主动机器人,当用户开始与机器人对话时,它基本上会向用户提出某些问题。 该机器人部署在 Microsoft Teams 环境中。 有什么方法可以向频道中的机器人发送自动消息? 我知道可以通过使用特定团队公开的 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,当机器人发送时,您可以切换它们。

希望有帮助

对于所有未来访问者,Microsoft Graph API(测试版)现在提供了一种使用以下端点发送消息和提及机器人/用户的方法:

 https://graph.microsoft.com/beta/teams/{group-id-for-teams}/channels/{channel-id}/messages

方法: POST

身体

"body": {
    "contentType": "html",
    "content": "Hello World <at id=\"0\">standupbot</at>"
  },
  "mentions": [
    {
      "id": 0,
      "mentionText": "StandupBot",
      "mentioned": {
        "application": {
                            "id": "[my-bot-id]",
                            "displayName": "StandupBot",
                            "applicationIdentityType": "bot"
                        }
      }
    }
  ]
}

但是,有一个 bot 在收到消息时没有响应的错误: Bot is not respond to @Mention when sent message using Graph API

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM