SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

日本一わかりやすいLINE Bot開発講座

LINE Bot SDKが持つ主要機能の実装方法

日本一わかりやすいLINE Bot開発講座 第3回

スタンプの送信

 スタンプの送信には、StickerMessageBuilderを使います。

 index.phpの最後?>より前に以下のコードを追記してください。

function replyStickerMessage($bot, $replyToken, $packageId, $stickerId) {
  $response = $bot->replyMessage($replyToken, new \LINE\LINEBot\MessageBuilder\StickerMessageBuilder($packageId, $stickerId));
  if (!$response->isSucceeded()) {
    error_log('Failed!'. $response->getHTTPStatus . ' ' . $response->getRawBody());
  }
}

 ?>

 スタンプの指定にはパッケージIDとステッカーIDが必要となります。送ることができるスタンプとIDは以下のリンクから確認できます。

 なお、有料のスタンプなど上記以外のスタンプを送信することは、もしユーザーがそのスタンプを所持していたとしてもできませんので、ご注意ください。

 動作確認のため、以下のようにコードを変更します。

replyLocationMessage($bot, $event->getReplyToken(), "LINE株式会社", "東京都渋谷区渋谷2-21-1 ヒカリエ27階", 35.659025, 139.703473);

replyStickerMessage($bot, $event->getReplyToken(), 1, 1);

function replyTextMessage($bot, $replyToken, $text) {

 デプロイして、適当にBotに呼びかけてみましょう。BotからIDを指定したスタンプが送られます。

StickerMessageの送信
StickerMessageの送信

複数のメッセージを組み合わせて送信する

 MultiMessageBuilderをreplyMessage関数に渡すことで、最大5個のメッセージを組み合わせて送信することができます。組み合わせたものを1通としてカウントするので、ReplyTokenは1つしか使いません。また、種類が異なるメッセージを同時に送ることも可能です。

 index.phpの最後?>より前に以下のコードを追記してください。

function replyMultiMessage($bot, $replyToken, ...$msgs) {
  $builder = new \LINE\LINEBot\MessageBuilder\MultiMessageBuilder();
  foreach($msgs as $value) {
    $builder->add($value);
  }
  $response = $bot->replyMessage($replyToken, $builder);
  if (!$response->isSucceeded()) {
    error_log('Failed!'. $response->getHTTPStatus . ' ' . $response->getRawBody());
  }
}

 ?>

 msgsには引数として渡されたメッセージが配列(可変長)で格納されます。

 次に動作確認のため、以下のようにコードを変更します。

replyStickerMessage($bot, $event->getReplyToken(), 1, 1);

replyMultiMessage($bot, $event->getReplyToken(),
    new \LINE\LINEBot\MessageBuilder\TextMessageBuilder("TextMessage"),
    new \LINE\LINEBot\MessageBuilder\ImageMessageBuilder("https://" . $_SERVER["HTTP_HOST"] . "/imgs/original.jpg", "https://" . $_SERVER["HTTP_HOST"] . "/imgs/preview.jpg"),
    new \LINE\LINEBot\MessageBuilder\LocationMessageBuilder("LINE", "東京都渋谷区渋谷2-21-1 ヒカリエ27階", 35.659025, 139.703473),
    new \LINE\LINEBot\MessageBuilder\StickerMessageBuilder(1, 1)
  );

function replyTextMessage($bot, $replyToken, $text) {

 これまでに送信したメッセージを一括送信するように変更してみました。デプロイして呼びかけると、一気に4種類のメッセージがBotから送信されます。

MultiMessageの送信
MultiMessageの送信

次のページ
テンプレートメッセージの送信

この記事は参考になりましたか?

日本一わかりやすいLINE Bot開発講座連載記事一覧

もっと読む

この記事の著者

立花 翔(タチバナ ショウ)

 LINE株式会社テクニカルエバンジェリスト  個人アプリケーションデベロッパーとして世界中で1000万近くのユーザーと接点を持った経験を元に、デベロッパーのLINEのAPIを利用したビジネスの成功をお手伝いさせて頂いております。 各種APIを始めとするプラットフォームとしてのLINEを啓蒙し、目指...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9905 2017/01/10 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー