Как проверить статус участника на MSTEAMS

Чтобы проверить статус участника (онлайн или офлайн) в MSTeams, я хочу получить статус участника по электронной почте.

Я обратился к Расширения Microsoft Teams для конструктора ботов и написал пример кода, чтобы понять мою идею:

var teams = require("botbuilder-teams");

bot.dialog('FetchMemberInfo', function (session) {
    var memberEmail = '[email protected]';

    var connector = new teams.TeamsChatConnector({
        appId: process.env.MICROSOFT_APP_ID,
        appPassword: process.env.MICROSOFT_APP_PASSWORD
    });

    connector.fetchMemberInfo(session.message.address.serviceUrl, memberEmail, function (err, result) {
        if (err) {
            session.endDialog('There is some error');
        }
        else {
            var memberStatus = result.member.status;
            session.endDialog('%s', JSON.stringify(result));
        }
    });
});

У меня есть только электронная почта участника, и я хочу получить статус участника. Итак, какое место в моем примере кода нужно обновить, чтобы получить информацию об участнике, которая включает статус участника? Я также приветствую любые другие предложения, если они есть.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
369
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

API для получения / установки статуса присутствия пользователя пока недоступны. Это указано в дорожной карте API, но на сегодняшний день это невозможно.

Есть ли другой способ определить, находится ли пользователь в сети или нет? Например, пытаться отправить сообщение пользователю и искать ответ, который реагирует на статус пользователя?

user964409 07.06.2018 05:47
Ответ принят как подходящий

Фактически, мы можем получить статус пользователя (онлайн / офлайн) через Skype4Business API. Вот пример кода:

var authContext = {
    id: botSetting.identifier,
    username: botSetting.username,
    password: botSetting.password,
    domain: botSetting.domain,
    _links: {},
    /*1 seconds*/
    messageInterval: 1000 * botSetting.messageInterval,
    /*30 seconds*/
    messageTimeout: 1000 * botSetting.messageTimeout,
    /*3 minutes, unit in second*/
    statusUpdateInterval: 1000 * botSetting.statusUpdateInterval,
    AppId: null,
    AppPath: null,
    EndPointId: botSetting.endpointId,
    Culture: botSetting.culture,
    UserAgent: botSetting.userAgent,
    /* default timeout to wait for user to accept message is 5 minutes */
    acceptMessageInvitationTimeout: botSetting.acceptMessageInvitationTimeout * 1000,
    logUnhandleEvent: botSetting.logUnhandleEvent,
    RootAppUrl: null,
    /*default is 30 seconds, unit in second*/
    statusAwarenessInterval: (CONFIG.PROACTIVE_MESSAGE_INTERVAL_IN_SECONDS || 30) * SECOND_TO_MILLISECONDS, //30 seconds
    remindProcessProactiveMsgInterval: 1000 * 60 * CONFIG.PROACTIVE_MESSAGE_REMIND_IN_MINUTES,
    proactive_interval: process.env.PROACTIVE_UPDATE_INTERVAL_IN_MINUTES || 2
};
    
function getUserAvailibility(receiver){
    var url = authContext._embedded.people._links.self.href;
    var requestResourceUrl = stringFormat("{0}{1}/{2}/presence", authContext.BaseUri, 
                                           url, receiver);
    console.info("SkypeForBusinessBot getUserAvailibility " + receiver +
                " with url: " + requestResourceUrl);
    return $q.nfcall(request.get, requestResourceUrl, {
        headers: authContext.headers, json: true });
    }

Примечание: получателем является адрес электронной почты пользователя.

Звучит многообещающе, спасибо. Какой модуль требуется в скрипте Node.js для этой функции?

Andreas 17.08.2020 10:21

А если нужно делать это через Teams вместо S4B, как указано в вопросе Вы себя?

TylerH 15.10.2020 17:33

Другие вопросы по теме