Как я могу получить «истинный» онлайн статус пользователя через слабый API? - PullRequest
1 голос
/ 18 февраля 2020

Я работаю над проектом, в котором пользователям назначаются заявки на основании их присутствия в Slack. Это присутствие может быть активным или отсутствующим, но можно также вручную установить для этого присутствия значение «Вне». Умный пользователь может вручную настроить свое присутствие и избежать назначения работы. Это то, чего я бы хотел избежать.

На данный момент я использую метод users.getPresence, который отлично работает, но я бы хотел получить «истинное» присутствие пользователей.

users.getPresence Страница документации содержит следующую информацию:

Если вы запрашиваете информацию о присутствии для аутентифицированного пользователя, этот метод возвращает текущее присутствие вместе с подробной информацией о том, как оно было рассчитано:

{
    "ok": true,
    "presence": "active",
    "online": true,
    "auto_away": false,
    "manual_away": false,
    "connection_count": 1,
    "last_activity": 1419027078
}

Этот метод предоставляет информацию о количестве подключений и о том, изменил ли пользователь вручную свой статус на Нет. Я предполагаю, что, используя эту информацию, я могу видеть, если пользователь в сети, но он подлый.

Однако я не знаю, как получить эту информацию. Что это за «авторизованный» пользователь, и вы можете получить эту информацию только для этого пользователя?

Кроме того, я случайно получил эти «расширенные» данные getPresence, когда отправляю запрос в свое приложение, используя адрес электронной почты в качестве входных данных, вместо Slack ID. Однако ответ всегда один и тот же:

{
    "ok": true,
    "presence": "away",
    "online": false,
    "auto_away": false,
    "manual_away": false,
    "connection_count": 0
}

Неважно, активен я или нет, ответ всегда один и тот же.

Кто-нибудь здесь разобрался? как работает этот «расширенный» getPresence? Я хотел бы знать, что вы это сделали.

Если у кого-нибудь есть идея, как восстановить «истинный» онлайн-статус в Slack, пожалуйста, дайте мне знать: D

...