Docs Menu
Docs Home
/ /
Atlas App Services
/ /

Webhook のHTTPS endpointsへの変換

項目一覧

  • Overview
  • 既存の HTTP Webhook の自動変換
  • Githubと Twilio Webhook の手動変換
  • Github Webhook
  • Twilio Webhook
  • クライアント アプリとサービスでコールバック URL を更新
  • Webhook とそれに変換されたエンドポイントの違い

Atlas App Servicesサードパーティのサービス Webhook は非推奨となり、代わりに カスタムHTTPS endpointsが採用されるようになりました。 HTTPS endpointsは機能的には Webhook とほぼ同じですが、ファーストクラスのサービスになりました。

このガイドでは、アプリの既存の Webhook の変換と、それを呼び出す外部アプリの更新について説明します。 新しい Webhook またはコールバック URL の場合は、HTTPS エンドポイントを定義する必要があります。

App Services は、アプリ内の既存のHTTP Service Webhook をHTTPS endpointsに自動的に変換できます。 この変換は一方向であり、 HTTPS endpointsを Webhook に戻すことはできません。 変換プロセスでは元の Webhook は削除されないため、変換後も受信する Webhook リクエストは引き続き実行されます。

アプリケーション内のすべての Webhook に対して Webhook から HTTPS エンドポイントへの変換プロセスを実行するには、次の手順に従います。

  1. App Services UI の左側のナビゲーション メニューで [ HTTPS Endpointsをクリックします。

  2. Convertボタンをクリックします。

  3. 変換を実行することを確認します。

UI でのすべてのエンドポイントの変換

注意

変換されたHTTPS endpointsは、ソース Webhook とは独立しています。 変換を実行した後に Webhook を編集する場合は、「変換および上書き」オプションを使用して再度変換を実行し、その変更を新しいエンドポイントに伝達します。

App Services は非推奨のクライアント ライブラリを使用するため、 Githubと Twilio Webhook をHTTPS endpointsに自動的に変換することはできません。 ただし、Webhook をこれらのサービスから新しいHTTPS endpointsに手動で移行することはできます。

Github Webhook を HTTPS エンドポイントに移行するには、次の手順に従います。

  1. 新しい HTTPS エンドポイントを作成する

  2. 既存のGithub Webhook コードを新しいエンドポイントの 関数にコピーする

  3. 事前に解析されたGithubペイロードを使用する代わりに、受信リクエスト本体を解析するようにコードを更新します。

    前: 事前に解析されたペイロードを持つGithub Webhook
    exports = async function(payload, response) {
    // Webhooks only provide the parsed request body
    const { commits, pusher, repository } = payload;
    // ... your code here
    }
    変更後: Githubペイロードを解析する HTTPS エンドポイント
    exports = async function(payload, response) {
    // Endpoints pass an entire request payload, not just a parsed body
    const { commits, pusher, repository } = JSON.parse(payload.body.text());
    // ... your code here
    }

Twilio Webhook を HTTPS エンドポイントに移行するには、次の手順に従います。

  1. 新しい HTTPS エンドポイントを作成する

  2. 既存の Twilio Webhook コードを新しいエンドポイントの 関数にコピーします

  3. 事前に解析された Twilio のペイロードを使用する代わりに、受信リクエスト本体を解析するようにコードを更新します。 Webhook が組み込みの Twilio サービス クライアントを使用する場合は、コードを更新してtwilioのノード ライブラリを代わりに使用してください 。

    以前: 事前に解析されたペイロードを持つ Twilio Webhook
    exports = async function(payload, response) {
    // Webhooks only provide the parsed request body
    const { To, From, Body } = payload;
    // Webhooks could use a built-in Twilio client
    const twilio = context.services.get("twilio")
    twilio.send({
    To: From,
    From: context.values.get("TwilioPhoneNumber"),
    Body: `Message received!`
    })
    }
    変更後: Twilio ペイロードを解析する HTTPS エンドポイント
    exports = async function(payload, response) {
    // Endpoints pass an entire request payload, not just a parsed body
    const { To, From, Body } = JSON.parse(payload.body.text())
    // The endpoint should use `twilio` from npm instead of the built-in Twilio client
    const twilio = require('twilio')(
    // Your Account SID and Auth Token from https://www.twilio.com/console
    // Specify the same Twilio credentials as the service configuration
    context.values.get("TwilioAccountSID"),
    context.values.get("TwilioAuthToken"),
    )
    await twilio.messages.create({
    To: From,
    From: context.values.get("TwilioPhoneNumber"),
    Body: `Message received!`
    })
    }

HTTPS endpoints は、サービス Webhook とは異なる URL スキームを使用します。 Webhook を呼び出すすべてのアプリまたはサービスを、代わりに変換された HTTPS endpoints URL を呼び出すように更新する必要があります。 変換を実行した後も、既存の Webhook URL は引き続きリクエストを受け入れ、それに関連する関数を実行します。 つまり、既存のワークフローを中断することなく、新しい URL に徐々に移行できます。

変換された HTTPS エンドポイント URL に移行するには、次の手順に従います。

  1. サービス Webhook を呼び出すすべてのクライアント アプリとサービスを識別する

  2. アプリまたはサービスごとに、ソースコードまたは構成を変更して、新しい URL を使用します。

  3. アプリのログでサービス Webhookレコードを監視し、見逃したアクティブな Webhook 呼び出しを探します。

  4. すべてのクライアントが新しい URL で更新されたら、アプリから非推奨の Webhook を削除します。

サービスの統合を App Services Webhook から変換された HTTPS エンドポイントに移行するには、送信 Webhook リクエストのサービスの外部構成を変更して、変換されたエンドポイント URL を指すようにします。

非推奨のHTTP Service Webhook URL
https://webhooks.mongodb-realm.com/api/client/v2.0/app/myapp-abcde/service/myHttpService/incoming_webhook/handleIncomingEvent
変換された HTTPS エンドポイント URL
https://data.mongodb-api.com/app/myapp-abcde/endpoint/myHttpService/handleIncomingEvent

変換された HTTPS エンドポイントをRespond with Resultを使用するように構成し、その基になる Webhook 関数が 値を返すが response.setBody()を呼び出しない場合、生成されたエンドポイントには、レスポンス本体として関数の戻り値が含まれます。 対照的に Webhook は、 response.setBody()によって指定された本体のみを返します。

exports = function({ query, headers, body}, response){
response.setStatusCode(200);
return "Hello world";
};

この関数の Webhook は、本体のないステータス コード200でのみ応答します。

エンドポイントで、結果で応答 を有効にすると、エンドポイントはステータス コード200ボディ"Hello world"で応答します。 結果で応答 を有効にしていない場合、エンドポイントはステータス コード200でのみ応答します。

戻る

npm モジュールによるサービスの置き換え