Slackのログ保存期間が90日になってしまい、Slackのログがどんどん見えなくなり
Mattermostを導入した際にSlackからMattermostにカスタム絵文字(リアクション)を
コピーした際のメモです。
Slackからリアクションの抽出
最初はSlackのAPIを使って抽出してしまおうと思ってたんですが、Chromeの拡張で
Slack Custom Emoji ManagerSlack
を使うと非常に簡単にダウンロードできるのでこれでダウンロードしました。
Chromeの拡張をインストールして https://<自分のSlack>.slack.com/emoji にアクセスして
「すべての絵文字をダウンロードする」を押すだけです。
Mattermostにインポートする
まとめてcurlを使ってAPIで登録してしまいます。
注意点としてはSlackは日本語でリアクション名を付けれますが、Mattermostはマルチバイト名で登録
できないため、あらかじめダウンロードしたリアクションに日本語名がある場合は修正しておきます。
APIを使うためBotを作成しアクセストークンを取得
- 「統合機能」を選びます
- 「Botアカウント」を選びます
- 「Botアカウントを追加する」を押します
- アカウントを作成します
役割は「システム管理者」にします - トークンが発行されるので覚えておきましょう
BotのユーザIDを取得する
emojiを登録する際にボットのユーザIDを指定する必要があるため、
APIを使ってbotのユーザIDを取得します。
$ TOKEN="先ほど取得したTOKEN"
$ CREATE_ID=$(curl -s -X GET -H "Authorization: Bearer ${TOKEN}" https://<Mattermost URL>/api/v4/users/me | jq -r .id)
$ echo $CREATE_ID
これでCREATE_IDの変数に作成したBotのユーザIDが入っているはずです。
APIトークンとBotIDを使ってまとめて登録する
先ほどダウンロードした絵文字をディレクトリに配置して実行します。
$ TOKEN="先ほど取得したTOKEN"
$ CREATE_ID="先ほど取得したBotのユーザ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://<Mattermost URL>/api/v4/emoji
done
これで、ファイル名でemojiとして登録されます。