Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9038

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

$
0
0

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

環境

  • 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_TOKENslack設定時に確認した Bot User OAuth Access Token [xoxb-**...] の値
SLK_BOT_SIGN_SECRETslack設定時に確認したSigning Secretの値
SLK_BOT_MONITOR_CHANNELslack設定時に確認した対象チャンネルのid
L_NOTIFY_KEYLINE notifyのトークン
L_MSG_PREFIXLINEメッセージの前に付加する文字列 改行は\nで設定 必要なければ空白に
L_MSG_SUFFIXLINEメッセージの後に付加する文字列 改行は\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


Viewing all articles
Browse latest Browse all 9038

Trending Articles