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

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

#ReekohでSigfoxデバイスメッセージをSlackにWebhookする
大まかな流れは下記の通りとなります。

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

##Reekoh Pipeline Studioでパイプラインを作成
細かい操作方法は割愛しますが、作成するパイプラインは下図のようなものとなります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/172313/2d897e68-8a1c-0955-ace9-46edd191afc8.png)

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

||Plugin|説明|
|:--:|:-----|:---|
|![image.png](https://qiita-image-store.s3.amazonaws.com/0/172313/a01b58be-f8ea-6278-c1f1-aaf9801ccedc.png)|Sigfox GW|SigfoxクラウドからのCallbackを受け取る|
|![image.png](https://qiita-image-store.s3.amazonaws.com/0/172313/9661d165-c512-3f8b-2acf-316d86cf9fd4.png)|Converter|受け取ったデバイスデータをSlack Webhook用JSONに変換する|
|![image.png](https://qiita-image-store.s3.amazonaws.com/0/172313/3df1a334-2b60-5b3b-99a1-e492fa5c74a3.png)|Webhooks|SlackにWebhookする|

###各Pluginの設定
####Sigfox GW
SigfoxクラウドからのCallbackを受け取れるようReekoh社から提供されているPluginです。
特に設定する必要はなく、Saveすると、少し時間をおいて、Callback受信用のIPアドレスが発行されます。（下図赤字のところに表示されるので、この後のSigfoxクラウド側での設定に使います）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/172313/67240919-b464-f5f1-13bf-020bfa9c5257.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を入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/172313/be108d68-7ab9-d246-ffec-eec6a8d5aa77.png)

##SigfoxクラウドでCallbackを作成
SigfoxクラウドでのCallbackの基本的な設定方法は[こちら](https://qiita.com/ghibi/items/53259381a30363538a6d)を見てください。
その上で、今回の設定例は下表のとおりとなります

|項目|設定例|補足|
|:---|:---|:---|
|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の設定方法は[こちら](https://qiita.com/vmmhypervisor/items/18c99624a84df8b31008)がわかりやすかな。*

SlackでWebhookで受けたテキストメッセージを表示するChannelを作った後（今回は#reekohというチャネルを例にします）、下記URLからIncoming Webhookの設定をします。
https://slack.com/services/new/incoming-webhook
下記のページでChoose a ChannelというところでWebhookを受けるChannelを選択します。（今回は#reekoh）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/172313/ac685b3c-d4a9-8f23-2358-c7c175c6be82.png)
Add Incoming Webhooks Integrationボタンをクリックすると自動的にIncoming Webhook URLが生成されますので、それをコピーして、上述の通り、Reekoh Pipeline StudioのWebhooks Plugin設定に入力してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/172313/b7c87bef-1f8f-3862-465c-4bc3c50f7f5a.png)

最後に、ReekohのPipelineをSave&Deployすると、下図のようにSigfoxデバイスからのメッセージがSlackのチャネルに届きます。
![図1.png](https://qiita-image-store.s3.amazonaws.com/0/172313/91d3aa84-1dd2-e34c-8a74-9a95b5dabbd4.png)

他にもReekohプラットフォームにはダッシュボード作成機能などもありますので、次に投稿します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/172313/dc433456-bb57-9b47-f670-c0ffb34c1a01.png)

[Sigfox Japan KCCS](https://qiita.com/organizations/sigfox)