- PVSM.RU - https://www.pvsm.ru -

Как развернуть для своей команды архив slack сообщений c синхронизацией и поиском

Я сам сторонник идеи что если нравится продукт то нужно покупать его и своими деньгами поддержать программистов.
Но иногда бывает что компания на этот софт денег тратить не может или не хочет. Особенно сложно платить от 100$ в месяц когда есть бесплатные аналоги или если чаты используются в некоммерческих целях.

Я опишу как можно развернуть сервис для хранения истории всех публичных сообщений вашей команды в slack и избавиться от основного, неприятного, иногда выбешивающего ограничения — up to 10k of your team’s most recent messages (можно смотреть и искать только среди 10 000 последних сообщений)

Среди готовых решений есть:

По подробнее расскажу про последнее решение, оно мне больше всего понравилось.

Как можно легко заметить основная идея принадлежит Lê Việt Hồng ( github.com/suoinguon [9] ) я взял его решение за основу и начал добавлять туда разные фичи.
Так как это обычное Django приложение то новые фичи туда добавлять оказалось очень просто.

По сравнению с оригиналом теперь появились:

  • Полнотекстовый поиск по истории django-watson
  • Индексация только публичных групп и пониженный уровень токена только с необходимыми правами
  • Форматирование сообщений как в slack, включая смайлы django-emoji
  • Обновление всех библиотек и поддержка django 1.10
  • Импорт данных из выгружженого архива
  • Исправлены недочеты в логике получения данныз по API
  • Добавлены новые страницы — сообщения пользователя, статистика с помощью django orm
  • Добавлена навигация для того чтобы можно было отправить ссылку на конкретное сообщение c учетом пагинации django-pagination

Среди дальнейших планов хочется отметить:

  • Поддержать работы с несколькими командами
  • Улучшить работу с отображением файлов
  • Добавить возможность сложного поиска
  • Добавить больше веселой или полезной статистики

Создание сервера

А теперь к делу, давайте развернем себе этот проект.
Первым делом нам понадобится виртуальный сервер. Для небольших команд будет достаточно минимальной конфигурации.

Например, что можно запустить быстро и дешево:

vscale.io [10]

Как развернуть для своей команды архив slack сообщений c синхронизацией и поиском - 1

www.digitalocean.com [11]

Как развернуть для своей команды архив slack сообщений c синхронизацией и поиском - 2

aws.amazon.com/ru/ec2 [12]

(если регистрируетесь первый
раз то первый год будет бесплатно)

0.0065$ в час
512mb
1 vcpu
Ebs disk

Итого можно получить отдельный сервер за 200 рублей в месяц или вообще бесплатно на первое время.
Я проверял скрипт на Centos7 поэтому при создании выбираем её, узнаем её ip адрес или доменное имя и запоминаем их, они потребуется на следующем шагу.

Регистрируем slack приложение

Далее нам нужно зарегистрировать slack приложение для доступа к API

  1. Заходим на страницу api.slack.com/applications [13]
  2. Создаем новое приложение

    Как развернуть для своей команды архив slack сообщений c синхронизацией и поиском - 3

  3. Добавляем адрес только что созданного сервера в oauth redirects

    Как развернуть для своей команды архив slack сообщений c синхронизацией и поиском - 4

  4. Сохраняем себе Client ID и Client Secret

    Как развернуть для своей команды архив slack сообщений c синхронизацией и поиском - 5

Запускаем приложение

  1. Подключаемся по ssh на сервер
  2. Запускаем команду
  3. curl -O https://raw.githubusercontent.com/menemy/slack-backup/master/provisioning_on_centos7.sh
    
  4. Исправляем три настройки в начале скрипта
  5. SLACK_CLIENT_ID=[your_client_id]
  6. SLACK_CLIENT_SECRET=[your_client_secret]
  7. DOMAIN=[your_domain]
  8. Исправляем права и запускаем
  9. chmod 777 provisioning_on_amazonlinux.sh
  10. sudo ./provisioning_on_amazonlinux.sh
  11. Всё, после этого приложение запущено и доступно по вашему адресу, история синхронизируется раз в пять минут
  12. Нужно зайти на сайт и предоставить доступ в свой аккаунт slack

Опционально, восстанавливаем историю сообщений

Если вы узнали об этом решении поздно — не беда, slack на самом деле продолжает хранить вашу историю и позволяет выгрузить всю историю в виде zip архива.
Но это только для администраторов группу.

  1. Зайдите на страницу my.slack.com/services/export [14]
  2. Создайте выгрузку
  3. Дождитесь окончания
  4. Обновите страницу и скачайть zip файл
  5. Загрузите файл на сервер и выгрузите в папку /usr/local/src/slack-backup/full_history/
  6. Запустите команду python /usr/local/src/slack-backup/manage.py restore_backup
  7. Дождитесь окончания, это может занять время

Как развернуть для своей команды архив slack сообщений c синхронизацией и поиском - 6

Буду рад если мои старания будут полезны. Если есть вопросы по работе или необходима помощь с установкой буду рад помочь в комментариях.

Автор: enemy_spb

Источник [15]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/204601

Ссылки в тексте:

[1] levels.io/slack-export-to-html: https://levels.io/slack-export-to-html/

[2] github.com/hfaran/slack-export-viewer: https://github.com/hfaran/slack-export-viewer

[3] github.com/hisabimbola/slack-history-export: https://github.com/hisabimbola/slack-history-export

[4] github.com/keremtiryaki/Slack-Api-Helpers: https://github.com/keremtiryaki/Slack-Api-Helpers

[5] gist.github.com/Chandler/fb7a070f52883849de35: https://gist.github.com/Chandler/fb7a070f52883849de35

[6] github.com/humor4fun/slack-backup: https://github.com/humor4fun/slack-backup

[7] github.com/joefitzgerald/slack-dump: https://github.com/joefitzgerald/slack-dump

[8] github.com/menemy/slack-backup: https://github.com/menemy/slack-backup

[9] github.com/suoinguon: https://github.com/suoinguon

[10] vscale.io: https://vscale.io/

[11] www.digitalocean.com: https://www.digitalocean.com

[12] aws.amazon.com/ru/ec2: https://aws.amazon.com/ru/ec2/

[13] api.slack.com/applications: https://api.slack.com/applications

[14] my.slack.com/services/export: https://my.slack.com/services/export

[15] Источник: https://habrahabr.ru/post/313972/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best