返回

让工作更加轻松——用云函数开发掘金钉钉机器人

前端

自从我加入掘金以来,每天我都会花时间阅读技术文章和在掘金上分享自己的心得体会,我常常需要查看文章点赞和评论消息,而我常用的是钉钉聊天软件,因此,我萌生了这样一个想法:是否能够借助云函数的力量来对接掘金,创建一个钉钉机器人,以便可以自动把我的掘金消息推送到钉钉上呢?

关于钉钉

钉钉是一个商务沟通和协作平台,能够帮助企业员工进行信息分享、文件存储、任务管理、视频会议等,广泛应用于多个行业和组织。钉钉机器人是一个基于钉钉平台的自动消息推送工具,能够帮助开发者方便地将各类信息和服务与钉钉进行无缝集成,提高工作效率和协作能力。

关于掘金

掘金是一个技术内容分享社区,它是一个非常活跃的开发者社区,每天都有大量技术文章、问答和项目分享。作为掘金的一名创作者,我会定期发表技术文章并与社区成员互动,而这些文章的点赞和评论情况,我十分重视。

开发掘金钉钉机器人

现在让我们开始开发掘金钉钉机器人。首先,我们需要一个云函数来处理掘金消息的推送,并将其发送到钉钉机器人。

1. 创建云函数

可以使用云函数控制台、命令行工具或 IDE 来创建云函数。这里我们使用云函数控制台来创建云函数。

  1. 登录云函数控制台。
  2. 点击 "新建函数" 按钮。
  3. 选择触发方式为 "HTTP",函数类型为 "Node.js 16"。
  4. 输入函数名称,例如 "掘金消息推送"。
  5. 点击 "创建" 按钮。

2. 编写云函数代码

在函数代码编辑器中,复制并粘贴以下代码:

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

exports.掘金消息推送 = async (req, res) => {
  // 获取请求体
  const body = req.body;

  // 验证请求合法性
  const signature = req.headers['x-hub-signature'];
  const computedSignature = `sha256=${crypto.createHmac('sha256', process.env.掘金_SECRET).update(JSON.stringify(body)).digest('hex')}`;
  if (signature !== computedSignature) {
    res.status(400).send('Invalid signature');
    return;
  }

  // 解析掘金消息
  const eventType = body.type;
  const data = body.data;

  // 根据事件类型处理消息
  switch (eventType) {
    case 'vote':
      // 处理文章点赞
      const articleTitle = data.title;
      const articleUrl = data.url;
      const likerName = data.user.name;

      // 发送钉钉消息
      await sendDingTalkMessage(`文章《${articleTitle}》收到一个来自${likerName}的点赞!`, articleUrl);
      break;
    case 'comment':
      // 处理文章评论
      const articleTitle = data.title;
      const articleUrl = data.url;
      const commenterName = data.user.name;
      const commentContent = data.content;

      // 发送钉钉消息
      await sendDingTalkMessage(`文章《${articleTitle}》收到一条来自${commenterName}的评论:\n${commentContent}`, articleUrl);
      break;
    default:
      // 其他事件类型,不做处理
      break;
  }

  res.sendStatus(200);
};

// 发送钉钉消息
const sendDingTalkMessage = async (message, url) => {
  // 获取钉钉机器人 webhook
  const webhookUrl = process.env.钉钉_WEBHOOK_URL;

  // 构建钉钉消息体
  const messageBody = {
    msgtype: 'link',
    link: {
      text: message,
      title: '掘金消息推送',
      picUrl: '',
      messageUrl: url,
    },
  };

  // 发送钉钉消息
  await axios.post(webhookUrl, messageBody);
};

3. 部署云函数

点击 "部署" 按钮,将云函数代码部署到服务器上。

4. 配置掘金 webhook

登录掘金,找到 "个人中心" -> "消息通知",在 "webhook 管理" 部分,点击 "添加 webhook" 按钮。

  1. 在 "名称" 字段中,输入一个名称,例如 "掘金钉钉机器人 webhook"。
  2. 在 "URL" 字段中,输入您云函数的 URL。例如:https://<your-region>.functions.cloud.google.com/<your-function-name>
  3. 在 "事件类型" 部分,选择您想要接收的事件类型,例如 "点赞" 和 "评论"。
  4. 点击 "保存" 按钮。

5. 测试掘金钉钉机器人

在掘金上发布一篇文章或评论,然后查看您的钉钉是否收到推送消息。

结语

通过使用云函数,我们可以轻松地将掘金消息推送至钉钉,这样我们就可以及时了解文章点赞和评论情况,及时与社区成员互动,从而提高工作效率和协作能力。希望本教程对您有所帮助,祝您开发愉快!