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つまで表示できます。
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テンプレートが表示されます。
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を開発して入賞を狙いましょう!
