Реакции
В этой статье описывается реализация реакций на Службы коммуникации Azure вызовов пакетов SDK. Эта возможность позволяет участникам группового звонка или собрания отправлять и получать реакции с участниками Службы коммуникации Azure и Microsoft Teams.
Параметры конфигурации и политики в Microsoft Teams определяют реакции пользователей на собрания Teams. Дополнительные сведения см. в разделе "Управление реакциями в собраниях Teams" и "Вебинары " и "Собрания" в Microsoft Teams.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Развернутый ресурс Служб коммуникации. Создайте ресурс Служб коммуникации.
- Маркер доступа пользователя для включения клиента для вызовов. Дополнительные сведения см. в статье о создании маркеров доступа и управлении ими.
- (Необязательно.) Выполните инструкции из краткого руководства Добавление функции голосового вызова в приложение.
Ограничения реакций
Система извлекает реакции по пакетам через регулярные интервалы. Текущее ограничение пакета составляет 20 000 реакций, оттягиваемых каждые 3 секунды.
Если количество реакций превышает предел, оставшиеся реакции отправляются в следующем пакете.
Поддержка
В следующих таблицах определяется поддержка реакций в Службы коммуникации Azure.
Поддержка собраний Teams основана на политике Teams.
Удостоверения и типы вызовов
В следующей таблице показана поддержка реакций в различных типах вызовов и удостоверений.
Удостоверения | Собрание взаимодействия Teams | Комната | Вызов 1:1 | Групповой вызов | Вызов группы взаимодействия Teams |
---|---|---|---|---|---|
Пользователь служб коммуникации | ✔️ | ✔️ | ✔️ | ✔️ | |
Пользователь Microsoft 365 | ✔️ | ✔️ | ✔️ |
Операции
В следующей таблице показана поддержка реакций в пакете SDK для вызовов для отдельных типов удостоверений.
Операции | Пользователь служб коммуникации | Пользователь Microsoft 365 |
---|---|---|
Отправить конкретные реакции (например, любовь, смеется, аплодисменты, удивлены) | ✔️ | ✔️ |
Получение конкретных реакций (например, любовь, смеется, аплодисменты, удивлены) | ✔️ | ✔️ |
Пакеты SDK
В следующей таблице показана поддержка функции "Режим объединения" в отдельных пакетах SDK для Службы коммуникации Azure.
Платформы | Интернет | Веб-интерфейс | iOS | Пользовательский интерфейс iOS | Android | Пользовательский интерфейс Android | Windows |
---|---|---|---|---|---|---|---|
Поддерживается | ✔️ | ✔️ |
Установка пакета SDK
npm install
Используйте команду для установки пакета SDK Службы коммуникации Azure Common and Calling SDK для JavaScript:
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
Инициализация обязательных объектов
Экземпляр CallClient
требуется для большинства операций вызова. При создании нового CallClient
экземпляра его можно настроить с помощью пользовательских параметров, таких как Logger
экземпляр.
С помощью экземпляра CallClient
можно создать CallAgent
экземпляр, вызвав его createCallAgent
. Этот метод асинхронно возвращает объект экземпляра CallAgent
.
Метод createCallAgent
использует CommunicationTokenCredential
в качестве аргумента. Он принимает маркер доступа пользователя.
Можно применить метод getDeviceManager
для экземпляра CallClient
, чтобы получить доступ к 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()
Управление подключением пакета SDK к инфраструктуре Майкрософт
Экземпляр Call Agent
помогает управлять вызовами (для присоединения или запуска вызовов). Для работы пакета SDK для вызова необходимо подключиться к инфраструктуре Майкрософт для получения уведомлений о входящих звонках и координации других сведений о вызове. У вас Call Agent
есть два возможных состояния:
Подключено — Call Agent
значение Connected
connectionStatue означает, что клиентский пакет SDK подключен и способен получать уведомления из инфраструктуры Майкрософт.
Отключено — Call Agent
значение connectionStatue состояний Disconnected
возникает проблема, которая препятствует правильному подключению пакета SDK. Call Agent
необходимо повторно создать.
invalidToken
: если срок действия маркера истек или является недопустимымCall Agent
экземпляром, отключается с этой ошибкой.connectionIssue
: если возникла проблема с клиентом, подключающимся к инфраструктуре Майкрософт, после многих повторных попытокCall Agent
возникаетconnectionIssue
ошибка.
Вы можете проверить, подключен ли локальный сервер Call Agent
к инфраструктуре Майкрософт, проверив текущее значение connectionState
свойства. Во время активного вызова можно прослушивать 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. Чтобы получить реакцию, сообщение строится с типом ReactionMessage
с использованием Reaction
перечислений в качестве атрибута.
Необходимо подписаться на события, которые предоставляют данные события подписчика:
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.
- Реакции поддерживаются в пакете SDK для веб-звонков.
- Реакции в настоящее время не поддерживаются в собственных пакетах SDK.