リアクション
この記事では、Azure Communication Services Calling SDK でリアクションを実装する方法について説明します。 この機能を使用すると、グループ通話または会議内の参加者が Azure Communication Services および Microsoft Teams の参加者とリアクションを送受信できるようになります。
Microsoft Teams 会議のユーザーのリアクションは、Teams の構成とポリシー設定により制御されます。 詳しくは、「Teams 会議とウェビナーでリアクションを管理する」と「Microsoft Teamsの会議オプション」をご覧ください。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- デプロイ済みの Communication Services リソース。 Communication Services リソースを作成します。
- 通話クライアントを有効にするためのユーザー アクセス トークン。 詳細については、アクセス トークンの作成と管理に関する記事を参照してください。
- 省略可能: クイックスタートを完了して、アプリケーションに音声通話を追加します。
リアクションでの制限
システムは、一定の間隔でバッチによってリアクションをプルします。 現在のバッチ制限は、3 秒ごとに 20,000 件のリアクションをプルすることです。
リアクションの数が制限を超えた場合、残りのリアクションは次のバッチで送信されます。
サポート
以下の表は、Azure Communication Services でのリアクションのサポートを定義したものです。
Teams 会議のサポートは、Teams ポリシーに基づきます。
ID と通話の種類
次の表は、さまざまな通話と ID の種類におけるリアクションのサポートを示しています。
ID | Teams 相互運用機能会議 | ルーム | 1 対 1 の通話 | グループ通話 | グループ通話の相互運用機能 |
---|---|---|---|---|---|
Communication Services ユーザー | ✔️ | ✔️ | ✔️ | ✔️ | |
Microsoft 365 ユーザー | ✔️ | ✔️ | ✔️ |
操作
次の表は、個々の ID の種類に対する Calling SDK におけるリアクションのサポートを示しています。
操作 | Communication Services ユーザー | Microsoft 365 ユーザー |
---|---|---|
特定のリアクション (愛、笑い、拍手、驚きなど) を送信する | ✔️ | ✔️ |
特定のリアクション (愛、笑い、拍手、驚きなど) を受信する | ✔️ | ✔️ |
SDK
次の表は、個々の Azure Communication Services SDK における Together モード機能のサポートを示しています。
プラットフォーム | Web | Web UI | iOS | iOS UI | Android | Android UI | Windows |
---|---|---|---|---|---|---|---|
サポートの有無 | ✔️ | ✔️ |
SDK のインストール
npm install
コマンドを使用して、JavaScript 用の Azure Communication Services の Common SDK と Calling SDK をインストールします。
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
必要なオブジェクトを初期化する
CallClient
インスタンスは、ほとんどの通話操作に必要です。 新しい CallClient
インスタンスを作成する際に、Logger
インスタンスなどのカスタム オプションを使用してこれを構成できます。
CallClient
インスタンスでは、createCallAgent
を呼び出すことで CallAgent
インスタンスを作成できます。 このメソッドでは、非同期的に CallAgent
インスタンス オブジェクトが返されます。
createCallAgent
メソッドでは、CommunicationTokenCredential
が引数として使用されます。 これは、ユーザー アクセス トークンを受け取ります。
CallClient
インスタンスで getDeviceManager
メソッドを使用して、deviceManager
にアクセスできます。
const { CallClient } = require('@azure/communication-calling');
const { AzureCommunicationTokenCredential} = require('@azure/communication-common');
const { AzureLogger, setLogLevel } = require("@azure/logger");
// Set the logger's log level
setLogLevel('verbose');
// Redirect log output to console, file, buffer, REST API, or whatever location you want
AzureLogger.log = (...args) => {
console.log(...args); // Redirect log output to console
};
const userToken = '<USER_TOKEN>';
callClient = new CallClient(options);
const tokenCredential = new AzureCommunicationTokenCredential(userToken);
const callAgent = await callClient.createCallAgent(tokenCredential, {displayName: 'optional Azure Communication Services user name'});
const deviceManager = await callClient.getDeviceManager()
Microsoft インフラストラクチャへの SDK 接続を最適に管理する方法
Call Agent
インスタンスは、(呼び出しを結合または開始するために) 呼び出しを管理するのに役立ちます。 呼び出しの SDK を機能させるには、Microsoft インフラストラクチャに接続して着信呼び出しの通知を取得し、他の呼び出しの詳細を調整する必要があります。 Call Agent
には、次の 2 つの状態があります。
接続済み - Connected
の Call Agent
connectionStatue 値は、クライアント SDK が接続されており、Microsoft インフラストラクチャから通知を受信できることを意味します。
切断済み - Disconnected
の Call Agent
connectionStatue 値は、SDK の正常な接続を妨げる問題があることを示します。 Call Agent
を再作成する必要があります。
invalidToken
: トークンが有効期限切れであるか、無効な場合、Call Agent
インスタンスがこのエラーで切断されます。connectionIssue
: クライアントの Microsoft インフラストラクチャへの接続で問題が発生した場合、何度も再試行した後に、Call Agent
がconnectionIssue
エラーを提示します。
connectionState
プロパティの現在の値を調べて、ローカル Call Agent
が Microsoft インフラストラクチャに接続されているかどうかを確認できます。 アクティブな呼び出し中に、connectionStateChanged
イベントをリッスンして、Call Agent
の状態が接続済みから切断済みに変化したかどうかを判断できます。
const connectionState = callAgentInstance.connectionState;
console.log(connectionState); // it may return either of 'Connected' | 'Disconnected'
const connectionStateCallback = (args) => {
console.log(args); // it will return an object with oldState and newState, each of having a value of either of 'Connected' | 'Disconnected'
// it will also return reason, either of 'invalidToken' | 'connectionIssue'
}
callAgentInstance.on('connectionStateChanged', connectionStateCallback);
会議参加者のリアクションを実装する
Azure Communication Services 内では、グループ通話時に次のリアクションを送受信できます。
- いいね
- 超いいね!
- 拍手
- うけるね
- すごいね
リアクションを送信するには、sendReaction(reactionMessage)
API を使用します。 リアクションを受信するには、メッセージは Reaction
列挙型を属性として使用する ReactionMessage
型で構築します。
サブスクライバー イベント データを提供するイベントを登録する必要があります。
export interface ReactionEventPayload {
/**
* identifier for a participant
*/
identifier: CommunicationUserIdentifier | MicrosoftTeamsUserIdentifier;
/**
* reaction type received
*/
reactionMessage: ReactionMessage;
}
どのリアクションがどの参加者から送られるかは identifier
属性を使って判断でき、リアクションの種類は ReactionMessage
から取得できます。
会議でのリアクションの送信方法を示すサンプル
const reaction = call.feature(SDK.Features.Reaction);
const reactionMessage: SDK.ReactionMessage = {
reactionType: 'like'
};
await reaction.sendReaction(reactionMessage);
会議でのリアクションの受信方法を示すサンプル
const reaction = call.feature(SDK.Features.Reaction);
reaction.on('reaction', event => {
// user identifier
console.log("User Mri - " + event.identifier);
// received reaction
console.log("User Mri - " + event.reactionMessage.reactionType);
// reaction message
console.log("reaction message - " + JSON.stringify(event.reactionMessage));
}
リアクションを使用する際のキー ポイント
- Microsoft Teams の相互運用性シナリオでは、リアクションがサポートされます。 サポートは、Teams ポリシーに基づきます。
- リアクションは Web 呼び出し SDK でサポートされています。
- ネイティブ SDK ではリアクションが現在はサポートされていません。