Соберите реакции (эмодзи) из Slack в Mattermost и добавьте эмодзи (реакции)
Lastmod: 2025-01-21
Published: 2022-09-29

Период хранения логов Slack составляет 90 дней, и логи Slack постепенно становятся недоступными.
Это заметка о копировании пользовательских эмодзи (реакций) из Slack в Mattermost, когда мы начали использовать Mattermost.

Извлечение реакций из Slack

Сначала я думал использовать API Slack для извлечения, но с помощью расширения Chrome
Slack Custom Emoji Manager
это можно сделать очень легко, и я скачал эмодзи с его помощью.

Установите расширение Chrome и перейдите по адресу https://<ваш_Slack>.slack.com/emoji,
затем просто нажмите «Скачать все эмодзи».

Импорт в Mattermost

Мы зарегистрируем эмодзи через API с помощью curl.
Обратите внимание, что в Slack можно устанавливать названия реакций на японском, но в Mattermost
нельзя регистрировать многобайтные имена, поэтому, если у загруженных реакций есть японские названия, их необходимо исправить заранее.

Создание бота для использования API и получение токена доступа

  1. Выберите «Интеграция»
  2. Выберите «Учетная запись бота»
  3. Нажмите «Добавить учетную запись бота»
  4. Создайте учетную запись
    Установите роль на «Системный администратор»
  5. Токен будет выдан, запомните его

Получение пользовательского ID бота

При регистрации эмодзи необходимо указать пользовательский ID бота,
поэтому мы получаем его с помощью API.

$ TOKEN="Токен, который вы только что получили"
$ CREATE_ID=$(curl -s -X GET -H "Authorization: Bearer ${TOKEN}" https://<URL Mattermost>/api/v4/users/me | jq -r .id)
$ echo $CREATE_ID

Теперь переменная CREATE_ID должна содержать пользовательский ID созданного бота.

Пакетная регистрация с использованием токена API и BotID

Поместите скачанные эмодзи в каталог и выполните следующее.

$ TOKEN="Токен, который вы только что получили"
$ CREATE_ID="Пользовательский ID бота, который вы только что получили"
$ for file in $(ls)
do
    name=$(echo $file | cut -d . -f 1)

    curl -X POST -H "Authorization: Bearer ${TOKEN}" \
             -H "Content-Type: multipart/form-data" \
             -F "emoji={\"name\":\"${name}\",\"creator_id\":\"${CREATER_ID}\"}" -F "image=@./${file}" \
             https://<URL Mattermost>/api/v4/emoji
done

Теперь эмодзи будут зарегистрированы с использованием имен файлов.