CodeZine(コードジン)

特集ページ一覧

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

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2017/01/10 14:00
目次

スタンプの送信

 スタンプの送信には、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で送る
  • このエントリーをはてなブックマークに追加

バックナンバー

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

著者プロフィール

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

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

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5