利用webhook实现发送通知到Slack

haruka发表于:2018年07月06日 11:29:04更新于:2021年10月20日 17:03:32

概要

最近办公交流应用 Slack在各团队里大行其道,非常火热。 今天我们就来说说怎么用他的incoming-webhook来做一些同步通知。

从kintone发送通知给Slack

我们先来看看这种incoming-webhook来发送通知的优势

  • 团队成员可以一次收到相同的通知

  • 您可以为每个频道自行选择开/关通知

  • 可以通过Slack手机端来接受通知

kintone 准备

准备一个app,添加一个字段,字段id为"aaa"。 同时启用流程管理。

Image53.pngImage57.png

Slack端的准备

首先创建一个频道(kintone_demo), 用来接收通知信息。

Image54.png

创建Incoming Webhook

通过 Incoming Webhooks可以很轻松的实现将信息实时传输到Slack。 有两种方法可以使用Slack的API发送消息。

  • Web API

  • Incoming Webhook

使用Web API的话,就必须所有的用户都获取API令牌。所以这次我先介绍如何使用Incoming Webhook。

打开Incoming Webhook Integration页面。
https://www.slack.com/services/new/incoming-webhook
Image55.png

选择要向其发送消息的频道,然后点击「Add Incoming WebHooks Integration」按钮,就进入了"Incoming WebHooks"的配置画面。

Image56.png

创建后,Webhook的URL将显示在页面上。记下这个url,稍后我们需要使用到他。当然你还可以继续配置自定义机器人名称和图标等等。Slack那边的工作现已完成。

kintone的 JavaScript自定义

接下来,我们是在kintone端实现通知的部分。在本文中,我们将简单地通过JS自定义实现通知,当然您也可以开发插件。另请参阅此处了解插件的开发。

kintone插件开发
https://cybozudev.kf5.com/hc/kb/article/1000664/

使用SendCloud API来制作发送邮件的插件

https://cybozudev.kf5.com/hc/kb/article/1126931/

post2slack.js

(function() {
    "use strict";
    kintone.events.on("app.record.detail.process.proceed", function(e) {
        if (e.nextStatus.value == '完成') {
            var thisUrl = "https://*******.cybozu.com/k/" + kintone.app.getId() + "/show#record=" + kintone.app.record.getId();
            var webhookUrl = 'https://hooks.slack.com/services/*****************';
            var payload = {
                "text": "记录<" + thisUrl + "|「" + e.record.aaa.value + "」>状态已经完成!",
				"channel": "kintone_demo"
            };
            return new kintone.Promise(function(resolve, reject) {
                kintone.proxy(webhookUrl, 'POST', {"Content-Type": "application/json"}, payload, function(body, status, headers) {
                    console.log(status, body);            
                    resolve(e);
                });
            });
        }
    });
})();

首先,我绑定了app.record.detail.process.proceed事件,以便在更改流程管理状态时可以进行处理。状态完成后,kintone.proxy将向Slack的Incoming Webhook URL发送POST请求。(星号部分请按照自己环境的实际配置输入哦)

Slack的Incoming Webhook的详细用法在以下文档中描述。
https://api.slack.com/incoming-webhooks
0015b7a3835778bdfd79b54785c16a9

最后

怎么样?通过使用Incoming Webhook,您可以轻松地向Slack发送消息。能够通过将通知整合到Slack来灵活地管理多个服务。此外,通过结合Outgoing Webhook和kintone的REST API,如果您使用Slack回复机器人消息,您还可以进行双向协作,例如继续使用kintone的记录等等。

国内还有一些其他类Slack的协同办公的im工具,像倍洽,Grouk等。基本也都有incoming webhook的通知组件,设置方法也大同小异, 也都能和我们的kintone完成对接。如果有遇到问题的小伙伴可以给我们提问哦。