kikki's tech note

技術ブログです。UnityやSpine、MS、Javaなど技術色々について解説しています。

SlackサービスとTrelloサービスの連携でタスク起票を楽に! -trello連携編-

本章では、前章に引き続き、SlackとTrelloを連携させるためにHubotの設定を行います。kikki.hatenablog.com

Trelloの設定

開発者用APIのKeyを取得

Trelloで開発者向けのAPIとして、以下サイトからKeyとSecretを予め取得します。
https://trello.com/app-key
f:id:kikkisnrdec:20150828122444p:plain

Tokenを取得するために以下URLにアクセスし、外部サービスのアクセス承認を取ります。
https://trello.com/1/authorize?key=【上述で取得したKeyの値】&name=&expiration=never&response_type=token&scope=read,write
f:id:kikkisnrdec:20150828123028p:plain

以下図のように、承認後に表示された、Tokenをメモしておきます。
f:id:kikkisnrdec:20150828123212p:plain

環境変数の設定

TrelloをHubotで利用するために、Trelloの環境変数を設定します。

export HUBOT_TRELLO_KEY=【前項で取得したKey】
export HUBOT_TRELLO_TOKEN=【前項で取得したToken】

そしてタスク起票する先のTrelloのcardを指定します。
Trelloでは、全体の構成として以下のようになっています。
f:id:kikkisnrdec:20150828124229p:plain
Trelloでは、タスク=Cardであるため、タスクの起票先としてListの固有値、IDを指定する必要があります。
そのため、ListのIDを取得し、環境変数に設定します。

curl -s -G "https://trello.com/1/members/me/boards?key=【前項で取得したKey&token=【前項で取得したToken&fields=name"
curl -s -G "https://trello.com/1/boards/【上記コマンドで確認したBoardの一つのID/lists?key=【前項で取得したKey&token=【前項で取得したToken&fields=name"
export HUBOT_TRELLO_LIST=【上記コマンドで確認したListの一つのID】

Trelloのパッケージをインストール

Trelloを扱えるNodeのパッケージをインストールします。

sudo npm install node-trello --save

Hubotのスクリプトを編集

Hubotで実行するスクリプトを追加します。
[scripts/trello.coffee]

Trello = require("node-trello")

module.exports = (robot) ->
    robot.hear /^todo (.*)/i, (msg) ->
        title = "#{msg.match[1]}"
        trello = new Trello(process.env.HUBOT_TRELLO_KEY, process.env.HUBOT_TRELLO_TOKEN)
        trello.post "/1/cards", {name: title, idList: process.env.HUBOT_TRELLO_LIST}, (err, data) ->
            if err
                msg.send "起票に失敗しました[#{err}]"
                return
            msg.send "[#{title}]をTrelloに起票しました"

実行

以下のメッセージをSlack上に打つと、Trelloにタスクが起票されます。

todo 【タスク起票時のタイトル】

筆休め

本章では、SlackとTrelloの連携設定の最終章でTrelloの設定を行いました。Slackを起点として、様々なサービスへの介在が行えるので、色々とカスタマイズしてみてください。

以上、「SlackサービスとTrelloサービスの連携でタスク起票を楽に! -trello連携編-」でした。


※無断転載禁止 Copyright (C) kikkisnrdec All Rights Reserved.