反應
本文說明如何實作呼叫 SDK Azure 通訊服務 回應。 這項功能可讓群組通話或會議中的參與者傳送和接收 Azure 通訊服務 和Microsoft Teams 參與者的反應。
Microsoft Teams 會議中使用者的組態和原則設定會控制用戶的反應。 如需詳細資訊,請參閱在 Teams 會議中管理反應,以及 Microsoft Teams 中的網路研討會和會議選項。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- 已部署通訊服務資源。 建立通訊服務資源。
- 用來啟用呼叫用戶端的使用者存取權杖。 如需詳細資訊,請參閱建立和管理存取權杖。
- 選擇性:完成快速入門,將 語音通話新增至您的應用程式。
反應的限制
系統會定期依批次提取反應。 目前的批次限制是每 3 秒提取 20,000 個反應。
如果反應數目超過限制,則會在下一批中傳送剩餘的反應。
支援
下表定義 Azure 通訊服務 中回應的支援。
Teams 會議支援是以 Teams 原則為基礎。
身分識別和通話類型
下表顯示不同呼叫和身分識別類型中回應的支援。
身分識別 | Teams Interop 會議 | 會議室 | 1:1 通話 | 群組通話 | Teams Interop 群組通話 |
---|---|---|---|---|---|
通訊服務使用者 | ✔️ | ✔️ | ✔️ | ✔️ | |
Microsoft 365 使用者 | ✔️ | ✔️ | ✔️ |
Operations
下表顯示呼叫SDK對個別身分識別類型的回應支援。
Operations | 通訊服務使用者 | Microsoft 365 使用者 |
---|---|---|
發送具體的反應(如,愛,笑,掌聲,驚訝) | ✔️ | ✔️ |
收到具體的反應(如,愛情,笑,掌聲,驚訝) | ✔️ | ✔️ |
SDK
下表顯示個別 Azure 通訊服務 SDK 中共同模式功能的支援。
平台 | Web | Web UI | iOS | iOS UI | Android | Android UI | Windows |
---|---|---|---|---|---|---|---|
受到支援 | ✔️ | ✔️ |
安裝 SDK
使用 npm install
命令,安裝適用於 JavaScript 的 Azure 通訊服務通用和通話 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
有兩種可能的狀態:
已連線 - 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 通訊服務 參與者可以在群組通話期間傳送和接收回應:
- 讚
- 喜愛
- 掌聲
- 大笑
- 驚奇
若要傳送反應,請使用 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 目前不支持反應。