やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

LINE Messaging APIでグループメンバーへのメンションを送りたかった #linebot

結論から言うと「送れなかった」のですが、調査したことなどのメモ。

メンションとは

ここで「メンション」と呼んでいるのは、グループ/チャットルーム内で、"@"に続いてメンバーの名前を書くと通知が飛ぶ、という機能。

2017年2月にリリースされた機能ですが、LINE公式ブログなどでは正式な名称は書かれていませんでした。Twitterほかにならってメンションと呼ばれているようです。

official-blog.line.me

LINEアプリ上では、下のように青い文字で表示されます。

f:id:nowsprinting:20171001001204p:plain

なお、メッセージ入力欄に「@」と入力すると、メンションを送る候補としてグループメンバーの名前が表示されますが、ここにBotの名前は出てきません。

Botにコマンドを送るときに使えるのでは?と思ったのですが、ダメでした。

Webhookで受け取れるメンションを含むメッセージ

上のような、ユーザからユーザへのメンションを含むメッセージをWebhookで受け取ったとき、その内容は単なるプレーンテキストで

@テスト太郎 メンションのテスト

という文字列が受け取れました。

ユーザ名は、個々のユーザで異なるものに上書きできますが、Webhookで受け取れるものはメンションに指定されたユーザ本来のものです。

LINE Messaging APIからメンションを送ってみる

Webhookがプレーンテキストであった時点で無理そうでしたが、一応試してみました。

まず、"@"に続けてユーザID(golang SDKの場合、event.Source.UserID)を指定したケース。

f:id:nowsprinting:20171001003746p:plain

続いて、"@"に続いてユーザの名前(golang SDKの場合、linebot.Client.GetProfile()で取得したDisplayName)を指定したケース。

f:id:nowsprinting:20171001003803p:plain

ともに、メンション扱いはされませんでした。残念。

関連書籍

LINE BOTを作ろう!  Messaging APIを使ったチャットボットの基礎と利用例

LINE BOTを作ろう! Messaging APIを使ったチャットボットの基礎と利用例