Slack APIでメッセージにスタンプ(絵文字)を付けて投稿したい

絵文字のemoji codeを確認したい時は"EMOJI CHEAT SHEET"が便利だという話。
2020.04.14

こんにちは、CX事業本部の若槻です。

Slack API(Incoming Webhook)を使って、スタンプ(絵文字)付きのメッセージをSlackチャネルに投稿する際の小ネタです。

なお、Incoming WebhookはSlack Appで設定したものを使いました。設定の仕方は以下の記事が参考になりました。

絵文字を「:チェックマーク_緑:」で投稿したら認識されなかった

Incoming Webhookを使って絵文字付きのメッセージをSlackチャネルに投稿したいです。

今回はSlackで既定で使用できる以下の:チェックマーク_緑:という絵文字をメッセージに付けたいとします。 image.png

そこでSlack API ドキュメントを参考に、Incoming Webhookで:チェックマーク_緑:の絵文字が付いたメッセージを投稿してみました。

curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World! :チェックマーク_緑:"}' \
    https://hooks.slack.com/services/THVFSQNP8/B011T3EJT6F/4xo382...

するとメッセージは投稿されましたが、Slackアプリ上ではHello, World! :チェックマーク_緑:と表示され、絵文字が認識されませんでした。なぜ? image.png

EMOJI CHEAT SHEETで確認したemoji codeで投稿したら認識された

結論から言いますと、Slackで既定で使える絵文字をAPIで投稿したい場合は、以下のEMOJI CHEAT SHEETで一覧化されているemoji codeを使う必要があります。

EMOJI CHEAT SHEETから:チェックマーク_緑:のemoji codeを探してみると、:white_check_mark:であるようです。

image.png

よって、以下のように:white_check_mark:で絵文字を指定して投稿したら、

curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World! :white_check_mark:"}' \
    https://hooks.slack.com/services/THVFSQNP8/B011T3EJT6F/4xo382...

Slackアプリ上で絵文字が認識されました。 image.png

EMOJI CHEAT SHEETのサポート

EMOJI CHEAT SHEETで示されている絵文字とemoji codeの対応は、Slackを始めさまざまなWebサービスでサポートされているとのことです。

Emoji emoticons listed on this page are supported on Campfire, GitHub, Basecamp, Redbooth, Trac, Flowdock, Sprint.ly, Kandan, Textbox.io, Kippt, Redmine, JabbR, Trello, Hall, Qiita, Zendesk, Ruby China, Grove, Idobata, NodeBB Forums, Slack, Streamup, OrganisedMinds, Hackpad, Cryptbin, Kato, Reportedly, Cheerful Ghost, IRCCloud, Dashcube, MyVideoGameList, Subrosa, Sococo, Quip, And Bang, Bonusly, Discourse, Ello, Twemoji Awesome, Got Chosen, Flow, ReadMe.io, esa, DBook, Groups.io, TeamworkChat, Damn Bugs, Let's Chat, Buildkite, ChatGrape, Dokuwiki, Usersnap, Discord, Status Hero, Morfy, Bitbucket, Gitter, Yellow, YouTube, Habitica and Mattermost

またSlack側でも、以下のAPIドキュメントなどでemoji codeの指定についてはEMOJI CHEAT SHEETを参照するよう示されており、EMOJI CHEAT SHEETとSlackは双方向的にサポートされていることが分かります。

  • https://api.slack.com/legacy/custom-integrations/incoming-webhooks

an emoji code string to use in place of the default icon.

emoji codeをスタンプ(日本語名)から逆引きするには

「使いたいスタンプは分かっているけどEMOJI CHEAT SHEETからemoji codeを探すのが手間」という時には、スタンプからemoji codeを簡単に逆引きする方法があります。

Slackチャネルに投稿されている絵文字はマウスオーバーすると吹き出しに絵文字の名前が表示されます。例えば:お化け:という絵文字のemoji codeを確認したい場合には、 image.png

Slackアプリ左上の[<ユーザー名>]から[環境設定]を開き、 image.png

[言語&地域]で[表示言語]をEnglish (US)に変更します。 image.png

そして先ほどの:お化け:の絵文字を再度マウスオーバーすると、絵文字の名前が吹き出しにemoji codeで表示され簡単に確認ができるようになりました。今回は:ghost:というemoji codeでした。確認ができたら[表示言語]を元の言語に戻しましょう。

image.png

確認できたemoji code:ghost:をIncoming Webhookを使って指定し投稿してみます。

curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World! :ghost:"}' \
    https://hooks.slack.com/services/THVFSQNP8/B011T3EJT6F/4xo382...

投稿できました。

image.png

まとめ

  • Slack APIでメッセージにスタンプ(絵文字)を付けて投稿する場合は、emoji codeを使う必要がある。
  • 絵文字とemoji codeの対応は以下の方法で確認が可能。
    • EMOJI CHEAT SHEETから探す。
    • Slackアプリの言語をEnglish (US)にして確認する。

以上