Skip to the content.

飞书平台和 Teams 的集成

我们上篇文章说了如何把微信公众号的消息转发给 Teams,有很多读者让我再讲讲 Teams 和 飞书平台的整合。

可能有些用户还不知道飞书是什么,简单的说,飞书是一个企业协作与管理平台,和微软的整套协作平台有点类似,有很多企业使用。

那我们就来看看如何把从 teams 里用webhook获得消息转发到飞书平台。

通过 webhook 来监听消息

在 Microsoft Teams 中创建一个 outgoing webhook 是非常简单的。

  1. 首先,在 Teams 中打开聊天窗口并找到要在其中创建 outgoing webhook 的频道。

  2. 点击频道的“…”菜单,然后选择“创建 webhook”。

  3. 在弹出的窗口中输入 webhook 的名称和描述。

  4. 点击“创建”按钮。

  5. 新的 webhook 现在已经创建,并显示了一个唯一的 URL。这个 URL 就是你的 outgoing webhook 的地址。

  6. 现在你可以在这个地址上创建一个 server,这个server监听这个地址,当有人在频道里发送消息时,teams会发送请求到这个地址上,这样你就可以在server里面进行相应的操作了。

注意: 请确保在创建 outgoing webhook 时记录并保存 webhook URL,因为它只会显示一次。

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

app.post('/teams-webhook', (req, res) => {
  const message = req.body.text;
  console.log(`Received message: ${message}`);
  
  // Do something with the message here, such as sending it to a database or an external service
  
  res.status(200).end();
});

app.listen(3000, () => {
  console.log('Server listening on port 3000.');
});

这段代码实现了一个简单的 Express 服务器,监听端口 3000。当 Teams 发送消息到你的 outgoing webhook URL 时,服务器会接收到一个 HTTP POST 请求,其中包含消息的文本。该代码将消息打印到控制台,后面我们就可以把这个消息文本发送到飞书平台。

发送消息到飞书平台

首先我们现需要注册一个账号,在飞书开发者平台申请并获取 AppId 和 AppSecret 的步骤如下:

  1. 打开飞书开发者平台官网(https://open.feishu.cn/),点击右上角的 “登录/注册” 按钮进行登录。

  2. 登录后点击左上角的 “应用管理”,进入应用管理页面。

  3. 点击“创建应用”按钮,填写应用名称和简介,并选择应用类型。

  4. 点击“创建”按钮,即可获取 AppId 和 AppSecret。

  5. 在应用详情页面可以看到APP ID 和APP Secret,且在审核通过后可以使用。

const axios = require('axios');
const qs = require('qs');

const AppId = 'your_app_id';
const AppSecret = 'your_app_secret';

async function sendMessage() {
    // 获取 access_token
    const tokenRes = await axios.post(
        'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/',
        qs.stringify({
            app_id: AppId,
            app_secret: AppSecret
        })
    );
    const access_token = tokenRes.data.tenant_access_token;

    // 发送消息
    const messageRes = await axios.post(
        'https://open.feishu.cn/open-apis/message/v4/send/',
        {
            open_id: 'your_open_id',
            msg_type: 'text',
            content: {
                text: '我们从 teams 里获取的消息'
            }
        },
        {
            headers: {
                'Content-Type': 'application/json',
                'Authorization': `Bearer ${access_token}`
            }
        }
    );
    console.log(messageRes.data);
}

sendMessage();

首先,通过 app_id 和 app_secret 获取访问令牌(access_token)。使用 tenant_access_token 接口,并使用 POST 方法将 app_id 和 app_secret 发送到该接口。服务器会返回一个 JSON 对象,其中包含 access_token。

之后,使用 send 接口来发送消息。将 access_token 加入到请求头中,并在请求体中传递消息所需的数据,包括 open_id,消息类型和消息内容。

最后,使用 POST 方法将请求发送到 send 接口。服务器会返回一个 JSON 对象,其中包含发送结果。

请注意,在实际使用中,需要替换示例代码中的 AppId 和 AppSecret 为您自己的值,并且还需要替换 open_id 为您要发送消息的目标用户的 open_id。

Written on August 3, 2022