CRUD Lab. Tech Blog

ギークス株式会社の沖縄開発拠点CRUDLab. (クラッドラボ)のIT技術(テック)ブログ。kintoneやAngularJSによる開発を行っています。

【kintone】Webhookを使って、新規レコード追加をSlackに通知しよう

0. 目次

1. 概要

ギークス株式会社CRUD Lab.のKUNISADAです。

Webhookを使って、新規レコード追加をSlackに通知しよう

SlackのIncoming Webhookのインテグレーションを使って、kintoneとSlackを連携します。

Incoming Webhookとは、外部のアプリケーションからPOSTするとSlackにメッセージが投稿される仕組みのことです。Slackが発行するIncominng Webhook のURLを通して、JSON形式でメッセージをPOSTします。

新規レコード追加をSlackに通知したい時に便利です! 条件も自由にカスタムできるので、今回は確認フラグを設置して簡単な通知設定を行います。

2. イメージ図

▼新規レコード追加

※ 確認フラグを「ON」に設定

f:id:crud_lab_editor:20160401091750p:plain

▼Slackに通知

※ 確認フラグ「ON」の場合のみ通知する

f:id:crud_lab_editor:20160401091813p:plain

3. 準備

3-1 Incoming Webhookの設定(URLを取得/Slackと連携)

STEP1:incoming Webhookのインテグレーションを設定する

以下のURLにアクセスして、連携したいSlackのチームでログインします。 https://www.slack.com/services/new/incoming-webhook

STEP2:通知したいSlackのチャンネルを選択

f:id:crud_lab_editor:20160401091926p:plain

「Add Incoming WebHooks integration」ボタンを押して次の画面へ

STEP3:WebhookのURLを取得

f:id:crud_lab_editor:20160401091944p:plain

「Save Settings」で変更を保存

3-2 kintoneの設定(フィールド)

フィールド名 フィールドコード 初期値 その他
タイトル タイトル -- --
確認フラグ 確認フラグ 初期値はOFF --

場合に応じて、その他必要項目を設置してください。

※ 実装に必要なフィールドのみ記載しています。

4. 実装

const WEBHOOK_URL = 'https://hooks.slack.com/services/XXXXXXXXXXXXXX'; //ここにコピーしてきたWebhookのURLを挿入

(function () {
    'use strict';

    //新規レコード追加のイベントハンドラー
    kintone.events.on('app.record.create.submit', function(event){

        var rec   = event.record;

        //確認フラグがONの場合に以下の処理を実行
        if(rec['確認フラグ'].value == 'ON'){
            var payload = {
                'text': "新規レコードが追加されました。:「" + rec['タイトル'].value + "」"
            };
            return new kintone.Promise(function(resolve, reject) {        
                kintone.proxy(WEBHOOK_URL, 'POST', {}, payload, function(body, status, headers) {
                    console.log(status, body);            
                    resolve(event);
                });
            }, function(err) {
                reject('データの取得に失敗しました。');
                return;
            });
        }

        return event;
    });
})();

5. 参考URL

こちらのサイトを参考にしました! cybozudev.zendesk.com

参考サイトは、プロセスのステータスが変更になった際に、Slackに通知される仕組みになっています。

cybozudev.zendesk.com

逆に、Slackの「Outgoing Webhooks」を利用することで、Slackからkintoneへレコードを登録することもできるので、こちらも要チェックですね。

6. まとめ

Incoming Webhookを使えば、様々なタイミングでSlackに通知することが可能です。 実装も極めてシンプルなので、新規レコード追加以外の場合も柔軟にカスタムすることができるので、とても便利です。