我怎样才能让我的机器人向Microsoft Teams频道发送消息?

我有一个与文档快速入门中演示的相同的机器人。 它反复无论用户说(现在)。

它目前正在本地运行,并且暴露在非法之中。 我已经注册了Bot Bot和Microsoft Bot Framework。

我已经在Microsoft Bot框架中configuration了Microsoft Teams频道,并且已经将我的机器人加载到了团队中。 我的机器人可以接收来自团队用户的消息。

目前,僵尸程序只是重复收到用户的任何内容,但我想要的是发布到Microsoft Teams频道 。 我希望它发布到团队频道 – 而不是用户 – 没有被用户首先提示。 因此,举例来说,给定一定条件(例如,由诸如一天中的某个事件,拉取请求等触发),它在信道中发布消息。

我已阅读关于发送主动消息的文档,并且我收集到为了向团队频道发送消息,该bot需要知道用户的“地址”。 该信息存储在session.message.address对象中,并从当前对话中获取。 然而,在我的情况下,我没有一个“当前的保护”,因为我不想只是回应用户,我想主动在频道上发帖。

那么,我如何永久性地为团队频道设置必要的凭证/地址/会话数据呢?

我看过的东西:

  • networking挂接。 我在我的团队频道中configuration了一个webhook,我可以使用curl轻松地发送消息(使用webhook url)。 所以我可以发送一个简单的消息,只有一个url(不需要身份validation),简单的消息队通道,但我不知道如何将这个URL到我的机器人。

  • 我们如何为Microsoft Bot Framework中的不同用户维护不同的会话? 我不确定这里的答案是否回答我的问题。 我的问题是,机器人正在发起'对话',而不是一个团队用户,所以我需要能够自己设置会话数据,所以机器人知道去哪里。

App.js:

 require('dotenv').config(); var restify = require('restify'); var builder = require('botbuilder'); // Setup Restify Server var server = restify.createServer(); server.listen(process.env.port || process.env.PORT || 3978, function () { console.log('%s listening to %s', server.name, server.url); }); // Create chat connector for communicating with the Bot Framework Service var connector = new builder.ChatConnector({ appId: process.env.MICROSOFT_APP_ID, appPassword: process.env.MICROSOFT_APP_PASSWORD }); // Listen for messages from users server.post('/api/messages', connector.listen()); // Receive messages from the user and respond by echoing each message back (prefixed with 'You said:') var bot = new builder.UniversalBot(connector, function (session) { session.send("You said: %s", session.message.text); }); 

这绝对是可能的。 我们将这些主动消息称为主动消息,并有可能主动向消息用户和渠道发送消息。

对于后者,请参阅https://github.com/OfficeDev/microsoft-teams-sample-complete-node上的示例,特别是此文件ProactiveMsgToChannelDialog.ts

要将主动消息发送到频道,您需要使用Microsoft Teams SDK(如同这些示例一样)。

最后但并非最不重要的是,您需要将该bot添加到团队中,以便将消息发送到团队中的某个渠道,这需要一个清单。