RocketChatにカスタム絵文字を一括登録する(RestAPI+Curl)
カスタム絵文字を使うと、チャットが盛り上がりますよね。ただ、デフォルトの絵文字群は、あまり面白みがない…
自分で作ってもいいけど、絵文字を公開しているサイト様のを使って楽をしたい。
ただし、アプリケーション上で一個一個登録するのもめんどくさい。公式にRestAPIが公開されているのでAPIを使いますが、python等のプログラミング言語を用いず、Curlでカスタム絵文字を登録します。
トークンとユーザIDを取得する
APIを使って登録するための、トークンとユーザIDを取得します。管理者ユーザで、アクセストークンを作成します。
マイアカウント→パーソナルアクセストークンを選び、使用用途に応じた名称をつけ、トークンを発行します。このとき二要素認証を飛ばします。(Ignore Two Factor Authentication)にチェックをいれる。
発行されたトークンとユーザIDをメモしておきます。流出&忘れないようにに注意してください。
スクリプトを作成する
例として/root/にemojiというディレクトリを作成し、そこに画像があるとします。
[root@localhost emoji]# pwd
/root/emoji
[root@localhost emoji]# ll
total 4
-rw-r--r-- 1 root root 1290 May 28 09:43 arigatougozaimasu.png
まずは1個ファイルをアップロードするスクリプトを記述します。
[root@localhost emoji]# vi upload.sh
公式ドキュメントを参考に作成します。先ほど取得したトークンとユーザIDを記入してください。
/api/v1/emoji-custom.create にPOSTする
X-Auth-Token:[半角スペース][トークン]
X-User-Id:[半角スペース][ユーザID]
emoji=@[相対ファイル名]
name=[カスタム絵文字名]
aliases=[エイリアス名]
#!/bin/bash
curl -H "X-Auth-Token: [トークン]" \
-H "X-User-Id: [ユーザID]" \
-F "emoji=@arigatougozaimasu.png" \
-F "name=my-arigatougozaimasu" \
-F "aliases=emoji-alias" \
http://localhost:3000/api/v1/emoji-custom.create
このシェルスクリプトを実行します。結果はjson形式で返ってきます。
[root@localhost emoji]# sh upload.sh
{"success":true}
[root@localhost emoji]#
カスタム絵文字が登録されました!
一括で登録する
次に、ディレクトリ配下のpngファイルを一括で登録します。先ほどの一個だけ登録できるスクリプトにファイル名を渡し、一個ずつ登録していきます。
ファイルは同一フォルダのみ
絵文字名はcus-[.png前の文字]
エイリアスは[.png前の文字]
としました。
[root@localhost emoji]# ls
agerisyasu.png akirame.png annzenndaiiti.png arigatai_.png
aguri-.png a-ne_.png aoharu.png arigatougozaimasu.png
akeome.png annsinn.png a-.png upload.sh
先ほどのアップロードスクリプトを修正します。
第一引数に拡張子ありファイル名、第二引数に拡張子なしファイル名を渡しています。upload.shのスクリプト内で分割してもいいと思います。(データ的にはそっちの方がいいかと)
#!/bin/bash
curl -H "X-Auth-Token: [トークンID]" \
-H "X-User-Id: [ユーザID]" \
-F "emoji=@$1" \
-F "name=cus-$2" \
-F "aliases=$2" \
http://localhost:3000/api/v1/emoji-custom.create
このスクリプトにファイル名を渡すスクリプトを作ります。load.shとしました。
#!/bin/bash
find ./*.png -type f | while IFS= read -r filepath; do
filename_with_extension=$(basename "$filepath")
filename="${filename_with_extension%.*}"
sh ./upload.sh $filename_with_extension $filename
done
これを実行します。エラー時の処理は考えていません。
[root@localhost emoji]# sh load.sh
{"success":true}{"success":true}{"success":true}{"success":true}{"success":true}{"success":true}{"success":true}{"success":true}{"success":true}{"success":true}{"success":true}
[root@localhost emoji]#
複数個一括で登録できました。
参考サイトや絵文字サイト
この記事が気に入ったらサポートをしてみませんか?