Help us understand the problem. What is going on with this article?

SlackのOutgoing Webhooksを使って投稿に反応するbotを作る

More than 3 years have passed since last update.

概要

Slack apiのOutgoing Webhooksを使って投稿を取得して、それに反応するbotを作る。

Outgoing Webhooksの設定

Outgoing Webhooksは、特定の投稿があった時、SlackからPOSTでその投稿データを送信し、それに対して特定の形式でjsonでレスポンスを返すと投稿してくれるというもの。

Integrationの設定

https://your-team.slack.com/apps/manage/custom-integrations
この辺から新しくIntegrationを作成。

  • Channel :投稿を取得するチャンネル
  • Trigger Word(s) :Outgoing Webhooksを呼び出す単語
  • URL(s) :POST送信先になるURL
  • Customize Name :レスポンスを返す際の名前
  • Customize Icon :レスポンスを返す際のアイコン

それぞれ設定。
TokenはPOST送信される際にこのIntegrationから送信されたかを確認するためのトークン。

受信側

POSTに対してJSONで返せば良いので、基本的にApiを作るような感覚で実装できる。

POST送信されるデータ形式は以下

token=XXXXXXXXXXXXXXXXXX
team_id=T0001
team_domain=example
channel_id=C2147483705
channel_name=test
timestamp=1355517523.000005
user_id=U2147483697
user_name=Steve
text=googlebot: What is the air-speed velocity of an unladen swallow?
trigger_word=googlebot:

ごくごく簡単に返事をするだけのものを作るとこんな感じ

json.php
<?php
// 受信文字列取得
if($_POST["user_name"] != "slackbot"){
  $text = "@".$_POST["user_name"]." 呼びましたか?";
  $payload = array("text" => $text);

  echo json_encode($payload);
}

一応slackbotの投稿は撥ねるようにしている。slackbotの投稿によってOutgoing Webhooksで送られるuser_nameは先ほどのIntegrationで設定したCustomize Nameとは関係なくslackbotになるらしい。

デモ

demo.png

やったね!

課題

  • 返答時の「@」がちゃんと返信になってない。
  • ここから何を作ろうか・・・
chike0905
ブロックチェーンを雰囲気で研究しています。
http://chike.xyz
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした