LoginSignup
2
1

More than 3 years have passed since last update.

Slackの今日のチャンネル内容をLINEに送信する(Google Cloud Functions)

Posted at

表題の内容を試す機会があったので、作業内容とサンプルコードを紹介したい思います。

環境

  • Slack: フリープランでOK
  • LINE
  • GCP Coud Functions
  • 実行環境はNode.js

*各サービスのドキュメントはすでにネットに豊富にあるので、今回は細かい設定方法の解説を省きます

サービス設定

Slack

slack api 設定

https://api.slack.com/apps
Create New App から新規appを作成。その後以下を設定。

  • Features -> OAuth & Permissions でBot Token Scopesに以下の権限を付与
    channels:history
    chat:write
    commands
    groups:history
    im:history
    mpim:history
    users:read

  • Features -> OAuth & Permissions -> OAuth Tokens & Redirect URLs -> Install to Workspaceボタンをクリック
    Bot User OAuth Access Token [xoxb-**...] を取得。後ほど利用する

  • Settings -> Basic Information -> Signing Secretをshowで一時的に表示してメモ。後ほど利用する

情報を取得したいチャンネルのidを取得する

こちらの記事が参考になると思います。

対象チャンネルに上記で作成したappを追加

slackの チャンネル詳細->その他 にあります
image.png

LINE

LINE Notifyを使用します。トークンを発行し、送信先トークルームにLINE notifyを招待します。
こちらの記事が参考になると思います。

Cloud Functions実装

デプロイの手法は複数あると思いますが、webインターフェースを用いた手法だとこちらが参考になると思います。

コードはこちらのリポジトリに置きました。
https://github.com/hisa-shimoji/SlackTodayCh2Line

今回のデプロイの際は

  • トリガーのタイプ: http
  • 認証: "認証が必要"

を選択します。ランタイム環境変数に以下の値を設定します。

変数名 解説
SLK_BOT_TOKEN slack設定時に確認した Bot User OAuth Access Token [xoxb-**...] の値
SLK_BOT_SIGN_SECRET slack設定時に確認したSigning Secretの値
SLK_BOT_MONITOR_CHANNEL slack設定時に確認した対象チャンネルのid
L_NOTIFY_KEY LINE notifyのトークン
L_MSG_PREFIX LINEメッセージの前に付加する文字列 改行は\nで設定 必要なければ空白に
L_MSG_SUFFIX LINEメッセージの後に付加する文字列 改行は\nで設定 必要なければ空白に

実行テスト

デプロイ後、webインターフェースから関数をテストするでテストできます。
image.png

成功すると該当slackチャンネルの当日分のメッセージ(発言者と内容)がLINEへ送信されます
image.png

定期実行

GCP Cloud Schedulerを用いて定期実行が可能です。 こちらの記事が参考になると思います。

参考情報

https://cloud.google.com/functions/docs/quickstart-nodejs?hl=ja
https://qiita.com/YumaInaura/items/0c4f4adb33eb21032c08
https://qiita.com/iitenkida7/items/576a8226ba6584864d95
https://qiita.com/nirasan/items/0d9aad7da324ecd789f4

2
1
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
2
1