CodeZine(コードジン)

特集ページ一覧

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

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

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

Confirmテンプレートの送信

 ComfirmテンプレートはYES/NOやOK/キャンセルなどのシンプルなテキスト+ボタンタイプのダイアログを出すテンプレートとなっています。

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

function replyConfirmTemplate($bot, $replyToken, $alternativeText, $text, ...$actions) {
  $actionArray = array();
  foreach($actions as $value) {
    array_push($actionArray, $value);
  }
  $builder = new \LINE\LINEBot\MessageBuilder\TemplateMessageBuilder(
    $alternativeText,
    new \LINE\LINEBot\MessageBuilder\TemplateBuilder\ConfirmTemplateBuilder ($text, $actionArray)
  );
  $response = $bot->replyMessage($replyToken, $builder);
  if (!$response->isSucceeded()) {
    error_log('Failed!'. $response->getHTTPStatus . ' ' . $response->getRawBody());
  }
}

 ?>

 Buttonsと似ていますが、画像とタイトルが不要になります。

 続いて以下のように変更します。

$actionArray = array();
  array_push($actionArray, new LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder (
    "明日の天気", "tomorrow"));
  array_push($actionArray, new LINE\LINEBot\TemplateActionBuilder\PostbackTemplateActionBuilder (
    "週末の天気", "weekend"));
  array_push($actionArray, new LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder (
    "Webで見る", "http://google.jp"));
  replyButtonsTemplate($bot,
    $event->getReplyToken(),
    "https://" . $_SERVER["HTTP_HOST"] . "/imgs/template.jpg",
    "お天気お知らせ",
    "今日は天気予報は晴れです",
    $actionArray,
    "お天気お知らせ - 今日は天気予報は晴れです");

replyConfirmTemplate($bot,
    $event->getReplyToken(),
    "Webで詳しく見ますか?",
    "Webで詳しく見ますか?",
    new LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder (
      "見る", "http://google.jp"),
    new LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder (
      "見ない", "ignore"),
    new LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder (
      "非表示", "never")
    );

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

 デプロイ後に呼びかけてみると、シンプルなダイアログが表示されます。Confirmテンプレートにはボタンを3つまで表示できます。

Confirmテンプレート
Confirmテンプレート

Carouselテンプレートの送信

 Carouselは、Buttonsテンプレートのようなダイアログを横並びに表示できるテンプレートです。1つのダイアログはColumnとして定義されており、それをBuilderに追加してインスタンス化するのですが、各Columnは画像の有無、titleの有無、アクションの数をすべてのColumnで統一する必要があります。

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

function replyCarouselTemplate($bot, $replyToken, $alternativeText, $columnArray) {
  $builder = new \LINE\LINEBot\MessageBuilder\TemplateMessageBuilder(
  $alternativeText,
  new \LINE\LINEBot\MessageBuilder\TemplateBuilder\CarouselTemplateBuilder (
   $columnArray)
  );
  $response = $bot->replyMessage($replyToken, $builder);
  if (!$response->isSucceeded()) {
    error_log('Failed!'. $response->getHTTPStatus . ' ' . $response->getRawBody());
  }
}

 ?>

 続いて以下のように変更します。

replyConfirmTemplate($bot,
    $event->getReplyToken(),
    "Webで詳しく見ますか?",
    "Webで詳しく見ますか?",
    new LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder (
      "見る", "http://google.jp"),
    new LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder (
      "見ない", "ignore"),
    new LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder (
      "非表示", "never")
    );

$columnArray = array();
  for($i = 0; $i < 5; $i++) {
    $actionArray = array();
    array_push($actionArray, new LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder (
      "ボタン" . $i . "-" . 1, "c-" . $i . "-" . 1));
    array_push($actionArray, new LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder (
      "ボタン" . $i . "-" . 2, "c-" . $i . "-" . 2));
    array_push($actionArray, new LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder (
      "ボタン" . $i . "-" . 3, "c-" . $i . "-" . 3));
    $column = new \LINE\LINEBot\MessageBuilder\TemplateBuilder\CarouselColumnTemplateBuilder (
      ($i + 1) . "日後の天気",
      "晴れ",
      "https://" . $_SERVER["HTTP_HOST"] .  "/imgs/template.jpg",
      $actionArray
    );
    array_push($columnArray, $column);
  }
  replyCarouselTemplate($bot, $event->getReplyToken(),"今後の天気予報", $columnArray);


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

 難しいところはないと思います。

 デプロイして呼びかけると、Carouselテンプレートが表示されます。

Carouselテンプレート
Carouselテンプレート

 Columnは5つまで、各Column内のボタンは3つまで追加できます。

最後に

 第3回では、LINE Bot SDKが持つ主要なAPIと実装における注意点を解説しました。

 便利に使って面白いLINE Botを作り、LINE Bot Awardsで賞金1000万円や副賞の50万円、学生の方は学生賞100万円を目指しましょう!

LINE Bot Awardsエントリー受付中!(2017年2月22日まで)

 グランプリ賞金1000万円のLINE Bot Awards、エントリー絶賛受付中です。他にも賞金50万円の9部門、そして学生賞は賞金100万円となっています。革新的なBotを開発して入賞を狙いましょう!

(「LINE Bot Awards」より引用)
(「LINE Bot Awardsのページ」より引用)


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

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

著者プロフィール

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

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

あなたにオススメ

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