技術情報

ReekohでSigfoxメッセージをSlackにWebhookする

2018.10.04

Reekohとは

Reekohとは、IoTデータをNode-REDのようにハードウェアデバイス / APIをオンラインサービスに接続したり、独自のダッシュボードを構築することができるクラウドサービスです。
ただ、フリーサービスではないので、Reekoh社及び代理店からの提供されるエンタープライズ向けツールです。

ReekohでSigfoxデバイスメッセージをSlackにWebhookする

大まかな流れは下記の通りとなります。

  1. Reekohでパイプラインを作成
  2. SigfoxクラウドでCallbackを作成
  3. SlackでIncoming Webhookを設定

Reekoh Pipeline Studioでパイプラインを作成

細かい操作方法は割愛しますが、作成するパイプラインは下図のようなものとなります。

img-20181004-technical-01.png

左から下表のPluginを配置し、各Pluginを接続しています。

Plugin説明
image.png Sigfox GW SigfoxクラウドからのCallbackを受け取る
image.png Converter 受け取ったデバイスデータをSlack Webhook用JSONに変換する
image.png Webhooks SlackにWebhookする

各Pluginの設定

Sigfox GW

SigfoxクラウドからのCallbackを受け取れるようReekoh社から提供されているPluginです。
特に設定する必要はなく、Saveすると、少し時間をおいて、Callback受信用のIPアドレスが発行されます。(下図赤字のところに表示されるので、この後のSigfoxクラウド側での設定に使います)

img-20181004-technical-02.png

Converter(SigfoxデバイスデータからSlack用JSON)

次にConverterの設定をします。Converter設定のhandler.jsに変換ロジックをJavascriptで入力します。

handler.js
'use strict'

exports.handle = function (data, logger) {
  logger.log(data)
  return Promise.resolve({
    text: 'device=' + data.device + ' payload=' + data.payload,
    icon_emoji: ':globe_with_meridians:',
    username: 'reekoh'
  })
}

ここでは、Promise.resolveのところで、JSON用の連想配列を作っています。
slackのWebhookに投げるには最低{"text":"なんたらかんたら"}というJSONメッセージが必要ですので、
text: 'device=' + data.device + ' payload=' + data.payload,
の一行をいれています。上記のSigfox GWから送られてくるデータ、つまりSigfox Callbackで送るJSONデータは"data.xxx"という形で定義できます。
この場合、Sigfox Callbackでは、

{
 "device": "{device}",
 "payload": "{data}" 
}

と設定されたdeviceとpayloadを指定しています。

Webhook(SlackへWebhook)

ここでは、Webhook URLとして、slackで設定したIncoming WebhookのURLを入力します。

img-20181004-technical-03.png

SigfoxクラウドでCallbackを作成

SigfoxクラウドでのCallbackの基本的な設定方法はこちらを見てください。
その上で、今回の設定例は下表のとおりとなります

項目設定例補足
Url pattern https://xx.xx.xx.xx:8080/data ReekohのSigfox GWのIPアドレスを入れます
Use HTTP Method POST
Body {"device": "{device}","payload": "{data}"} ReekohのConverter Pluginのhandler.jsで使います

SlackでIncoming Wehookを設定

基本的なIncoming Webhookの設定方法はこちらがわかりやすかな。

SlackでWebhookで受けたテキストメッセージを表示するChannelを作った後(今回は#reekohというチャネルを例にします)、下記URLからIncoming Webhookの設定をします。
https://slack.com/services/new/incoming-webhook
下記のページでChoose a ChannelというところでWebhookを受けるChannelを選択します。(今回は#reekoh)

img-20181004-technical-04.png

Add Incoming Webhooks Integrationボタンをクリックすると自動的にIncoming Webhook URLが生成されますので、それをコピーして、上述の通り、Reekoh Pipeline StudioのWebhooks Plugin設定に入力してください。

img-20181004-technical-05.png

最後に、ReekohのPipelineをSave&Deployすると、下図のようにSigfoxデバイスからのメッセージがSlackのチャネルに届きます。

img-20181004-technical-06.png

他にもReekohプラットフォームにはダッシュボード作成機能などもありますので、次に投稿します。

img-20181004-technical-07.png

著者情報

Products and Marketing Department 日比 学

京セラコミュニケーションシステム株式会社(KCCS)よりSigfox社(フランス)に出向中の元自称Sigfoxエバンジェリスト

  • KCCSから追い出され、フランスの片田舎で余生を過ごしています
Twitter:https://twitter.com/ghibi