イントロダクション
このチュートリアルでは、ユーザー関連情報を受信するように Azure 関数を設定する方法に関する詳細なガイダンスを提供します。 Azure 関数の設定を強くお勧めします。 これは、Contoso アプリ (ユーザー ID やユーザー トークンなど) でのアプリケーション パラメーターのハードコーディングを回避するのに役立ちます。 この情報は非常に機密性の高い情報です。 さらに重要なのは、バックエンドでユーザー トークンを定期的に更新することです。 ユーザー ID とトークンの組み合わせをハードコーディングするには、更新のたびに値を編集する必要があります。
[前提条件]
作業を開始する前に、次の作業を行ってください。
- アクティブなサブスクリプションがある Azure アカウントを作成します。 詳細については、「 アカウントを無料で作成する」を参照してください。
- Visual Studio Code をインストールします。
関数の設定
- Visual Studio Code に Azure 関数拡張機能をインストールします。 Visual Studio Code のプラグイン ブラウザーから、またはこのリンクに従ってインストールできます。
- このリンクに従って、ローカルの Azure 関数アプリを設定します。 JavaScript の HTTP トリガー テンプレートを使用してローカル関数を作成する必要があります。
- Azure Communication Services ライブラリをインストールします。 ID ライブラリを使用して、ユーザー アクセス トークンを生成します。 ローカルの Azure 関数アプリ ディレクトリで npm install コマンドを実行して、Azure Communication Services Identity SDK for JavaScript をインストールします。
npm install @azure/communication-identity --save
-
index.jsファイルを次のコードのように変更します。
const { CommunicationIdentityClient } = require('@azure/communication-identity');
const connectionString = '<your_connection_string>'
const acsEndpoint = "<your_ACS_endpoint>"
module.exports = async function (context, req) {
let tokenClient = new CommunicationIdentityClient(connectionString);
const userIDHolder = await tokenClient.createUser();
const userId = userIDHolder.communicationUserId
const userToken = await (await tokenClient.getToken(userIDHolder, ["chat"])).token;
context.res = {
body: {
acsEndpoint,
userId,
userToken
}
};
}
上記のコードに対する説明: 最初の行は、 CommunicationIdentityClientのインターフェイスをインポートします。 2 行目の接続文字列は、Azure portal の Azure Communication Services リソースにあります。
ACSEndpointは、作成された Azure Communication Services リソースの URL です。
- Visual Studio Code でローカルの Azure 関数フォルダーを開きます。
index.jsを開き、ローカルの Azure 関数を実行します。 ローカルの Azure 関数エンドポイントが作成され、ターミナルに出力されます。 印刷されるメッセージは次のようになります。
Functions:
HttpTrigger1: [GET,POST] http://localhost:7071/api/HttpTrigger1
ブラウザーでリンクを開きます。 結果は次の例のようになります。
{
"acsEndpoint": "<Azure Function endpoint>",
"userId": "8:acs:a636364c-c565-435d-9818-95247f8a1471_00000014-f43f-b90f-9f3b-8e3a0d00c5d9",
"userToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOmE2MzYzNjRjLWM1NjUtNDM1ZC05ODE4LTk1MjQ3ZjhhMTQ3MV8wMDAwMDAxNC1mNDNmLWI5MGYtOWYzYi04ZTNhMGQwMGM1ZDkiLCJzY3AiOjE3OTIsImNzaSI6IjE2Njc4NjI3NjIiLCJleHAiOjE2Njc5NDkxNjIsImFjc1Njb3BlIjoiY2hhdCIsInJlc291cmNlSWQiOiJhNjM2MzY0Yy1jNTY1LTQzNWQtOTgxOC05NTI0N2Y4YTE0NzEiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY3ODYyNzYyfQ.t-WpaUUmLJaD0V2vgn3M5EKdJUQ_JnR2jnBUZq3J0zMADTnFss6TNHMIQ-Zvsumwy14T1rpw-1FMjR-zz2icxo_mcTEM6hG77gHzEgMR4ClGuE1uRN7O4-326ql5MDixczFeIvIG8s9kAeJQl8N9YjulvRkGS_JZaqMs2T8Mu7qzdIOiXxxlmcl0HeplxLaW59ICF_M4VPgUYFb4PWMRqLXWjKyQ_WhiaDC3FvhpE_Bdb5U1eQXDw793V1_CRyx9jMuOB8Ao7DzqLBQEhgNN3A9jfEvIE3gdwafpBWlQEdw-Uuf2p1_xzvr0Akf3ziWUsVXb9pxNlQQCc19ztl3MIQ"
}
ローカル関数をクラウドにデプロイします。 詳細については、 このドキュメントを参照してください。
デプロイされた Azure 関数をテストします。 まず、Azure portal で Azure 関数を見つけます。 次に、[関数 URL の取得] ボタンを使用して Azure 関数エンドポイントを取得します。 表示される結果は、手順 5 で示した結果のようになります。 Azure 関数エンドポイントは、アプリケーション パラメーターを初期化するためにアプリで使用されます。
UserTokenClientを実装します。これは、ターゲットの Azure Function リソースを呼び出し、返された JSON オブジェクトから Azure Communication Services エンドポイント、ユーザー ID、およびユーザー トークンを取得するために使用されます。 使用については、サンプル アプリを参照してください。
トラブルシューティング ガイド
- Azure 関数拡張機能がローカル関数を Azure クラウドにデプロイできなかった場合は、Visual Studio Code のバージョンと、バグを持つ Azure 関数拡張機能が使用されていることが原因である可能性があります。 このバージョンの組み合わせは、Visual Studio Code のバージョン
1.68.1と Azure 関数拡張機能のバージョン1.2.1で動作するようにテストされています。 - アプリケーション定数を初期化する場所は難しいですが、重要です。 チャット Android クイック スタートを再確認します。 具体的には、「アプリケーション定数を設定する」セクションの強調表示ノートを参照し、使用しているバージョンのサンプル アプリと比較します。
(省略可能) Azure 関数エンドポイントをセキュリティで保護する
デモンストレーションの目的で、このサンプルでは、既定でパブリックにアクセス可能なエンドポイントを使用して、Azure Communication Services トークンをフェッチします。 運用シナリオの場合、1 つのオプションは、独自のセキュリティで保護されたエンドポイントを使用して独自のトークンをプロビジョニングすることです。
追加の構成では、このサンプルは Microsoft Entra で保護されたエンドポイントへの接続をサポートしているため、アプリが Azure Communication Services トークンをフェッチするためにユーザー ログが必要になります。 ユーザーは、アプリにアクセスするために Microsoft アカウントでサインインする必要があります。 このセットアップにより、ユーザーがログインする必要がある間、セキュリティ レベルが向上します。 ユース ケースに基づいて有効にするかどうかを決定します。
現在、サンプル コードでは Microsoft Entra ID はサポートされていません。 アプリと Azure 関数で有効にするには、次のリンクに従います。
(Android プラットフォーム設定を使用して) Microsoft Entra ID でアプリを登録します。
Microsoft Entra ID ログインを使用するように App Service または Azure Functions アプリを構成します。