LoginSignup
0
2

More than 3 years have passed since last update.

Trello投稿時に自社システムに通知する

Posted at

タスク管理ツールとして大変メジャーなTrelloですが、自社システムと連携したい場合がありますよね。

この記事では以下について実装方法を説明します。
・Trelloでコメントが投稿されたら自社システムに通知

機能を実装するために「Trello Webhook API」を使用します。
Webhookとは何ぞや、と普段思っている方もいるかもしれませんが、改めて調べてみたら
「Webアプリケーションでイベントが実行された際、外部サービスにHTTP で通知する仕組み」
とヒットしました。

ここで言う「Webアプリケーション」はTrelloのことで「外部サービス」は自社システムですね。
ですからTrelloが提供しているWebhook APIが必要なのです。
使うまでの手順を優しく説明します。

1.https://trello.com/app-key にアクセス。

2.「Trello 開発契約」を確認し、「APIキーを表示」をクリック。
image.png

3.キーが表示される(このキーは後の手順で使用するため、メモしておいてください)
この画面で「Token」のリンクをクリック。
image.png

4.アクセス許可画面が表示されるので「許可」をクリック。
image.png

5.トークンが発行される(このトークンは後の手順で使用するため、メモしておいてください)
image.png

6.コメント投稿されたら自社システムに通知したいボードIDを取得します。
コマンドプロンプトやターミナルで以下のコマンドを実行しましょう。

curl "https://trello.com/1/members/[ユーザ名]/boards?key=[3で表示されたキー]&token=[5で表示されたトークン]&fields=name"

image.png
文字化けしてしまう場合は以下の方法で文字コードを変更してあげましょう。
https://qiita.com/user0/items/a9116acc7bd7b70ecfb0

「Trelloへようこそ」「テスト」という2つのボードが表示されました。
ここでは例として「テスト」のボードにしましょう。
「テスト」のidをコピーしておきます。

7.次にWebhookを生成します。
ここでもコマンドプロンプトやターミナルで以下のコマンドを実行しましょう。

curl -X POST "https://api.trello.com/1/token/[5で表示されたトークン]/webhooks?key=[3で表示されたキー]&callbackURL=[コールバックURL]&idModel=[でコピーしたid]&description=[Webhookの説明]"

image.png

コールバックURLはTrelloでアクションがあった場合に通知してほしいURLを設定してください。
ちゃんとステータスコード200を返すURLにしてください。

8.正常に生成されたらWebhookを確認してあげましょう。
ブラウザで以下のURLにアクセスすると、正常に生成されていることがわかります。
https://trello.com/1/tokens/[5で表示されたトークン]/webhooks/
image.png

これで準備は整いました。
該当のボードにて何かアクションがあった際にコールバックURLにリアルタイムで通知がされるようになりました。
あとは自社システム側の処理ですね。

Trelloでアクションがあるとこんな感じのデータが飛んできますす。
image.png

この各項目に関するリファレンスがなかったので今度時間がある際にまとめたいと思います。
ちょっと解析していただければわかると思います。
PHPの処理側はこんな感じ。
POSTリクエストでかつTrelloからの通知の場合のみ動作するようにしました。

    function index(){

        // trelloからのアクセスのみ受け付ける
        if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_SERVER['HTTP_X_TRELLO_WEBHOOK'])) {
            $body = file_get_contents("php://input");

            if (!empty($body)) {
                $bodyArray = json_decode($body, true);

                // 登録されたコメント
                // コメント編集時にはここには入らないのでスルー
                if(!empty($bodyArray['action']['data']['text'])){

                    $operatorName = $bodyArray['action']['display']['entities']['memberCreator']['text']; // コメントした人
                    $comment = $bodyArray['action']['data']['text']; // 投稿されたコメント
                    $boardName = $bodyArray['model']['name']; // ボード名
                    $title = $bodyArray['action']['data']['card']['name']; // カードのタイトル
                    $cardId = $bodyArray['action']['data']['card']['id']; // カードID

                    // 以降の処理はご自由に~


                }
            }
        }
    }

以上になります。
手順に沿ってやっていただければすぐ実装できますのでぜひやってみてくださいね。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2