我的机器人与docs quickstart中演示的机器人相同 . 无论用户说什么(现在),它都会重复 .
它目前在本地运行,并使用ngrok进行曝光 . 我已经使用Microsoft Bot Framework注册了bot .
我已经在Microsoft Bot Framework中配置了Microsoft Teams Channels ,并且我将我的机器人安装到了团队中 . 我的机器人可以从团队用户接收消息 .
目前,机器人只是重复它收到的任何回复给用户,但 what I want it to do is post to a Microsoft Teams channel . 我希望它发布到Teams Channels - not a user - 而不是由用户首先提示 . 因此,例如,给定某个条件(例如,由某些事件触发,例如时间,拉取请求等),它在 Channels 中发布消息 .
我已经阅读了有关sending proactive messages的文档,并且我认为为了向团队 Channels 发送消息,机器人需要知道用户的"address" . 此信息存储在 session.message.address
对象中,它从当前对话中获取 . 但是,在我的情况下,我不想回复用户,我想主动在 Channels 中发帖 .
那么,如何为Teams Channels 永久设置必要的凭证/地址/会话数据?
我已经研究过的事情:
-
Webhooks . 我在我的Teams Channels 中配置了一个webhook,我可以使用
curl
轻松地发送消息(使用webhook url) . 因此,我可以向团队 Channels 发送一个简单的消息,只需一个网址(不需要身份验证),但我'm not sure how I' d将此网址发送到我的机器人 . -
How do we maintain different session for different users in Microsoft Bot Framework?我不确定这里的答案是否回答了我的问题 . 我的问题是机器人正在启动'conversation',而不是团队用户,因此我需要能够自己设置会话数据,以便机器人知道去哪里 .
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);
});
2 回答
希望这对你有用..下面的代码在开始聊天之前主动将消息发送到会话 .
这绝对是可能的 . 我们将这些主动消息称为主动消息,并且可以主动向用户和 Channels 发送消息 .
对于后者,请参阅https://github.com/OfficeDev/microsoft-teams-sample-complete-node处的示例,特别是此文件ProactiveMsgToChannelDialog.ts .
要将主动消息发送到 Channels ,您需要使用Microsoft Teams SDK(如这些示例所示) .
最后但并非最不重要的是,您需要将机器人添加到团队中,以便向团队中的某个渠道发送消息,这需要清单 .