Поделиться через


Реакции

В этой статье описывается реализация реакций на Службы коммуникации Azure вызовов пакетов SDK. Эта возможность позволяет участникам группового звонка или собрания отправлять и получать реакции с участниками Службы коммуникации Azure и Microsoft Teams.

Параметры конфигурации и политики в Microsoft Teams определяют реакции пользователей на собрания Teams. Дополнительные сведения см. в разделе "Управление реакциями в собраниях Teams" и "Вебинары " и "Собрания" в Microsoft Teams.

Необходимые компоненты

Ограничения реакций

Система извлекает реакции по пакетам через регулярные интервалы. Текущее ограничение пакета составляет 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.

Следующие шаги