LoginSignup
3
1

More than 1 year has passed since last update.

CO2濃度が高くなったからGravioからLINE WORKSに「換気してね」と送ってみた

Last updated at Posted at 2021-12-02

以前、GravioからとLINEやSlackにメッセージを送る記事は書いてみましたが、業務で使うのにはLINE WORKSを使ってる会社も多いって聞いたので、LINE WORKSにもメッセージを送ってみることにします。

TL;DR

  • GravioでCO2センサーの値を拾います
  • アクション内のHTTPRequestコンポーネントをつかってLINE WORKSに「換気してね」とポストするAPIを呼び出します。
  • CO2濃度が1000ppmを超えていたらトリガーでアクションを実行します

使用環境

  • Raspberry Pi 4 Model B w/4GB RAM
  • Ubuntu Server 20.04.3 LTS
  • Gravio HubKit v4.4.0-6902
  • Gravio Studio v4.4.4247.0
  • Gracio CO2センサー (Gravio Standardの契約が必要)
  • LINE WORKS

事前準備

手順

LINE WORKSでの設定

APIのトークンを発行する

LINE WORKSのDeveloper Consoleにログインします。
今回はAPIの2.0は使わずに従来バージョンを使いますので、「API」をクリックします。
image.png

まずはAPI IDを発行します。
image.png

API IDはコピーしてどこかに保存しておいてください。
image.png

次にServer API Consumer Keyを発行します。Service API Consumer Keyではないので要注意。
image.png
APIの利用範囲を指定します。今回、とりあえずすべてチェックしました。投稿だけであれば「追加」だけでいいと思います。
image.png
Tokenの設定をします。有効期限はとりあえず「365日」、自動延長も「はい」を指定しておきます。これも用途に応じて適切に指定してくださいね。

image.png

これまたKeyをコピーしてどこかに保存しておいてください。
image.png

最後にServer List(固定IPタイプ)を使います。Gravioでは現時点ではこっちしか使えません。ID登録タイプと間違えないようにしてください。
image.png

サーバー名に「Gravio」、Keyはさきほど生成したもの、IPには準備段階で取得しておいたパブリックなIPアドレスを指定してトークンを発行します。
image.png

Tokenが発行されますので、これもコピーしてどこかに保存しておいてください。
image.png

Botを作成する

Botメニューに移動します。
image.png

Botの設定をします。
プロフィール画像は適当に指定しておくとわかりやすいです。
Bot名、説明もわかりやすく入力しておきます。
API Interfaceには「従来のAPI」を選択します。
Callback URLには「Off」を選択します。Gravioの場合、ローカルネットワークに設置することが多くコールバックを受けることができないためです。そもそもGravio自身もコールバックを受ける仕組みがないですしね。
「複数人のトークルームに招待可」もチェックしておきます。ここは運用に応じて決めてください。
最後に管理者を決めて保存します。
image.png

できました。Bot Noをどこかに保存しておきます。
image.png

Developer Consoleはここまでです。

Botを追加する

LINE WORKSのサイトにログインして、管理者画面に移動します。
image.png

Botの登録及び管理者画面に移動します。
image.png

「Bot追加」をクリックします。
image.png

先ほどDeveloper Consoleで作成したBotが一覧に出てくるので、「追加」をクリックします。

image.png

前の画面に戻って追加したBotの詳細を表示します。公開設定が「非公開」になっています。「修正」ボタンをクリックして変更します。
image.png

「公開設定」をチェックして簡単にトークルームに追加できるようにしておきます。
image.png

あとから戻ってくるので、管理者画面はそのまま残しておいてください。

トークルームを作成する

LINE WORKSに戻って、通知を送る先のトークルームを作成します。
image.png

通知に入れたいメンバーと上で追加したBotを選択して「OK」をクリックします。
image.png

トークルームができました。
image.png

トークルームIDが必要なのでこれから取得します。いろいろやり方はあるようですが、管理者権限があれば一番簡単な方法を紹介しておきます。

まず、トークルーム上でなにかトークします。
image.png

ここで開いておいた管理者画面に移動し、「監査」「トーク」を開きます。ここにはトークルームで発言した内容が表示されていると思いますので、その一番右に表示されている「トークルームID」をメモしておきます。

image.png

ちなみに、監査ログに表示されるまで少しタイムラグがあります。今回の場合、ポストしてから10分以内には表示されました。

LINE WORKSで取っておいたデータの一覧

さて、ここまでで準備が整いました。長かったですが、最終的にGravioでの投稿に必要となる情報は以下の情報です。
取り忘れてるものがないかチェックしておいてください。

  • API ID
  • Server API Consumer Key
  • Server Token
  • Bot No.
  • トークルームID

Gravioでの設定

アクションを作成する

アクションは簡単です。HTTP Requestコンポーネントを配置します。
プロパティには以下のように指定します。

プロパティ
HTTP メソッド POST
URL https://apis.worksmobile.com/r/<APIID>/message/v1/bot/<BotNo>/message/push
APIID、BotNoはそれぞれLINE WORKSでBotを登録した際に取得したAPI ID、Bot No
認証方式 Bearer認証
トークン LINE WORKSのServer Listに追加した際に取得したToken

Pre Mappingsではヘッダとボディを次のように指定します。Server API Consumer Key、トークルームIDにはそれぞれLINE WORKSで取得した値を指定します。

cp.Headers = {"consumerKey": "<Server API Consumer Key>"}
cv.Payload = {
  "roomId": "<トークルームID>",
  "content": {
    "type": "text",
    "text": "CO2が" + tv.Data + "ppmです。換気しましょう。"
  }
}

image.png

実行してみましょう。トークルームにメッセージがポストされましたね!
image.png

トリガーで連携

さて、ここまできたらあとは簡単です。トリガーを作成して、CO2センサーの値が1000ppmを超えたときに上で作ったアクションを実行するように指定します。

CO2が1000ppmを下回るまでずっとメッセージが来るのはうざいので、「閾値によるトリガーを利用」をチェックしておきます。こうしておくと、1000ppmを超えたときに一度アクションが実行されるだけで、あとは値が1000ppmを下回るまではアクションが実行されません。
image.png

作成したら有効にするのを忘れないでくださいね。
image.png

結果の確認

CO2センサーに息を吹きかけてみましょう。どうですか?トークルームに値付きでメッセージが投稿されましたか?image.png

だめなら設定を見直してみましょうね。

ポイント

  • LINE WORKSのAPI Tokenを取得するときにServer(固定IP)を選ぶ
    • つまり、DHCPでPublic IPが変わってしまったら動かなくなるので注意!
  • Gravioのトリガーでは「閾値によるトリガーを利用」をチェックしておく

参考

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