Slack: получить все сообщения

Я хочу получить все сообщения, которые были отправлены в домене slack моей команды. Хотя я бы предпочел, чтобы данные были получены в XML или JSON, я могу обрабатывать данные практически в любой форме.

Как я могу получить все эти сообщения? Является ли это возможным? Если нет, могу ли я получить все сообщения для определенного канала?


person marcusshep    schedule 02.03.2015    source источник


Ответы (6)


Если вам нужно сделать это динамически через API, вы можете использовать метод channels.list для вывода списка все каналы в вашей команде и метод channels.history для получения истории каждого канала . Обратите внимание, что сюда не будут входить прямые переписки или частные группы.

Если вам нужно сделать это разово, перейдите на страницу https://my.slack.com/services/export, чтобы экспортировать архивы сообщений вашей команды в виде серии файлов JSON.

экран экспорта архива сообщений

person seanrose    schedule 22.03.2015
comment
Похоже, что только администраторы могут экспортировать через ссылку, могу ли я как участник экспортировать канал как хорошо? - person zyy; 08.01.2019
comment
@seanrose, есть ли способ перейти на эту страницу? - person Pacerier; 13.06.2020

Этот скрипт Python экспортирует все в JSON простым запуском: https://gist.github.com/Chandler/fb7a070f52883849de35

Он создает каталоги для вас, и у вас есть возможность исключить прямые сообщения или каналы.

Все, что вам нужно установить, - это модуль бездельника, который просто pip install slacker. Затем запустите его с --token='secret-token'. Вам понадобится устаревший токен, который сейчас доступен здесь.

person vk1011    schedule 14.06.2016
comment
работает хорошо, кроме 429 Client Error: Too Many Requests for url: <omitted> - person sunapi386; 08.01.2019

Для всех, кто ищет загрузки истории личных сообщений, этот инструмент cli на основе узлов позволяет загружать сообщения. из прямых и мгновенных сообщений в формате JSON и CSV. Я использовал его, и он работает очень хорошо.

person wjagodfrey    schedule 09.02.2016
comment
Ссылки имеют тенденцию меняться или пропадать, не могли бы вы объяснить часть содержания или процитировать его здесь? - person abarisone; 09.02.2016
comment
@abarisone Инструмент называется slack-history-export и может быть установлен с npm install -g slack-history-export. См. Варианты с slack-history-export -h. - person wjagodfrey; 12.02.2016

С новым Conversations API эта задача теперь немного проще. Вот полный обзор:

Получение сообщений из канала

Новый метод API conversations.history позволит вам загружать сообщения из любого типа беседы / канала. (общедоступный, частный, DM, групповой DM), пока ваш токен имеет к нему доступ.

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

Преобразование идентификаторов в имена

Обратите внимание, что этот метод будет возвращать сообщения в необработанном формате JSON только с идентификаторами, поэтому вам нужно будет вызвать дополнительный метод API для преобразования этих идентификаторов в простой текст:

  • ID пользователя: users.list
  • идентификаторы каналов: conversations.list
  • идентификаторы ботов: bots.info (официального bots.list метода нет, но есть неофициальный, который в некоторых случаях может помочь)

Получение бесед

Кроме того, для загрузки цепочек беседы используйте chatations.replies. Потоки работают как разговоры внутри разговора, и их нужно загружать отдельно.

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

person Erik Kalkoken    schedule 01.11.2018
comment
Интересно узнать - как мне предоставить доступ ко всем частным / групповым каналам DM через мой токен? - person Ian; 30.01.2019
comment
Вы не можете. Архитектура безопасности Slack этого не позволяет. - person Erik Kalkoken; 31.01.2019
comment
Это боль. Я уже поставил +1, но было бы неплохо добавить это к вашему ответу. - person Ian; 31.01.2019
comment
Насколько я понимаю, этот вопрос касается только публичных каналов. Как видно из принятого ответа, он не включает частные каналы. Проверьте этот ответ о том, как получить доступ ко всем частным каналам: stackoverflow.com/a/53142640/4379151 - person Erik Kalkoken; 31.01.2019

Если кто-то все еще ищет решение в 2021 году и, конечно, не получает помощи от администраторов рабочего пространства для экспорта сообщений, то, очевидно, они могут сделать следующее.

Шаг 1. Получите токен API из файла cookie пользовательского интерфейса

  • Клонируйте и установите требования и запустите SlackPirate.
  • Откройте Slack в браузере и скопируйте значение файла cookie с именем d
  • Запустить python3 SlackPirate.py --cookie '<value of d cookie>'

Шаг 2. Дамп сообщений канала

  • Установите slackchannel2pdf (требуется python)
  • slackchannel2pdf --token 'xoxb-1466...' --write-raw-data T0EKHQHK2/G015H62SR3M

Шаг 3. Удалите личные сообщения

  • Установите slack-history-export (требуется узел)
  • slack-history-export -t 'xoxs-1466...' -u '<correct username>' -f 'my_colleagues_chats.json'
person pPanda_beta    schedule 30.06.2021

Вот еще один инструмент для экспорта всех сообщений из канала.

Инструмент называется slackchannel2pdf и экспортирует все сообщения из общедоступного или частного канала в документ PDF.

Вам нужен только токен с необходимыми областями и доступом.

person Erik Kalkoken    schedule 31.12.2019