Webhookでインストールを受け取る

インストールされたといったアプリに関するイベントをwebhookで受け取ることができます。
受け取ったタイミングでインストールの再取得を行うことでリアルタイムにインストールが反映されるサーバーシステムを作ることができます。

設定

アプリ設定の中で「Webhook URL」となっている箇所にURLを記載するとドキュメント記載のイベント発生時にPOSTリクエストで通知が届きます。

使用例

以下のようにするとイベントに関わらず全てのアプリへの変化でインストールの再取得を行います。

// Runkit Example
const express = require('express')
const app = express()
const getSdk = require('obniz-cloud-sdk').getSdk

async function getAllInstalls(token) {
    const sdk = getSdk(token);
    const allInstalls = [];
    let skip = 0;
    while (true) {
      // 取得
      const result = await sdk.app({ skip });
      for (const edge of result.app.installs.edges) {
        allInstalls.push(edge.node);
      }
      if (!result.app.installs.pageInfo.hasNextPage) {
        break;
      }
      skip += result.app.installs.edges.length;
    }
    return allInstalls;
}

async function showAllDevices() {
  // get All installed devices with configrations
  const installs = await getAllInstalls("apptoken_XXXXXXXXXXX");
  for (const install of installs) {
    console.log(`obniz ${install.id}\n access_token ${install.access_token}\n configs ${install.configs}`)
  }
}

app.post('/webhook', async (req, res) => {
  console.log("webhook accepted")
  await showAllDevices();
})

app.listen(3000)