Mais conteúdo relacionado
Semelhante a Aws x line x line bot awards (20)
Aws x line x line bot awards
- 2. About Me
• 平岡雅俊
• Sonicmoov Co,. Ltd.
• Webエンジニア歴 10年
• 休日は自宅で映画鑑賞なインドア派
• 猫好き
• 病弱
- 3. About Sonicmoov
• BtoB & BtoC
• Guile
• 動画広告配信プラットフォーム
• https://www.guile.jp/
• Tonariwa
• LINE BUSINESS CONNECT
• ONE STOP SOLUTION
• 企画・デザインから開発、運用まで社内で内製する体制
• Sonicmoov LAB
• https://lab.sonicmoov.com/
- 5. AWSで構築するLINE BOT
• システム構成
• API Gateway
• Queue + Job Worker
• アカウント設定
• Messaging API
• Reply Message
• Push Message
• Template Message
- 8. Api Gateway
• Messaging API の Callback URL は https のみ
• Let‘s Encrypt などでも可能だが、独自ドメインが必要
• 無料利用枠でなら、最大12ヶ月、100万回/月の呼び出しが無料
• Lambda ももちろん可能
• 今回はHttp Proxy として利用
• X-Line-Signature の転送設定を忘れずに
• https://gist.github.com/hirarin/30114ac0eb1186a27fc599f41946261a
- 9. Queue + Job Worker
• https://github.com/wa0x6e/php-resque-ex
• Queue Serverで受け取った event をRedis にスタック
• 処理としてはQueueを登録するだけなので高速
• Worker Serverで順次処理
• 時間のかかる処理(外部API呼び出しなど)をゆっくり行う
• 処理結果からメッセージを構築してLINE へ投げる
• Worker のプロセス数を上げれば並列処理でさらに快適
- 10. Phalcon 3.0.1 + line-bot-sdk-php
• https://phalconphp.com/ja/
• 爆速PHPフレームワーク
• PHP Extensionとして、Zephir言語で書かれている
• remiリポジトリ経由でrpmが配布されています
• https://github.com/line/line-bot-sdk-php
• LINE社が提供しているSDK
• exampleにSlimFrameworkで組まれたEchoBotなどもあり、参考になります
- 14. Reply Message
• リクエスト内のReply Tokenを利用することで無料でメッセージを送信可能
• Reply Tokenには有効期限がある
• Reply Tokenは1度だけ使うことができる
/** @var LINELINEBot $bot */
$bot = $this->getDI()->get('bot');
$response = $bot->replyText(
$event->getReplyToken(),
'位置情報を送ってね!'
);
- 15. Push Message
• Channel Access Tokenを利用するメッセージ送信
• ユーザーからのメッセージがなくてもいつでも送信可能
• 処理に時間がかかるような返信はPush Messageで
/** @var LINELINEBot $bot */
$bot = $this->getDI()->get('bot');
$response = $bot->pushMessage(
$event->getUserId(),
new TextMessageBuilder('付近に居酒屋はないようです')
);
- 16. Template Message
• 予め用意されたテンプレート形式でメッセージを送信する
• Button
• Confirm
• Carousel
• 今回はCarouselで店舗情報を表示
/** @var LINELINEBot $bot */
$bot = $this->getDI()->get('bot');
$carouselTemplateBuilder = new CarouselTemplateBuilder($columns);
$multiMessageBuilder = new MultiMessageBuilder();
$response = $bot->pushMessage(
$event->getUserId(),
$multiMessageBuilder
->add(new TextMessageBuilder('近くに居酒屋を発見しました!'))
->add(new TemplateMessageBuilder('alt text', $carouselTemplateBuilder))
->add(new TextMessageBuilder('Powered by ぐるなび'))
);