次の方法で共有


Azure Communications Gateway Provisioning API

通信オペレーター向けの Azure Communications Gateway のプロビジョニング API を使用すると、顧客の詳細と、それらに割り当てられた番号を Azure Communications Gateway (ACG) にプロビジョニングできます。 Provisioning API では、一部のバックエンド通信サービスのフロースルー プロビジョニングもサポートされています。

オペレーター Connect と Teams 電話 Mobile を除くすべてのユース ケースでは、(プロビジョニング API またはブラウザーベースの数値管理ポータルを使用して) 顧客と番号のプロビジョニングが必須です。 Operator Connect と Teams 電話 Mobile の場合、Provisioning API または Number Management Portal の使用は省略可能であり、代わりに Operator Connect API と直接統合できます。

作業の開始

前提条件

  • Azure Communications Gateway アプリケーションがデプロイされたテナント。
  • Azure portalのリソースの [概要] ページに表示される、Azure Communications Gateway の完全修飾ドメイン名 (FQDN)。 API は のポート 443 provapi.<base-domain>で使用できます。
  • Azure Communications Gateway のデプロイの一環として許可リストで構成されている API へのアクセスを許可する IP アドレスを持つマシン。

認証と承認

プロビジョニング API では 、OAuth 2.0 を使用してリソースへのアクセスを制御します。 クライアント アプリケーションは、Provisioning API にアクセスするために有効な認証ベアラー トークンを取得する必要があります。 ベアラー トークンは、アプリケーションがプロビジョニング API の 1 つ以上のスコープ (ロール) に対して承認されていることを示します。 (サーバー側プロセス用に設計された) クライアント資格情報フロー を使用することをお勧めします。

Provisioning API では、次のスコープを使用できます。

  • ProvisioningAPI.Admin: API 全体で任意の操作を呼び出す機能。
  • ProvisioningAPI.Read: API 全体で任意の読み取り (GET) 操作を呼び出す機能。
  • ProvisioningAPI.Write: API 全体で任意の書き込み (PUT、PATCH) 操作を呼び出す機能。
  • ProvisioningAPI.Delete: API 全体で削除 (DELETE) 操作を呼び出す機能。

クライアント資格情報フローを設定するには:

  1. アプリケーションがクライアント資格情報フローをサポートできることを確認します。
    • アプリケーションが Provisioning API のトークンを要求する場合は、次のフィールドを使用する必要があります。

      パラメーター 条件 説明
      tenant required guid または domain-name 形式の Azure Communications Gateway を含むディレクトリ テナント。
      scope required Azure Communications Gateway リソース ID に対する承認のスコープ。 ここで説明するクライアント資格情報フローの場合、スコープは である https://func-voiceservice-rp-prod-eastuseuap.azurewebsites.net/.default必要があります。
      client_id 必須 アプリに割り当てられているアプリケーション (クライアント) ID。
    • 受け取ったトークンの要求は roles 、クライアント アプリケーションがアクセスを許可されているロール (スコープ) を指定します。

    • Azure Communications Gateway プロビジョニング プラットフォームへの要求には、このベアラー トークンを含む Authorization ヘッダーが必要です。

    • トークンの使用例については、 クライアント資格情報フローのドキュメントを参照してください

  2. Azure portalを使用して、Azure Communications Gateway デプロイと同じテナントにアプリケーションを登録します。 「クイック スタート: Microsoft ID プラットフォームにアプリを登録する - Microsoft Entra |Microsoft Learn
  3. アプリ登録の所有者として自分自身を割り当てます。 「 アプリケーション所有者の割り当て」を参照してください。
  4. 前に説明したように、プロビジョニング API のスコープを使用するアプリ ロールにアプリケーションを登録することによって作成されたアプリ登録を構成します。
  5. テナントの管理者として、割り当てたアプリ ロールをアプリケーションで使用できるようにします。 「 管理者の同意を付与する」を参照してください。

Provisioning API は、セキュリティ証明書に標準の Microsoft 信頼チェーンを使用します。

主要な概念

プロビジョニング プラットフォームには、オペレーターが管理できる 3 つの主要なリソース (アカウント、数字、情報の要求) があります。

  • アカウント リソースは、オペレーターのお客様 (通常は企業)、およびサービス プロビジョニングの顧客ごとの設定の説明です。
  • 数値 リソースはアカウントに属しています。 番号、番号が使用するサービス (Microsoft Teams ダイレクト ルーティングなど)、および追加の番号ごとの構成について説明します。
  • 情報要求 (RFI) リソースは、特定のバックエンド サービスを通じてオペレーターからサービスを受け取る際に関心を示しているオペレーターの潜在的な顧客の説明です。 現在、Operator Connect と Teams 電話 Mobile の同意から生成された RFI のみが使用できます。

たとえば、顧客に Microsoft Teams ダイレクト ルーティング サービスを提供するには、Contoso のプロビジョニング API を使用してアカウント リソースを作成します。 アカウントには、直接ルーティングの構成が含まれています (たとえば、サブドメインと対応するトークンは、Microsoft Teams が顧客の構成を検証するために使用できる DNS レコードを設定するために必要です)。 その後、アカウントに番号リソースを追加し、ダイレクト ルーティングの各番号を有効にする必要があります。

ヒント

アカウント内のアカウントと番号の両方でサービスを有効にする必要があります。

バックエンド サービス同期を使用したバックエンド サービスのプロビジョニング

Azure Communications Gateway は、通話を適切に接続するために、サービスが提供している番号に関する情報を持っている必要があります。 この情報を Azure Communications Gateway に提供するには、Azure Communications Gateway プロビジョニング API をお勧めしますが、数値管理ポータルを使用することもできます。 また、ほとんどのバックエンド サービスには、使用する番号とアカウントに関する情報をプロビジョニングする必要があります。 多くの場合、この要件は、新しいサービスを有効にするために複数の IT 統合プロジェクトが必要であることを意味します。 Azure Communications Gateway プロビジョニング プラットフォームには、一部のバックエンド サービスが事前に統合されており、それらをプロビジョニングするため、IT 統合要件が軽減されています。 この関数は、関連するサービスの バックエンド サービス同期 を有効にすることで使用できます。 つまり、Azure Communications Gateway プロビジョニング プラットフォームへの IT 統合は、他のバックエンド サービスでも再利用できます。

たとえば、Operator Connect では、すべての数値を Operator Connect API 経由でアップロードする必要があります。 Operator Connect でバックエンド サービス同期が有効になっている場合、Azure Communications Gateway にプロビジョニングされ、Operator Connect に対して有効になっている任意の番号が自動的に Operator Connect にプロビジョニングされます。つまり、Operator Connect API と統合する必要はありません。

Azure Communications Gateway プロビジョニング プラットフォームを使用したプロビジョニングは、Azure Communications Gateway がバックエンドから直接情報を取得できる一部のサービスではオプションです。 ただし、課金目的での顧客 SIP ヘッダーの追加などの一部の機能は使用できません。 バックエンド サービス同期をサポートしていないサービスの場合は、バックエンド サービスに対して他の IT 統合が直接必要になる場合があります。 プロビジョニング サポートの状態については、次の表を参照してください。

バックエンド サービス ACG プロビジョニング プラットフォーム経由でプロビジョニングする要件 サポートされているバックエンド サービスのプロビジョニング
直接ルーティング Mandatory
Zoom Mandatory
Azure Operator 通話保護 Mandatory
オペレーター接続 オプション
Teams 電話 Mobile オプション

バックエンド サービスへの同期は非同期です。つまり、バックエンド サービスがプロビジョニングされる前にプロビジョニング要求が成功する可能性があります。 この状態は、 に設定pendingされた フィールドを使用して serviceProvisioningStatus API 応答で示されます。 このフィールドが に設定successされるまで、オブジェクトに対してクエリを実行してプロビジョニング状態をチェックすることをお勧めします。 バックエンド システムのプロビジョニングに関するエラーは、応答で直接使用できるようになります。

次の例は、RFI、アカウント、および数値を管理するためのサンプル要求を示しています。

顧客を表すアカウントをCreateする

エンドポイントで PUT を accounts/<accountName> 使用して、顧客 Contoso 用にという名前 contoso のアカウントを作成し、そのアカウントに対して 1 つ以上の通信サービスを構成します。 If-None-Match ヘッダーを使用して、この名前のアカウント リソースがまだ存在しないことを確認します。

次の例では

  • ダイレクト ルーティングが構成されています。
  • 発信者 ID スクリーニングが有効になっています (既定値)。
  • 顧客のサブドメインは です contoso
  • DNS レコードを設定するために必要な顧客が指定した DNS TXT 値は、 region1Token フィールドと region2Token フィールドにあります。

要求:

PUT /accounts/contoso?api-version=2024-02-29 HTTP/1.1
{
  "name": "contoso",
  "serviceDetails": {
    "teamsDirectRouting": {
      "syncEnabled": true,
      "enabled": true,
      "configuration": {
        "callScreening": true,
        "subdomain": "contoso",
        "subdomainTokens": {
          "region1Token": "region1TokenValue",
          "region2Token": "region2TokenValue"
        }
      }
    }
  }
}

応答:

{
  "serviceProvisioningStatus": "synced",
  "serviceProvisioningErrors": null,
  "name": "contoso",
  "serviceDetails": {
    "teamsDirectRouting": {
      "syncEnabled": true,
      "enabled": true,
      "numberCount": 0,
      "configuration": {
        "callScreening": true,
        "subdomain": "contoso",
        "subdomainTokens": {
          "region1Token": "region1TokenValue",
          "region2Token": "region2TokenValue"
        }
      },
      "subdomainStatus": "provisioned"
    },
  }
}

次の例では、Teams オペレーター Connect のみで使用するアカウントを作成し、バックエンド同期を有効にして、このアカウントに関する情報 (アップロードされた番号など) も Teams にプロビジョニングします。

要求:

PUT /accounts/contoso?api-version=2024-02-29 HTTP/1.1
{
  "name": "contoso",
  "serviceDetails": {
    "teamsTenantId": "tenantIdString",
    "teamsOperatorConnect": {
      "syncEnabled": true,
      "enabled": true
    },
  }
}

応答:

{
  "serviceProvisioningStatus": "pending",
  "serviceProvisioningErrors": null,
  "name": "contoso",
  "serviceDetails": {
    "teamsTenantId": "tenantIdString",
    "teamsOperatorConnect": {
      "syncEnabled": true,
      "enabled": true,
      "numberCount": 0
    }
  }
}

アカウントの詳細を表示する

エンドポイントで GET を accounts/<accountName> 使用して、アカウントの詳細を取得します。 応答には、次のフィールドが含まれます。

  • 以前に設定されたすべての構成 (フィールドが設定されていない場合は既定)。
  • ACG で使用可能な各サービスのサブスクライバー数。
  • バックエンド サービス プロビジョニングの状態 (有効な場合)。
  • subdomainStatusは、直接ルーティングにのみ関連する DNS レコード プロビジョニングの状態を表します。
  • アカウントの ETag 現在の状態を表すヘッダー。 後続の更新要求で ヘッダーの 値を If-Match 使用して、他の API ユーザーによる変更を上書きしないようにすることができます。

要求:

GET /accounts/contoso?api-version=2024-02-29 HTTP/1.1

応答:

ETag: 12345
{
  "serviceProvisioningStatus": "synced",
  "serviceProvisioningErrors": null,
  "name": "contoso",
  "serviceDetails": {
    "teamsTenantId": "tenantIdString",
    "teamsOperatorConnect": {
      "syncEnabled": true,
      "enabled": true,
      "numberCount": 0
    },
  }
}

アカウントに複数のサービスが構成されている場合、同等の要求は次のように表示されます。

要求:

GET /accounts/contoso?api-version=2024-02-29 HTTP/1.1

応答:

ETag: 12345
{
  "serviceProvisioningStatus": "synced",
  "serviceProvisioningErrors": null,
  "name": "contoso",
  "serviceDetails": {
    "teamsTenantId": "tenantIdString",
    "teamsOperatorConnect": {
      "syncEnabled": true,
      "enabled": true
    },
    "teamsDirectRouting": {
      "syncEnabled": true,
      "enabled": true,
      "numberCount": 0,
      "configuration": {
        "callScreening": true,
        "subdomain": "contoso",
        "subdomainTokens": {
          "region1Token": "region1",
          "region2Token": "region2"
        }
      },
      "subdomainStatus": "provisioned"
    },
  }
}

アカウントの構成を更新する

エンドポイントで PUT を accounts/<accountName> 使用して、アカウントの構成を更新します。 更新によって別のユーザーによる変更が上書きされないようにするには、アカウントの最新の応答から ETag を含むヘッダーを追加 If-Match します。

要求:

PUT /accounts/contoso?api-version=2024-02-29 HTTP/1.1
ETag: 12345
{
  "name": "contoso",
  "serviceDetails": {
    "teamsTenantId": "tenantIdString",
    "teamsOperatorConnect": {
      "syncEnabled": false,
      "enabled": true
    },
    "teamsDirectRouting": {
      "syncEnabled": true,
      "enabled": true,
      "numberCount": 0,
      "configuration": {
        "callScreening": true,
        "subdomain": "contoso",
        "subdomainTokens": {
          "region1Token": "region1",
          "region2Token": "region2"
        }
      },
      "subdomainStatus": "provisioned"
    },
  }
}

応答:

ETag: 56789
{
  "serviceProvisioningStatus": "pending",
  "serviceProvisioningErrors": null,
  "name": "contoso",
  "serviceDetails": {
    "teamsTenantId": "tenantIdString",
    "teamsOperatorConnect": {
      "syncEnabled": false,
      "enabled": true
    },
    "teamsDirectRouting": {
      "syncEnabled": true,
      "enabled": true,
      "numberCount": 0,
      "configuration": {
        "callScreening": true,
        "subdomain": "contoso",
        "subdomainTokens": {
          "region1Token": "region1",
          "region2Token": "region2"
        }
      },
      "subdomainStatus": "provisioned"
    },
  }
}

アカウントに 1 つの番号を追加する

エンドポイントで PUT を account/<accountName>/numbers/<telephoneNumber> 使用して、アカウントに数値を追加し、1 つ以上の通信サービスを有効にして、他の構成を追加します。 選択した通信サービスもアカウントで構成する必要があります。 If-None-Match ヘッダーを使用して、この番号を持つ番号リソースがまだ存在していないことを確認します。 すべての数値は E.164 形式で作成する必要があります。

次の例では

  • 数値は +123451です。
  • オペレーター接続が有効です。
  • オペレーター接続に番号をアップロードするために必要な構成が用意されています
  • customSipHeader は、Azure Communications Gateway が、オペレーター ネットワークに送信されるメッセージに値 exampleHeaderContents を含むヘッダーを追加する必要があることを指定します。 ヘッダーの名前は、Azure Communications Gateway のデプロイの一部として設定されます。
  • 応答の フィールドには serviceProvisioningStatus 、バックエンド サービスへの同期の状態が表示されます。
PUT /accounts/contoso/numbers/+123451?api-version=2024-02-29 HTTP/1.1
{
  "telephoneNumber": "+123451",
  "accountName": "contoso",
  "serviceDetails": {
    "teamsOperatorConnect": {
      "enabled": true,
      "configuration": {
        "usage": "CallingUserAssignment",
        "choosableCapabilities": [
          "InboundCalling",
          "OutboundCalling"
        ],
        "civicAddressId": "civicAddressIdString",
        "allowTenantAddressUpdate": true,
      }
    },
  },
  "configuration": {
    "customSipHeader": "exampleHeaderContents"
  }
}

応答:

{
  "serviceProvisioningStatus": "pending",
  "serviceProvisioningErrors": null,
  "telephoneNumber": "+123451",
  "accountName": "contoso",
  "serviceDetails": {
    "teamsOperatorConnect": {
      "enabled": true,
      "assignmentStatus": "assigned",
      "configuration": {
        "usage": "CallingUserAssignment",
        "choosableCapabilities": [
          "InboundCalling",
          "OutboundCalling"
        ],
        "civicAddressId": "civicAddressIdString",
        "allowTenantAddressUpdate": true,
      }
    },
  },
  "configuration": {
    "customSipHeader": "exampleHeaderContents"
  }
}

しばらくしてからプロビジョニングの状態を確認する

プロビジョニング アクションの後の account/<accountName>/numbers/<telephoneNumber> で GET を使用して、番号の状態をチェックします。 数値が正常にプロビジョニングされた場合、フィールドは serviceProvisioningStatus から pendingsynced更新されます。

要求:

GET /accounts/contoso/numbers/+123451?api-version=2024-02-29 HTTP/1.1

応答:

{
  "serviceProvisioningStatus": "synced",
  "serviceProvisioningErrors": null,
  "telephoneNumber": "+123451",
  "accountName": "contoso",
  "serviceDetails": {
    "teamsOperatorConnect": {
      "enabled": true,
      "assignmentStatus": "assigned",
      "configuration": {
        "usage": "CallingUserAssignment",
        "choosableCapabilities": [
          "InboundCalling",
          "OutboundCalling"
        ],
        "civicAddressId": "civicAddressIdString",
        "allowTenantAddressUpdate": true,
      }
    },
  },
  "configuration": {
    "customSipHeader": "exampleHeaderContents"
  }
}

番号のアップロードに関するバックエンド サービス プロビジョニングのエラー

この例では、数値をアップロードするときのバックエンド プロビジョニングでエラーが発生し、応答に反映されます。 エラー メッセージはバックエンド サービスから透過的に渡されます。

注意

最初は、数値をプロビジョニングするときに状態があり pending 、成功/失敗を確認するために再度クエリを実行する必要があります。

フィールドの値がない元の usage 要求。

PUT /accounts/contoso/numbers/+123451?api-version=2024-02-29 HTTP/1.1
{
  "telephoneNumber": "+123451",
  "accountName": "contoso",
  "serviceDetails": {
    "teamsOperatorConnect": {
      "enabled": true,
      "configuration": {
        "usage": "",
        "choosableCapabilities": [
          "InboundCalling",
          "OutboundCalling"
        ],
        "civicAddressId": "civicAddressIdString",
        "allowTenantAddressUpdate": true,
      }
    },
  },
  "configuration": {
    "customSipHeader": "exampleHeaderContents"
  }
}

しばらくしてからの GET クエリからの応答:

{  
  "serviceProvisioningStatus": "failed",
  "serviceProvisioningErrors": [
    {
      "code": "InvalidRequest",
      "message": "Invalid/missing required configuration attributes: Usage",
      "target": "oc",
    }
  ],
  "telephoneNumber": "+123451",
  "accountName": "contoso",
  "serviceDetails": {
    "teamsOperatorConnect": {
      "enabled": true,
      "assignmentStatus": "assigned",
      "configuration": {
        "usage": "",
        "choosableCapabilities": [
          "InboundCalling",
          "OutboundCalling"
        ],
        "civicAddressId": "civicAddressIdString",
        "allowTenantAddressUpdate": true,
      }
    },
  },
  "configuration": {
    "customSipHeader": "exampleHeaderContents"
  }

数値の構成を更新する

エンドポイントで PUT を使用して、 account/<accountName>/numbers/<telephoneNumber> 数値の構成を更新します。 更新によって他のユーザーによって行われた変更が上書きされないようにするには、番号の最新の応答から ETag を使用して If-Match ヘッダーを追加します。

要求:

PUT /accounts/contoso/numbers/+123451?api-version=2024-02-29 HTTP/1.1
ETag: 123
{
  "telephoneNumber": "+123451",
  "accountName": "contoso",
  "serviceDetails": {
    "teamsOperatorConnect": {
      "enabled": true,
      "configuration": {
        "usage": "CallingUserAssignment",
        "choosableCapabilities": [
          "InboundCalling",
          "OutboundCalling",
          "Mobile"
        ],
        "civicAddressId": "civicAddressIdString",
        "allowTenantAddressUpdate": true,
      }
    },
  },
  "configuration": {
    "customSipHeader": "exampleHeaderContents"
  }
}

応答:

{
  "serviceProvisioningStatus": "pending",
  "serviceProvisioningErrors": null,
  "telephoneNumber": "+123451",
  "accountName": "contoso",
  "serviceDetails": {
    "teamsOperatorConnect": {
      "enabled": true,
      "assignmentStatus": "assigned",
      "configuration": {
        "usage": "CallingUserAssignment",
        "choosableCapabilities": [
          "InboundCalling",
          "OutboundCalling",
          "Mobile"
        ],
        "civicAddressId": "civicAddressIdString",
        "allowTenantAddressUpdate": true,
      }
    },
  },
  "configuration": {
    "customSipHeader": "exampleHeaderContents"
  }
}

情報の要求を一覧表示する

エンドポイントで GET を /teamsRequestsForInformation 使用して、潜在的な顧客から送信された Teams の同意の一覧を取得します。

要求:

GET /teamsRequestsForInformation?api-version=2024-02-29 HTTP/1.1

応答:

{
  "value": [
    {
      "serviceProvisioningStatus": "synced",
      "serviceProvisioningErrors": null,
      "id": "contoso",
      "tenantId": "contosoTenantId",
      "accountName": "contoso",
      "productContext": "teams",
      "operatorId": "string",
      "status": "active",
      "consentedOn": "2024-05-07T11:15:10.519Z",
      "lastModifiedOn": "2024-05-07T11:15:10.519Z",
      "consentedCountries": [
        "string"
      ],
      "contacts": [
        {
          "fullName": "Example Name",
          "email": "example@contoso.com",
          "telephoneNumber": "+1234567890",
          "companyName": "contoso",
          "companySize": "size"
        }
      ],
      "customerRelationship": {
        "status": "example status",
        "lastModifiedOn": "2024-05-07T11:15:10.520Z",
        "comment": "example comment"
      }
    },
    {
      "serviceProvisioningStatus": "synced",
      "serviceProvisioningErrors": null,
      "id": "contoso2",
      "tenantId": "contosoTenantId2",
      "accountName": "contoso2",
      "productContext": "teams",
      "operatorId": "string",
      "status": "active",
      "consentedOn": "2024-05-07T11:15:10.519Z",
      "lastModifiedOn": "2024-05-07T11:15:10.519Z",
      "consentedCountries": [
        "string"
      ],
      "contacts": [
        {
          "fullName": "Example Name2",
          "email": "example@contoso2.com",
          "telephoneNumber": "+1234567891",
          "companyName": "contoso2",
          "companySize": "size"
        }
      ],
      "customerRelationship": {
        "status": "example status",
        "lastModifiedOn": "2024-05-07T11:15:10.520Z",
        "comment": "example comment"
      }
    },
    ... // more RFIs
  ],
  "nextLink": "string"
}

情報の要求を更新する

エンドポイントで PATCH を /teamsRequestsForInformation/<tenantID> 使用して、バックエンド サービスに反映される RFI の状態を更新します。 オペレーター Connect と Teams 電話 Mobile を使用すると、要求の状態をエンド カスタマーに示して、更新された状態が顧客の Teams 管理 センターに表示されるようにすることができます。

要求

PATCH /teamsRequestsForInformation/contosoTenantId
{
  "customerRelationship": {
    "status": "new status",
    "comment": "new comment"
  }
}

Response

{
    {
      "serviceProvisioningStatus": "pending",
      "serviceProvisioningErrors": null,
      "id": "contoso",
      "tenantId": "contosoTenantId",
      "accountName": "contoso",
      "productContext": "teams",
      "operatorId": "string",
      "status": "active",
      "consentedOn": "2024-05-07T11:15:10.519Z",
      "lastModifiedOn": "2024-05-07T11:15:10.519Z",
      "consentedCountries": [
        "string"
      ],
      "contacts": [
        {
          "fullName": "Example Name",
          "email": "example@contoso.com",
          "telephoneNumber": "+1234567890",
          "companyName": "contoso",
          "companySize": "size"
        }
      ],
      "customerRelationship": {
        "status": "new status",
        "lastModifiedOn": "2024-05-07T12:15:10.520Z",
        "comment": "new comment"
      }
    }
}

アカウントに割り当てられているすべての番号を一覧表示する

エンドポイントで GET 要求を使用して、 /accounts/<accountName>/numbers そのアカウントに対してプロビジョニングされた番号の一覧を取得します。

要求:

GET /accounts/contoso/numbers?api-version=2024-02-29 HTTP/1.1

オペレーター接続番号のみを持つアカウントに対する応答:

{
  "value": [
    {
      "serviceProvisioningStatus": "pending",
      "serviceProvisioningErrors": null,
      "telephoneNumber": "+123451",
      "accountName": "contoso",
      "serviceDetails": {
        "teamsOperatorConnect": {
          "enabled": true,
          "assignmentStatus": "assigned",
          "configuration": {
            "usage": "CallingUserAssignment",
            "choosableCapabilities": [
              "InboundCalling",
              "OutboundCalling",
              "Mobile"
            ],
            "civicAddressId": "civicAddressIdString",
            "allowTenantAddressUpdate": true,
          }
        },
      },
      "configuration": {
        "customSipHeader": "exampleHeaderContents"
      }
    },
    ... // more OC numbers
  ],
  nextLink: "string"
}

オペレーター接続番号とダイレクト ルーティング番号の両方がプロビジョニングされたアカウントの応答:

{
  "value": [
    {
      "serviceProvisioningStatus": "synced",
      "serviceProvisioningErrors": null,
      "telephoneNumber": "+123451",
      "accountName": "contoso",
      "serviceDetails": {
        "teamsOperatorConnect": {
          "enabled": true,
          "assignmentStatus": "assigned",
          "configuration": {
            "usage": "CallingUserAssignment",
            "choosableCapabilities": [
              "InboundCalling",
              "OutboundCalling",
              "Mobile"
            ],
            "civicAddressId": "civicAddressIdString",
            "allowTenantAddressUpdate": true,
          }
        },
      },
      "configuration": {
        "customSipHeader": "exampleHeaderContents"
      }
    },
    {
      "serviceProvisioningStatus": "synced",
      "serviceProvisioningErrors": null,
      "telephoneNumber": "+123452",
      "accountName": "contoso",
      "serviceDetails": {
        "teamsDirectRouting": {
          "enabled": true
        }
      },
      "configuration": {
        "customSipHeader": "exampleHeaderContents"
      }
    },
    ... // more DR and OC numbers
  ],
  nextLink: "string"
}

特定のアカウントのすべての緊急対応場所を一覧表示する

エンドポイントで GET 要求を/accounts/<accountName>/teamsCivicAddresses使用して、そのアカウントの Teams 管理 センターで構成されている Civic Addresses の完全な一覧を取得します。 アカウント内で数値を作成または更新する場合は、 locationid このリストの母集団を として使用できます。

要求:

GET /accounts/contoso/teamsCivicAddresses?api-version=2024-02-29 HTTP/1.1

応答:

{
  "value": [
    {
      "id": "string",
      "country": "string",
      "houseNumber": "string",
      "houseNumberSuffix": "string",
      "preDirectional": "string",
      "streetName": "string",
      "streetSuffix": "string",
      "postDirectional": "string",
      "stateOrProvince": "string",
      "countyOrDistrict": "string",
      "cityOrTown": "string",
      "cityOrTownAlias": "string",
      "postalOrZipCode": "string",
      "description": "string",
      "companyName": "string",
      "companyId": "string",
      "defaultLocationId": "string",
      "validationStatus": "notValidated",
      "tenantId": "string",
      "partnerId": "string",
      "locations": [
        {
          "id": "string",
          "civicAddressId": "string",
          "description": "string",
          "additionalInfo": "string",
          "isDefault": true,
          "elin": "string"
        }
      ],
      "latitude": "string",
      "longitude": "string"
    },
    ... // more locations
  ],
  "nextLink": "string"
}

アカウントから番号を削除する

エンドポイントで DELETE を /accounts/<accountName>/numbers/<telephoneNumber> 使用して、テナントから番号を解放します。 この操作では、割り当てられている場合にユーザーから番号の割り当てを解除し、テナントから番号を解放します。

要求:

DELETE /accounts/contoso/numbers/+123451?api-version=2024-02-29 HTTP/1.1

応答:

204 Status Code

トラブルシューティング

  • Teams ダイレクト ルーティングは、アカウントの数値に対して機能しません。

    • アカウントに GET を送信し、 が と等しいことを確認して、DNS トークンがserviceDetails.teamsDirectRoutingsubdomainStatus検証されていることを確認しますProvisioned
  • ダイレクト ルーティング/ズームを使用するように数値を構成しましたが、動作していないようです。

    • アカウントがダイレクト ルーティング/ズームを使用するように構成されていること、およびこの特定の機能が有効になっていることを確認します。
  • API に接続できましたが、複数の要求を行った後、接続のタイムアウトが開始されます。

    • プロビジョニング API はレート制限 (1 秒あたりの妥当なレート) です。 レート制限を回避するために、要求をスペースアウトするか、バッチ エンドポイントを使用します。 レート制限は最終的にタイムアウトになり、接続できるようになります。

次の手順

Azure Communications Gateway プロビジョニング API との統合を開始します。