> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.com/llms.txt
> Use this file to discover all available pages before exploring further.

# カスタム電話プロバイダーを構成する

> アクションを使用してカスタム電話プロバイダーを構成する方法について説明します。

SMSメッセージのカスタム電話プロバイダーは、[電話番号をユーザー識別子](/docs/ja-jp/authenticate/database-connections/activate-and-configure-attributes-for-flexible-identifiers)に使用して構成できます。カスタム電話プロバイダーは電話番号の検証とパスワードのリセットを行う際に[アクション](/docs/ja-jp/customize/actions/actions-overview)を使用して、指定の電話プロバイダーにSMSメッセージを送信します。

以下のユースケースでは、カスタム電話プロバイダーを構成することが賢明かもしれません。

* アプリケーションのコンテキストに応じて異なる電話プロバイダーを使用する。これには、地理的な場所によって電話プロバイダーのメッセージ料金に大きな差異がある場合が含まれます。
* 組織のコンテキストに応じて異なる電話プロバイダーを使用する。これはB2B顧客に特定のプロバイダーが必要になるかもしれない場合です。

カスタム電話プロバイダーは<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=auth0-dashboard" tip="Auth0 Dashboard: サービスを構成するためのAuth0の主製品。" cta="用語集の表示">Auth0 Dashboard</Tooltip>または<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip>を使用して構成できます。

## Auth0 DashboardまたはManagement APIを使用してカスタム電話プロバイダーを構成する

カスタム電話プロバイダーを構成するには`custom-phone-provider`アクショントリガーが必要ですが、Auth0 Actionsエディターでは提供されていません。詳細については、「[custom-phone-providerアクションの例](#example-custom-phone-provider-action)」をお読みください。

<Tabs>
  <Tab title="Auth0ダッシュボード">
    #### Auth0 Dashboardで新しいカスタム電話プロバイダーを構成する

    Auth0 Dashboardで新しいカスタム電話プロバイダーを構成するには:

    1. [［Branding（ブランディング）］ > ［Phone Provider（電話プロバイダー）］](https://manage.auth0.com/dashboard/#/phone/templates/phone/provider)に移動します。自動的に電話メッセージプロバイダーのページに切り替わります。デフォルトでは、Twilio電話プロバイダーが選択されています。
    2. ［Phone Provider（電話プロバイダー）］セクションで、**［Custom（カスタム）］** の電話プロバイダーオプションを選択します。
    3. **［Delivery Method:（配信方式:）］** を選択します

       1. ［Text（テキスト）］:認証コードはSMSでユーザーに送信されます。
       2. ［Voice（音声）］:認証コードは音声メッセージでユーザーに送信されます。
    4. **［Provider Configuration（プロバイダー構成）］** で、カスタム電話プロバイダーを構成するためのアクションコードを記述します。

       1. プロバイダーのAPIにメッセージを配信する方法については、プロバイダーのドキュメントを参照してください。
       2. APIと認証するために必要なシークレットを追加します。
       3. （任意）**［Edit in Expanded Editor（拡張エディターで編集）］** ボタンをクリックすると、Actionsエディターのフルインターフェイスを使用してアクションを編集できます。Actionsエディターでアクションを編集した後、そのインターフェイスからアクションを\*\*［Save（保存）］\*\* して **［Deploy（デプロイ）］** します。Actionsエディターのページ上部にある\*\*［Back to Phone Provider（電話プロバイダーに戻る）］\*\* リンクをクリックして、電話メッセージプロバイダーのページに戻ります。［Phone Provider（電話プロバイダー）］セクションで、もう一度\*\*［Custom（カスタム）］\*\* の電話プロバイダーオプションを選択する必要があります。
    5. ページ下部の\*\*［Save（保存）］\*\* ボタンをクリックします。

    **［Save（保存）］** をクリックすると、アクションの保存とデプロイが自動で行われます。運用環境で使用する前に、カスタム電話プロバイダーの構成をテストするには、**［Send Test Message（テストメッセージを送信）］** をクリックします。

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      カスタム電話プロバイダーの設定を保存するまでは、**［Send Test Message（テストメッセージを送信）］** をクリックしてカスタム電話プロバイダーをテストすることはできません。
    </Callout>

    Auth0 Dashboardを使用して、カスタムメールプロバイダーを構成できます。

    #### Auth0 Dashboardでカスタム電話プロバイダーを更新する

    Auth0 Dashboardで既存のカスタム電話プロバイダーを更新する方法:

    1. [［Branding（ブランディング）］ > ［Phone Provider（電話プロバイダー）］](https://manage.auth0.com/dashboard/#/phone/templates/phone/provider)に移動します。自動的に電話メッセージプロバイダーのページに切り替わります。
    2. 必要に応じて、電話メッセージプロバイダーのページのアクションコードを変更します。

       1. （任意）**［Edit in Expanded Editor（拡張エディターで編集）］** ボタンをクリックすると、Actionsエディターのフルインターフェイスを使用してアクションを編集できます。Actionsエディターでアクションを編集した後、そのインターフェイスからアクションを\*\*［Save（保存）］\*\* して **［Deploy（デプロイ）］** します。次に、Actionsエディターのページ上部にある\*\*［Back to Phone Provider（電話プロバイダーに戻る）］\*\* リンクをクリックします。
    3. ページ下部の\*\*［Save（保存）］\*\* ボタンをクリックします。

    **［Save（保存）］** をクリックすると、アクションの保存とデプロイが自動で行われます。運用環境で使用する前に、カスタム電話プロバイダーの構成をテストするには、**［Send Test Message（テストメッセージを送信）］** をクリックします。
  </Tab>

  <Tab title="Mangement API">
    #### Management APIで新規のカスタム電話プロバイダーを構成する

    カスタム電話プロバイダーは、Management APIを使用して構成することもできます。このプロセスには、複数のステップがあります：

    1. [アクション](https://auth0.com/docs/api/management/v2/actions/post-action)を作成し、`supported_triggers.id`を`custom-phone-provider`に設定します。

       1. プロバイダーのAPIにメッセージを配信する方法については、プロバイダーのドキュメントを参照してください。
       2. APIと認証するために必要なシークレットを追加します。
    2. アクションを[導入](https://auth0.com/docs/api/management/v2/actions/post-deploy-action)します。
    3. [電話プロバイダー](https://auth0.com/docs/api/management/v2/branding/create-phone-provider)を`custom`に設定します。

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      `custom-phone-provider`トリガーで作成したアクションは、Actionsのライブラリには表示されません。
    </Callout>

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      アクションがデプロイされていない状態で`custom`のプロバイダーを設定しようとすると、Auth0は`"errorCode":"custom_email_provider_deployed_action_not_found"`というエラーを返します。
    </Callout>

    Auth0 Dashboardを使用して、カスタムメールプロバイダーを構成できます。

    #### Management APIでカスタム電話プロバイダーを更新する

    カスタム電話プロバイダーは、Management APIを使用して更新することもできます。

    1. （任意）特定のアクションIDがわからない場合、Management APIを介して[アクションのリストを取得](https://auth0.com/docs/api/management/v2/actions/get-actions)できます。応答には、アクションオブジェクトが含まれます。カスタム電話プロバイダーに対して使用されるアクションは、`supported_triggers.id`（`custom-phone-provider`に設定）で識別できます。
    2. 必要に応じて、[アクションを更新](https://auth0.com/docs/api/management/v2/actions/patch-action)します。
    3. アクションを[導入](https://auth0.com/docs/api/management/v2/actions/post-deploy-action)します。
  </Tab>
</Tabs>

構成できるカスタム電話プロバイダーの例として、[Twilio Verify](https://www.twilio.com/docs/verify)が挙げられます。詳細については、「[Twilio Verifyを使用してカスタム電話プロバイダーを構成する](/docs/ja-jp/customize/phone-messages/configure-phone-messaging-providers/configure-a-custom-phone-provider/configure-a-custom-phone-provider-with-twilio-verify)」をお読みください。

## custom-phone-providerアクションの例

`custom-phone-provider`トリガーは`send-phone-message`トリガーとは異なります。send-phone-messageトリガーをカスタム電話プロバイダーの構成に使用してはいけません。詳細については以下をお読みください。

* [アクションのトリガー：custom-phone-providerのAPIオブジェクト](/docs/ja-jp/customize/phone-messages/configure-phone-messaging-providers/configure-a-custom-phone-provider/action-triggers-custom-phone-provider-api-object)
* [アクションのトリガー：custom-phone-providerのイベントオブジェクト](/docs/ja-jp/customize/phone-messages/configure-phone-messaging-providers/configure-a-custom-phone-provider/actions-triggers-custom-phone-provider-event-object)

以下は`custom-phone-provider`アクションのサンプルコードです。これには`send-phone-message`アクションの機能性が備わっています。

```javascript lines theme={null}
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;
};
```
