この演習では、カスタム アプリから Microsoft Teams 会議に音声/ビデオ通話を行えるように、ACS UI コーリングコンポジット を React アプリに追加します。
GitHub にアクセスしてサインインします。 GitHub アカウントをまだお持ちでない場合は、[ サインアップ ] オプションを選択して作成できます。
Fork オプションを選択して、目的の GitHub 組織/アカウントにリポジトリを追加します。
次のコマンドを実行して、このリポジトリをマシンに複製します。 <YOUR_ORG_NAME>を GitHub の組織/アカウント名に置き換えます。
git clone https://github.com/<YOUR_ORG_NAME>/MicrosoftCloudVisual Studio Code で サンプル/acs-to-teams-meeting プロジェクト フォルダーを開きます。
クライアント/react フォルダーを展開します。
VS Code で package.json ファイルを開き、次の ACS パッケージが含まれていることに注意してください。
@azure/communication-common @azure/communication-reactターミナル ウィンドウを開き、次のコマンドを実行して 、npm 10 以上がインストールされていることを再確認します。
npm --versionヒント
npm 10 以上がインストールされていない場合は、
npm install -g npmを実行して npm を最新バージョンに更新できます。ターミナル ウィンドウを開き、
npm installフォルダーで コマンドを実行して、アプリケーションの依存関係をインストールします。App.tsx を開き、ファイルの先頭にあるインポートを調べるのに少し時間がかかります。 これらは、アプリで使用される ACS セキュリティおよびオーディオ/ビデオ呼び出しシンボルのインポートを処理します。
import { AzureCommunicationTokenCredential, CommunicationUserIdentifier } from '@azure/communication-common'; import { CallComposite, fromFlatCommunicationIdentifier, useAzureCommunicationCallAdapter } from '@azure/communication-react'; import React, { useState, useMemo, useEffect } from 'react'; import './App.css';注
CallCompositeコンポーネントの使用方法については、この演習の後半で説明します。 アプリからMicrosoft Teams会議への音声/ビデオ通話を可能にする Azure Communication Services の主要な UI 機能を提供します。Appコンポーネントを見つけて、次のタスクを実行します。- 少し時間を取って、コンポーネント内の
useState定義を調べます。 -
userIduseState関数の空の引用符を、前の演習でコピーした ACS ユーザー ID 値に置き換えます。 -
tokenuseState関数の空の引用符を、前の演習でコピーした ACS トークン値に置き換えます。 -
teamsMeetingLinkuseState関数の空の引用符を、前の演習でコピーした Teams 会議リンクの値に置き換えます。
// Replace '' with the ACS user identity value const [userId, setUserId] = useState<string>(''); // Replace '' with the ACS token value const [token, setToken] = useState<string>(''); // Replace '' with the Teams meeting link value const [teamsMeetingLink, setTeamsMeetingLink] = useState<string>('');注
このチュートリアルの後半では、
userId、token、およびteamsMeetingLinkの値を動的に取得する方法について説明します。- 少し時間を取って、コンポーネント内の
少し時間を取って、
useMemoコンポーネントのApp関数を調べてみましょう。-
credentialuseMemo関数は、トークンに値が設定されると、新しいAzureCommunicationTokenCredentialインスタンスを作成します。 -
callAdapterArgsuseMemo関数は、オーディオ/ビデオ呼び出しを行うために使用される引数を持つオブジェクトを返します。 ACS 呼び出し引数のuserId、credential、およびteamsMeetingLinkの値が使用されていることに注意してください。
const credential = useMemo(() => { if (token) { return new AzureCommunicationTokenCredential(token) } return; }, [token]); const callAdapterArgs = useMemo(() => { if (userId && credential && displayName && teamsMeetingLink) { return { userId: fromFlatCommunicationIdentifier(userId) as CommunicationUserIdentifier, displayName, credential, locator: { meetingLink: teamsMeetingLink }, } } return {}; }, [userId, credential, displayName, teamsMeetingLink]);注
useMemoは、必要なパラメーターが渡されるときに、AzureCommunicationTokenCredentialオブジェクトと呼び出しアダプターの引数を 1 回だけ作成する必要があるため、このシナリオで使用されます。 useMemo に関するその他の詳細 については、こちらをご覧ください。-
credentialsとcallAdapterArgsの準備ができたら、次の行は ACS によって提供されるuseAzureCommunicationCallAdapterReact フックを使用して ACS コール アダプタを作成します。callAdapterオブジェクトは、後で複合コンポーネントを呼び出す UI で使用されます。const callAdapter = useAzureCommunicationCallAdapter(callAdapterArgs);注
useAzureCommunicationCallAdapterは React フックであるため、callAdapter値が有効になるまで、callAdapterArgsに値が割り当てられません。以前に、
Appコンポーネントの状態値へのユーザー ID、トークン、および Teams 会議リンクを割り当てた。 現時点では問題ありませんが、後の演習では、これらの値を動的に取得する方法について説明します。 前に値を設定したので、次に示すように、useEffect関数のコードをコメント アウトします。 次の演習で Azure Functions を実行したら、このコードを見直します。useEffect(() => { /* Commenting out for now const init = async () => { setMessage('Getting ACS user'); //Call Azure Function to get the ACS user identity and token let res = await fetch(process.env.REACT_APP_ACS_USER_FUNCTION as string); let user = await res.json(); setUserId(user.userId); setToken(user.token); setMessage('Getting Teams meeting link...'); //Call Azure Function to get the meeting link res = await fetch(process.env.REACT_APP_TEAMS_MEETING_FUNCTION as string); let link = await res.text(); setTeamsMeetingLink(link); setMessage(''); console.log('Teams meeting link', link); } init(); */ }, []);次の JSX コードを見つけます。 インポートした
CallComposite記号を使用して、React アプリから Teams 会議に音声/ビデオ通話を行うために使用されるユーザー インターフェイスをレンダリングします。 前に調べたcallAdapterは、必要な引数を指定するために、adapterプロパティに渡されます。if (callAdapter) { return ( <div> <h1>Contact Customer Service</h1> <div className="wrapper"> <CallComposite adapter={callAdapter} /> </div> </div> ); }続行する前にファイルを保存します。
ターミナル ウィンドウで
npm startを実行して、アプリケーションを実行します。 react フォルダー内でコマンドを実行していることを確認します。アプリケーションがビルドされると、呼び出し元の UI が表示されます。 マイクとカメラの選択を有効にして、通話を開始します。 待合室に配置されていることがわかります。 Microsoft Teamsで前に設定した会議に参加する場合は、ゲストに会議への参加を許可できます。
Ctrl + C キーを押してアプリケーションを停止します。 これで正常に実行できたので、ACS ユーザー ID とトークンを動的に取得し、Microsoft Teams会議を自動的に作成し、Microsoft Graph を使用して参加 URL を返す方法について説明します。