SORACOM LTE-M Button を押したログを kintone に保管

## 処理内容
・SORACOM LTE-M Button が押されたら、Lambda を起動して、その結果を kintone に保管します。
・SORACOM LTE-M Button の 1回押し、2回押し、長押し を判断し、記録します。
今回はボタンのアクションを kintone に記録するまでを試しますが、後日には何等かの制御を試す予定です。
### SORACOM LTE-M Button について
詳細は以下参照ください。
https://soracom.jp/products/gadgets/aws_button/ 
## 設定内容
AWS Lambda の設定 → AWS IoT 1-Click Button の登録 → AWS IoT 1-Click で Lambda を起動する設定 → kintone の設定の順で行います。
### AWS Lambda 関数の追加
最初に中身は空で良いので AWS Lambda の関数を追加しておきます。
今回は Node.js にしています。
![Button05.png](https://qiita-image-store.s3.amazonaws.com/0/75892/e1dc6710-d81c-5f6e-ae92-5f6ee400941e.png)
### AWS IoT 1-Click Button の登録
SORACOM LTE-M Button を AWS IoT 1-Click のデバイスに登録します。
詳細な手順については以下を参照ください。

SORACOM LTE-M Button powered by AWS でできる事や環境の準備まとめ
https://blog.soracom.jp/blog/2018/10/25/are-you-ready-for-lte-m-button/#overview

SORACOM LTE-M Button powered by AWS をクリックしてSlackに通知する
https://dev.soracom.io/jp/start/aws_button_slack/#registration
![Button03.png](https://qiita-image-store.s3.amazonaws.com/0/75892/5b1a263b-59ae-619f-1c72-1a9725860726.png)
![Button04.png](https://qiita-image-store.s3.amazonaws.com/0/75892/d0b1d7fb-c94a-80e3-568c-4925da51ed69.png)
### AWS IoT 1-Click Lambda を起動する設定
AWSのコンソコンソール AWS IoT 1-Click のプロジェクト画面で、ボタンを押したら先に追加したラムダ関数を実行するように設定します。
![Button01.png](https://qiita-image-store.s3.amazonaws.com/0/75892/5b751c94-d0f4-275d-3224-94e0127e8821.png)
![Button02.png](https://qiita-image-store.s3.amazonaws.com/0/75892/e8a96c14-462b-09cc-4c02-4f7812e33d04.png)
![Button06.png](https://qiita-image-store.s3.amazonaws.com/0/75892/4da5d72f-7817-3eba-6fb0-5cc4cff621cb.png)
### kintone アプリの設定
ボタンを押した時に起動するラムダ関数から、ボタンの記録を残すための kintone アプリを追加します。
今回はAPIトークンを使って、kintone API をコールします。
![Button07.png](https://qiita-image-store.s3.amazonaws.com/0/75892/b267a31b-34ef-09ea-eafa-98d7b5b9d69f.png)
![kintone99.png](https://qiita-image-store.s3.amazonaws.com/0/75892/ee0dec27-8a9a-08fc-7c25-8847a6945302.png)
## 実行結果
ボタンを押すと、追加した AWS Lambda 関数 がキックされ、kintone に記録が残るようになりました。
![Button09.png](https://qiita-image-store.s3.amazonaws.com/0/75892/9cf54209-d1fe-463e-aa35-18bfe553aa40.png)
## AWS Lambda 関数 コード例
```javascript:index.js
'use strict';

var request = require('request'); // npm install request

var Domain     = "cybozu.com";
var Subdomain  = "SUBDOMAIN";
var Path       = "/k/v1/record.json";
var Protocol   = "https://";
var AppId      = "KINTONE_APP_ID";
var Token      = "KINTONE_TOKEN";

exports.handler = function(event, context) {
    
    var clicktype = event.deviceEvent.buttonClicked.clickType;
    var message = "";
    if(clicktype == "SINGLE"){
        message = "ボタンが1回押されました";
    } else if (clicktype == "DOUBLE"){
         message = "ボタンが2回押されました";
    } else if (clicktype == "LONG") {
        message = "ボタンが長押しされました";
    } else {
        message = "clickTypeを正常に取得できませんでした"
    }
    
    require('date-utils');  // npm install date-utils
    var dt = new Date();
    var url = Protocol+ Subdomain + '.' + Domain + Path;
    var json = { 
        "DateTime": { "value" : dt.toFormat("YYYY-MM-DDTHH24:MI:SSZ") },
        "Message" : { "value" : message }
    };
    funcPostKintoneRecode(request, url, AppId, Token, json);
};

// kintone アプリにデータを追加
function funcPostKintoneRecode(request, url, appId, token, json)
{
    var options = {
        url: url,
        method: 'POST',
        headers: {
            'Content-type': 'application/json',
            'X-Cybozu-API-Token': token
        },
        body: { app : appId, record: json },
        json: true
    };
	
    request.post(options, function (err, res, body) {
        console.log('response' + res.statusCode);
        if (!err && res.statusCode === 200) {
            console.log('response SUCCESS!!');
        } else {
            console.log('response error: ' + res.statusCode);
            console.log(body);
        }
        console.log('response end');
    });
}
```
## 参照情報
LTE-M 内蔵ボタンデバイス「SORACOM LTE-M Button powered by AWS」 ( https://blog.soracom.jp/blog/2018/07/04/soracom-lte-m-button-powered-by-aws/ )
SORACOM LTE-M Button powered by AWS でできる事や環境の準備まとめ ( https://blog.soracom.jp/blog/2018/10/25/are-you-ready-for-lte-m-button/ )
SORACOM LTE-M Button powered by AWS を用いた開発 TIPS ( https://blog.soracom.jp/blog/2018/11/07/tips-of-soracom-lte-m-button/ )
AWS IoT 1-Click コールバックイベント ( https://docs.aws.amazon.com/ja_jp/iot-1-click/latest/developerguide/1click-events.html )