【Workato】HTTPトリガーの使い方

#HTTPコネクター
httpコネクターはアクションで使うと、任意のエンドポイントに任意のhttpメソッドでリクエストを送ることができるコネクターです。もちろんヘッダーやURLパラメーターなども追加できます。
>Httpコネクターは標準コネクターでサポートされていないアプリケーション連携をする際に使用するコネクターです。(SalesforceやSlackなどは標準コネクターがあるのでわざわざAPIドキュメントを見ながらリクエストを定義する必要はありません。)

#HTTPコネクターをトリガーで使う
HTTPコネクターはトリガーで使うこともできます。そうすると、Workatoは一定時間ごとにそのエンドポイントにリクエストを送ってくれます。([ポーリング](http://e-words.jp/w/%E3%83%9D%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0.html))
Workatoでは、取ってきたデータのうち前回のポーリングで取得したデータは処理をしないという重複制御や、抜け落ちを防止するための設定をすることもできます。
![スクリーンショット 2020-12-20 22.49.17（2）.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/947273/869b20cf-f5d7-006f-38b8-862f69ff28d8.png)

| フィールド名 | 概要 |
|:-:|:-:|
| Event name  | トリガーの名前。どんなデータを取ってくるかなどを書いておく。  |
| URL  | リクエストを送るエンドポイントURL。  |
| Request header  | リクエストに載せるヘッダー。1行につき一つ記載する。**センシティブなデータ(認証情報など)は必ずconnectionの中に指定すること！！**  |
| Response content type  | レスポンスの形式。JSON/XML  |
| Response body example  | レスポンスとして返ってくるデータのサンプルをそのままここにペーストする。返ってくるデータは**配列**である必要がある。  |

##Response body exampleの書き方
例えば、新規のexpenseが登録されたときにトリガーするレシピを作りたいとして、「Get Expenses」というAPIを使って5分ごとに新規のexpenseがないかを確認するとします。APIをcallすると、

```
{
  "expenses": [
    {
      "id": 123456,
      "group_id": null,
      "friendship_id": null,
      "expense_bundle_id": null,
      "description": "テスト",
      "repeats": false,
      "repeat_interval": "never",
      "email_reminder": true,
      "email_reminder_in_advance": null,
      "next_repeat": null,
      "details": "",
      "comments_count": 0,
      "payment": false,
      "creation_method": "split",
      "transaction_method": "offline",
      "transaction_confirmed": false,
      "transaction_id": null,
      "cost": "1295.0",
      "currency_code": "JPY",
      "repayments": [
        {
          "from": 27821570,
          "to": 25496132,
          "amount": "647.5"
        }
      ],
      "date": "2020-12-05T12:33:23Z",
      "created_at": "2020-12-05T12:34:03Z",
      "created_by": {
        "id": 25496132,
        "first_name": "Chef",
        "last_name": "Hesos"
      },
      "updated_at": "2020-12-05T12:34:03Z",
      "updated_by": null,
      "deleted_at": null,
      "deleted_by": null,
      "category": {
        "id": 18,
        "name": "General"
      },
      "receipt": {
        "large": null,
        "original": null
      },
      "users": [
        {
          "user": {
            "id": 27821570,
            "first_name": "Hill",
            "last_name": "Kates"
          },
          "user_id": 27821570,
          "paid_share": "0.0",
          "owed_share": "647.5",
          "net_balance": "-647.5"
        },
        {
          "user": {
            "id": 25496132,
            "first_name": "Chef",
            "last_name": "Hesos"
          },
          "user_id": 25496132,
          "paid_share": "1295.0",
          "owed_share": "647.5",
          "net_balance": "647.5"
        }
      ]
    }
  ]
}
```

こんな感じのレスポンスが返ってきます。`expenses`という配列にexpenseがN個入って返ってきます。
では、このレスポンスをそのままResponse body exampleに貼ってみます。
![スクリーンショット 2020-12-20 23.07.14（2）.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/947273/d609317b-c4a1-0a1a-b994-0997d2ef004a.png)

すると、こんな感じで下に`Array path`というフィールドが出現します。
さらにこのリストをクリックすると、`expenses`という選択肢が出てきます。これはWorkatoがサンプルのレスポンスから配列型のデータを検出して、ここに表示をしてくれています。

![スクリーンショット 2020-12-20 23.08.37（2）.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/947273/6d4d47d3-39a6-6002-f9de-7ab940359460.png)

`expenses`を選択すると、さらに下にフィールドがいくつか出てきます。
![スクリーンショット 2020-12-20 23.10.37（2）.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/947273/e9613076-b03f-817e-45c4-ceff244b3f89.png)

`ID column`と`Timestamp column`という二つのフィールドが出現します。

`ID column`はexpenseのIDを指定するところです。このIDは重複制御に使用されるもので、一度処理をしたexpenseのIDをWorkatoが裏で保持してくれて、次以降のポーリングでは処理済みexpenseとして飛ばしてくれます。**つまり、`新規で追加されるexpense`あるいは`新規/更新で追加されるexpense`を検出したい、という場合に必要となるフィールド(つまりは必須フィールド)ということです。**

`Timestamp column`も同じく重複制御に使用されるフィールドです。ここではタイムスタンプのフィールド(があれば、)指定することでWorkatoはexpenseのIDとともに最終更新日時としてこのタイムスタンプを裏で保持してくれます。次以降のポーリングで最終更新日時が更新されたものが取れた場合、それは処理対象となります。**つまり、`新規/更新で追加されるexpense`を検出したい、という場合に必要となるフィールドということです。**

あとは、入力したResponse body exampleの内容がデータピルとしてアクションで使えるようになっているので、アクションを定義していくだけです。

![スクリーンショット 2020-12-20 23.24.27（2）.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/947273/7eaf613e-7f9b-84e9-16a0-8f9fbe771456.png)