Возврат общего количества сообщений, отправленных через Slack API

Ищем способ вернуть общее количество сообщений, отправленных командой через Slack API. Просматривая документацию, я не нашел способа сделать это. Было любопытно, если кто-нибудь нашел способ сделать что-то подобное.


person Magnetion    schedule 09.11.2015    source источник


Ответы (2)


Вероятно, вам придется перебрать все каналы, группы и пользователей. Для данного канала search.messages содержит необходимую информацию. Например, используя пакет python Slacker, мы можем подсчитать количество сообщений в @general:

>>> import slacker
>>> token = "yourtoken"
>>> api = slacker.BaseAPI(token)
>>> api.get("search.messages", params={"query": "in:general"}).body["messages"]["total"]
19601

(Я оставляю вам перебирать все каналы и группы)

person Régis B.    schedule 07.04.2016
comment
Обратите внимание, что максимальное значение счетчика составляет 1000, а максимальное значение страницы — 100 для этого метода. - person Laurent; 10.04.2016
comment
count — это количество элементов, которые нужно вернуть на страницу, а page — это количество страниц результатов, которые нужно вернуть. В своем вопросе вы запрашиваете количество сообщений, а не полный список всех сообщений. Как вы можете видеть в моем примере, полученном из реального Slack-канала, эти два параметра не влияют на то, как будет получено количество сообщений. - person Régis B.; 11.04.2016

Не существует метода API, который предоставляет эту информацию напрямую, поэтому вам нужно будет вычислить эту информацию путем повторения всех существующих каналов.

Основная схема:

  1. Получить список всех каналов с помощью conversations.list
  2. Получить все сообщения для канала с conversations.history. Вы можете напрямую указать интересующий вас период времени с помощью свойств latest и oldest.
  3. Суммируйте количество на канал, чтобы получить общее количество

Обратите внимание, что из-за архитектуры безопасности Slack у вас не будет доступа ко всем частным и прямым каналам обмена сообщениями. Чтобы также получить эти разговоры, вам нужно будет собрать токен от каждого из ваших пользователей, а затем использовать этот токен, чтобы получить доступ ко всему.

person Erik Kalkoken    schedule 05.11.2018