カスタム電話プロバイダーを構成する
SMSメッセージのカスタム電話プロバイダーは、電話番号をユーザー識別子に使用して構成できます。カスタム電話プロバイダーは電話番号の検証とパスワードのリセットを行う際にアクションを使用して、指定の電話プロバイダーにSMSメッセージを送信します。
以下のユースケースでは、カスタム電話プロバイダーを構成することが賢明かもしれません。
アプリケーションのコンテキストに応じて異なる電話プロバイダーを使用する。これには、地理的な場所によって電話プロバイダーのメッセージ料金に大きな差異がある場合が含まれます。
組織のコンテキストに応じて異なる電話プロバイダーを使用する。これはB2B顧客に特定のプロバイダーが必要になるかもしれない場合です。
カスタム電話プロバイダーはAuth0 DashboardまたはManagement APIを使用して構成できます。
Auth0 DashboardまたはManagement APIを使用してカスタム電話プロバイダーを構成する
カスタム電話プロバイダーを構成するにはcustom-phone-provider
アクショントリガーが必要ですが、Auth0 Actionsエディターでは提供されていません。詳細については、「custom-phone-providerアクションの例」をお読みください。
Auth0 Dashboardで新しいカスタム電話プロバイダーを構成する
Auth0 Dashboardで新しいカスタム電話プロバイダーを構成するには:
[Branding(ブランディング)] > [Phone Provider(電話プロバイダー)]に移動します。自動的に電話メッセージプロバイダーのページに切り替わります。デフォルトでは、Twilio電話プロバイダーが選択されています。
[Phone Provider(電話プロバイダー)]セクションで、[Custom(カスタム)]の電話プロバイダーオプションを選択します。
[Delivery Method:(配信方式:)]を選択します
[Text(テキスト)]:認証コードはSMSでユーザーに送信されます。
[Voice(音声)]:認証コードは音声メッセージでユーザーに送信されます。
[Provider Configuration(プロバイダー構成)]で、カスタム電話プロバイダーを構成するためのアクションコードを記述します。
プロバイダーのAPIにメッセージを配信する方法については、プロバイダーのドキュメントを参照してください。
APIと認証するために必要なシークレットを追加します。
(任意)[Edit in Expanded Editor(拡張エディターで編集)]ボタンをクリックすると、Actionsエディターのフルインターフェイスを使用してアクションを編集できます。Actionsエディターでアクションを編集した後、そのインターフェイスからアクションを[Save(保存)] して [Deploy(デプロイ)]します。Actionsエディターのページ上部にある[Back to Phone Provider(電話プロバイダーに戻る)]リンクをクリックして、電話メッセージプロバイダーのページに戻ります。[Phone Provider(電話プロバイダー)]セクションで、もう一度[Custom(カスタム)]の電話プロバイダーオプションを選択する必要があります。
ページ下部の[Save(保存)]ボタンをクリックします。
[Save(保存)]をクリックすると、アクションの保存とデプロイが自動で行われます。運用環境で使用する前に、カスタム電話プロバイダーの構成をテストするには、[Send Test Message(テストメッセージを送信)]をクリックします。
Auth0 Dashboardを使用して、カスタムメールプロバイダーを構成できます。
Auth0 Dashboardでカスタム電話プロバイダーを更新する
Auth0 Dashboardで既存のカスタム電話プロバイダーを更新する方法:
[Branding(ブランディング)] > [Phone Provider(電話プロバイダー)]に移動します。自動的に電話メッセージプロバイダーのページに切り替わります。
必要に応じて、電話メッセージプロバイダーのページのアクションコードを変更します。
(任意)[Edit in Expanded Editor(拡張エディターで編集)]ボタンをクリックすると、Actionsエディターのフルインターフェイスを使用してアクションを編集できます。Actionsエディターでアクションを編集した後、そのインターフェイスからアクションを[Save(保存)] して [Deploy(デプロイ)]します。次に、Actionsエディターのページ上部にある[Back to Phone Provider(電話プロバイダーに戻る)]リンクをクリックします。
ページ下部の[Save(保存)]ボタンをクリックします。
[Save(保存)]をクリックすると、アクションの保存とデプロイが自動で行われます。運用環境で使用する前に、カスタム電話プロバイダーの構成をテストするには、[Send Test Message(テストメッセージを送信)]をクリックします。
Management APIで新規のカスタム電話プロバイダーを構成する
カスタム電話プロバイダーは、Management APIを使用して構成することもできます。このプロセスには、複数のステップがあります:
アクションを作成し、
supported_triggers.id
をcustom-phone-provider
に設定します。プロバイダーのAPIにメッセージを配信する方法については、プロバイダーのドキュメントを参照してください。
APIと認証するために必要なシークレットを追加します。
アクションを導入します。
電話プロバイダーを
custom
に設定します。
Auth0 Dashboardを使用して、カスタムメールプロバイダーを構成できます。
Management APIでカスタム電話プロバイダーを更新する
カスタム電話プロバイダーは、Management APIを使用して更新することもできます。
(任意)特定のアクションIDがわからない場合、Management APIを介してアクションのリストを取得できます。応答には、アクションオブジェクトが含まれます。カスタム電話プロバイダーに対して使用されるアクションは、
supported_triggers.id
(custom-phone-provider
に設定)で識別できます。必要に応じて、アクションを更新します。
アクションを導入します。
構成できるカスタム電話プロバイダーの例として、Twilio Verifyが挙げられます。詳細については、「Twilio Verifyを使用してカスタム電話プロバイダーを構成する」をお読みください。
custom-phone-providerアクションの例
custom-phone-provider
トリガーはsend-phone-message
トリガーとは異なります。send-phone-messageトリガーをカスタム電話プロバイダーの構成に使用してはいけません。詳細については以下をお読みください。
以下はcustom-phone-provider
アクションのサンプルコードです。これにはsend-phone-message
アクションの機能性が備わっています。
const { fetch } = require('undici');
/**
* Handler to be executed while sending a phone notification
* @param {Event} event - Details about the user and the context in which they are logging in.
* @param {CustomPhoneProviderAPI} api - Methods and utilities to help change the behavior of sending a phone notification.
*/
exports.onExecuteCustomPhoneProvider = async (event, api) => {
if (event.notification.message_type.startsWith('otp')) {
const body = {
from: event.notification.from,
action: event.notification.message_type === 'otp_verify' ? 'second-factor-authenticator' : 'enrollment',
language: event.notification.locale,
recipient: event.notification.recipient,
message_type: event.notification.delivery_method,
text: event.notification.as_text,
code: event.notification.code,
};
const response = await fetch(event.secrets['MY_ENDPOINT'], {
method: 'POST',
headers: {
authorization: `Bearer ${event.secrets['MY_SECRET']}`,
},
body: JSON.stringify(body),
});
console.log(response.status); // 200
console.log(await response.text()); // request's response body!
}
return;
};
Was this helpful?