このガイドでは、 を使用して、初めての Action を作成してデプロイする方法を順を追って説明します。完了する頃には、すべての Actions で使用する基本的な機能を理解し、プログラミングモデルにも慣れているはずです。ここで学ぶ内容は、その目的やフローにかかわらず、あらゆる Action を作成するための基礎となります。
目標: ユーザーのログイン時に Slack へ通知する
ユーザーがログインしたときに Slack チャンネルへメッセージを送信する Action を作成します。このチュートリアルでは Post Login トリガーを使用しますが、ここで説明する内容はあらゆる種類のトリガーに応用できます。
このタスクを完了するには、次の操作を行います。
このActionでは Slack チャンネルにメッセージを送信するため、Slack ワークスペース用の Incoming Webhook を作成する必要があります。Slack の Webhook URL を取得したら、このガイドに進んでください。
特定のフローで Action を機能させるには、まず Action を作成してから、そのフローに追加する必要があります。
- Auth0 Dashboard > Actions > Library, に移動し、Create Action > Build from scratch を選択します。
- 名前 を入力し、Login フローに Action を追加するため、Login / Post Login トリガーを選択して、Create を選択します。
Actions Code Editor が表示されます。
Actions のテンプレートギャラリーには、Action の作成を始めるためのさまざまなスターターテンプレートが用意されています。テンプレートから Action を作成するには、次の手順に従います。
- Auth0 Dashboard > Actions > Library に移動し、Create Action を選択します。
- Choose from template を選択します。
- Action の作成に使用するテンプレートを選択します。
- テンプレート内のコードの読み取り専用プレビューが表示されます。続行するには、Use this template を選択します。
- 名前を入力し、Create を選択します。
各 Action には Secret 値を含めることができ、 や API キーなどの機密情報を保持するのに適しています。ここでは、Slack の Webhook URL を Secret として保存します。
- コードエディターの左側のサイドバーで鍵アイコンを選択します
- Add Secret を選択します。
- Secret に次の名前を付けます:
SLACK_WEBHOOK_URL。
- Slack から提供された Webhook URL を貼り付け、Create を選択します。
これで Secret が Action に追加され、event.secrets と入力するとコード補完でこの新しい Secret を利用できます。
Secret を一度作成すると、その値が表示されることはありません。Auth0 はすべての Secret を暗号化して安全に保存します。
Slack にメッセージを簡単に送信できるようにするため、@slack/webhook npm パッケージを使用します。native add-onsに依存せずにインストールできる限り、Action ではほぼすべての公開 npm パッケージを使用できます。
依存関係を追加するには、次の手順に従います。
-
サイドバーで Dependency アイコン (キューブ アイコン) を選択します。
-
Name に
@slack/webhook と入力します。
デフォルトでは、Action は依存関係を追加した時点での最新バージョンを使用します。
-
Create を選択すると、Dependency が Action に追加されます。
この Action を保存すると、依存関係の最新バージョンが解決され、今後のパッケージ更新によって Action に問題が生じないよう、特定のバージョン番号に置き換えられます。
Save Draft を選択します。Action は保存されますが、まだどのユーザーフローでも実行されません。Actions を使用すると、Auth0 テナントのトラフィックに影響を与える前に、Actions の作成、編集、テストを行えます。Action の動作に問題がなければ、後でその Action をデプロイしてフローに追加します。
Action は Secret と依存関係で設定できたので、次はコードを書いていきましょう。
すべての Action には、関連するトリガーに応じたコンテキスト情報を含む、読み取り専用の event オブジェクトがあります。Editor で event. と入力し始めると、event で使用できるすべてのプロパティが表示されます。各トリガーで利用できる情報の詳細については、Explore Flows and Triggers を参照してください。
では、Action を使って Slack に通知してみましょう。次のコードを Action に追加します。
const { IncomingWebhook } = require('@slack/webhook');
exports.onExecutePostLogin = async (event, api) => {
const url = event.secrets.SLACK_WEBHOOK_URL;
const webhook = new IncomingWebhook(url);
// 通知を送信する
await webhook.send({ text: "Logging In..." });
};
Action を保存するには、Save Draft をクリックします。
この Action を本番のユーザートラフィックがあるテナントで実行する前に、想定どおりに動作することを確認するためにテストしてください。
-
サイドバーの Test (三角形) アイコンを選択します。Payload セクションには、Action の作成時に選択したトリガーに関連する編集可能な JSON データが表示されます。
-
Run ボタンを選択すると、Slack チャンネルにメッセージが表示されるはずです。
Action が期待どおりに動作していることを確認できたので、次はこれをデプロイします。
Deploy を選択します。Action をデプロイすると、その時点の Action のスナップショットが作成され、Action Version として記録されます。
Version History を選択すると、Action がバージョン 1 として記録されていることを確認できます。
これで、Action を更新して保存しても、Action のバージョン 1 には影響しません。Auth0 が実行するのは現在デプロイされているバージョンの Action のみであるため、Action を再度デプロイするまでは、Auth0 はバージョン 1 を実行します。
新しい Action を設定し、テナント内の実際のトラフィックで実行されるようにする最後の手順は、その Action をフローに追加することです。
-
利用可能なフローの一覧を表示するには、Auth0 Dashboard > Actions > Flows に移動します。
-
Login フロー を選択し、
my-slack-action をフローにドラッグします。
-
Apply を選択します。
これで、この Action はテナント内の実際のユーザートラフィックに対して実行されます。より堅牢なテスト環境が必要な場合は、複数の Auth0 環境を設定することを検討してください。
Action がログインフローの一部として実行されるようになると、Auth0 は各 Action の実行に関する情報をテナントログに記録します。これを確認するには、Auth0 Dashboard > Monitoring > Logs に移動し、Successful Login イベントを選択します。
そのフローの一部として実行された Actions に関する情報を含む Action Details ビューが表示されます。
最初のActionを作成したら、フローとトリガーの詳細で、Actionsを使ってよくあるタスクを実行する方法を確認してください。