Slack / Google Cloud Platformと連携してスラッシュコマンドを作成する

Slackの使用頻度がすごく高いです。
フリーランスとして色々なプロジェクトに関わる上で、とても大事なツールなのですが、コミュニケーションを集約しようとすると、やはり色々カスタマイズしたくなる。
やってみると設定が難しかったので、メモしておく。

前提

  • Google Cloud Platform の Cloud Functions 使います。
  • GCPにコードをデプロイして、エンドポイントをSlack上の管理画面に登録。

GCP

まずはこのクイックスタートの通りに。
https://cloud.google.com/sdk/docs/quickstart-macos

前提条件として Python 2.7 が必要です。

・クイックスタートのページからPackageをダウンロードして解凍。
$ ~/Download/google-cloud-sdk/install.sh コマンド実行。
・ インストール場所を聞かれるのでPATHが通っている場所かどうか確認して実行。
・ 多分Googleにログインするよう促されるのでログインする。

↑のアカウントで支払い等も行いますが、最初の1年は無料です。

signup_free

・ ターミナル再起動
$ gcloud --version で確認

プロジェクト作成

  
そして、こちらから から新規プロジェクトを作成。
Screen_Shot_2019-09-01_at_21.45.22

こんな感じでFunctionsをPINしておくと便利です。
pin

ついでにfunctionも作成しておきましょう。
Screen_Shot_2019-09-01_at_22.27.55

function-1という名前が自動でつくはず。
ただ、大事なのはこちらの Function to execute です。
Screen_Shot_2019-09-01_at_22.29.42

反映されるまで少し時間がかかります。
creating

  

プロジェクトの初期設定

bash
1
2
3
4
5
6
7
8
// プロジェクトの保存場所を作成
$ cd ~/Dev/anywhere
$ mkdir slack-test
$ cd slack-test

// Cloud functions 初期設定
// クイックスタートに詳細あり。
$ gcloud init

gcloud init するとどのプロジェクトと関連付けるか聞かれるので、先程作成したプロジェクトを選択しましょう。

これで gcloud deploy コマンドを叩くと、先程作成したfunctionを上書きしてくれます。今回は何もカスタマイズしませんので、せっかく init しましたが、この中で何かすることはありません。次回以降カスタマイズの方法を書いていこうと思います。
書きました。

  
下記のコマンドで設定を確認することができます。

1
$ gcloud config list

Slackとの連携

Slack管理画面でアプリを登録し、Slashコマンドを登録する。
command

先程GCPで作成したfunctionのURLをコピーして、
Request URL に貼り付けます。

endpoint

こんなイメージ。
test

こうすると、Slack上で /post とスラッシュコマンドを入力すれば、Cloud Functionsにリクエストが飛んで、レスポンスがSlack上に表示されるはずです。
Hello World! と表示されたのではないでしょうか。

先程登録したfunctionのこの部分ですね。
Screen_Shot_2019-09-01_at_22.29.42

まずは Google Cloud Platform との基本的な連携でした。
  

何かありましたらコメントをどうぞ

comments powered by Disqus

人気の記事

950 Points チリ出身のギタリストが弾くドラゴンボールZがむちゃくちゃかっこいい…
774 Points Wordpress + Heroku + PostgreSQL + Amazon S3 = ¥0 / 無料でサイト運営
700 Points Rubyのチートシート 変数 / クラス / モジュール
524 Points Rubyのチートシート / アクティブサポート
451 Points 紙のデザイナーがウェブ開発できるようになるまでに必要なこと
435 Points Rails / Google Analyticsのデータを使って分析や管理画面のためのグラフをつくる
323 Points RailsとHerokuでノーティフィケーションをプッシュする / PusherとTurbolinksの兼ね合い
222 Points Rails / RSpec テスト書いたことない メンドクサイ(n´Д`)という時のチートシート
193 Points Rails / Ajaxを使って画面遷移しない一時保存機能をつける
193 Points Protractorでスクレイピングしてみた