LANG SELRCT

コードを書く場所についてはこちら

2017年11月18日土曜日

Slack BOTで投稿に応答する



bot@と送るとhelloと返ってくるBOTをコードで実現する例です

コードを使わずに実現する方法は明日書きます
Customize Slack > Slackbot

  1. Google Apps Scriptで応答用のアプリケーションを作る
  2. Slack側の設定をする


1. Google Apps Scriptで応答用のアプリケーションを作る


コード.gsを書いて保存する

コード.gs
var TOKEN = "取得したtoken"
var POST_URL = 'https://slack.com/api/chat.postMessage';

function doPost(e) {
  var payload = {
    token: TOKEN,
    channel: '#general',
    text: "hello",
    icon_emoji: ':sunny:',
    username: 'hello bot'
  };
  var params = {
    'method': 'post',
    'payload': payload
  };
  UrlFetchApp.fetch(POST_URL, params);
}
意訳.gs
取得したtokenを設定する
メッセージを送るurlを設定する

この機能は以下を実行する
payloadのデータを作る
取得したtokenを設定
投稿するchannelを設定
投稿するtextを設定
アイコンの絵文字を設定
usernameを設定

paramsのデータを作る
methodをpostに設定
payloadのデータを設定

paramsを付けてslackのAPIをたたく




公開>ウェブアプリケーションとして導入...をクリックする



プロジェクトバージョン:説明を入力(例ではfirst version)
次のユーザとしてアプリケーションを実行:自分
アプリケーションにアクセスできるユーザー:全員(匿名ユーザーを含む)


許可を確認をクリックする




アカウントを選択する


許可をクリックする


現在のウェブアプリケーションのURLを
Slack側の設定のIntegration SettingsのURLに入力する




2. Slack側の設定をする(Outgoing Webhookの設定)


左サイドのexpand_moreメニューを開いてManage appsをクリック



開いたページで
①Custom Integrationsをクリック
②SearchボックスでOutgoing WebHooksを検索
③検索結果からOutgoing WebHooksを選択


Add Configurationをクリック



Add Outgoing WebHooks integrationをクリック


Integration Settingsで
Channel #general
Trigger Word(s) hello
URL(s)に WebアプリケーションのURL を貼り付ける


Save Settingsをクリック




試してみる


#generalのchannelで
 bot@ と送る
すると hello が返ってきます



おまけ


JSON.stringify(e)でdoPost(e)の e の中身を見る


コード.gs
var TOKEN = "取得したtoken"
var POST_URL = 'https://slack.com/api/chat.postMessage';

function doPost(e) {
  var json = JSON.stringify(e);
  var payload = {
    token: TOKEN,
    channel: '#general',
    text: json,
    icon_emoji: ':sunny:',
    username: 'hello bot'
  };
  var params = {
    'method': 'post',
    'payload': payload
  };
  UrlFetchApp.fetch(POST_URL, params);
}



おまけ2

@hereは<!here>

bot@ ではなく @here をTrigger Word(s)にする場合
そのまま@hereと指定しても反応しなかったので
調べてみると
<!here>
で反応しました




参考
https://api.slack.com/methods/chat.postMessage

Outgoing WebHooks
https://slack.com/apps/A0F7VRG6Q--web

Basic message formatting
https://api.slack.com/docs/message-formatting