SDKのインストール
https://github.com/line/line-bot-sdk-php
composer require linecorp/line-bot-sdk
WebhookをLINEDevelopersの管理画面から登録する
ページ真ん中にある「Webhook settings」にwebhookのURLを設定(httpsじゃないとダメです)して、「Use webhook」のトグルをONにします。
メッセージを受け取ったときに、送信されたメッセージを返すBOTを作る
$signature = $request->headers->get(HTTPHeader::LINE_SIGNATURE);
$httpClient = new CurlHTTPClient('管理画面から取得できる Channel access token');
$bot = new LINEBot($httpClient, ['channelSecret' => '管理画面から取得できる Channel secret']);
$events = $bot->parseEventRequest($request->getContent(), $signature);
foreach($events as $event) {
if($event instanceof MessageEvent) {
$bot->replyText($event->getReplyToken(), '「' . $event->getText() . '」と発言しましたね。');
}
}
ちょっと改造する
先ほどのコードを少し改造して、確認ダイアログ的なものを出してみたいと思います。
先ほどは、replyText
メソッドを呼んでただのテキストメッセージでしたが、replyMessageメソッドにはMessageBuilderのインスタンスを渡せるのでちょっとリッチなメッセージを送れたりします。
https://github.com/line/line-bot-sdk-php/blob/4e16fb07379a9cab76b9136ff3057fbf40ef8360/src/LINEBot.php#L123-L129
if ($event instanceof MessageEvent) {
$confirmBuilder = new ConfirmTemplateBuilder('「' . $event->getText() . '」と発言しましたね。', [
new MessageTemplateActionBuilder('はい', 'はい'),
new MessageTemplateActionBuilder('いいえ', 'いいえ'),
]);
$builder = new TemplateMessageBuilder('test', $confirmBuilder);
$bot->replyMessage($event->getReplyToken(), $builder);
}
終わりに
https://developers.line.biz/ja/docs/messaging-api/
MessagingAPIでできることはまだまだたくさんあるので、相手の発言によってアクションを変える等すればもっとBOTっぽくなりますね。
相手からのメッセージを正規表現で判定等しないといけなさそうではありますが。。。