次の方法で共有


リアクション

この記事では、Azure Communication Services Calling SDK でリアクションを実装する方法について説明します。 この機能を使用すると、グループ通話または会議内の参加者が Azure Communication Services および Microsoft Teams の参加者とリアクションを送受信できるようになります。

Microsoft Teams 会議のユーザーのリアクションは、Teams の構成とポリシー設定により制御されます。 詳しくは、「Teams 会議とウェビナーでリアクションを管理する」と「Microsoft Teamsの会議オプション」をご覧ください。

前提条件

リアクションでの制限

システムは、一定の間隔でバッチによってリアクションをプルします。 現在のバッチ制限は、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 つの状態があります。

接続済み - ConnectedCall Agent connectionStatue 値は、クライアント SDK が接続されており、Microsoft インフラストラクチャから通知を受信できることを意味します。

切断済み - DisconnectedCall Agent connectionStatue 値は、SDK の正常な接続を妨げる問題があることを示します。 Call Agent を再作成する必要があります。

  • invalidToken: トークンが有効期限切れであるか、無効な場合、Call Agent インスタンスがこのエラーで切断されます。
  • connectionIssue: クライアントの Microsoft インフラストラクチャへの接続で問題が発生した場合、何度も再試行した後に、Call AgentconnectionIssue エラーを提示します。

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 ではリアクションが現在はサポートされていません。

次のステップ