#linedevday LINE Bot Live Coding の参加レポ@LINE DEVELOPER DAY 2016
LINE DEVELOPER DAY 2016に今年も今年も参加してきたのでそのメモです。
LINE Bot Live Coding
サービス開発1室 海津研様
- BOT API Trialでは、テキスト、画像、動画、音声、位置情報、スタンプ、リッチメッセージなどを送れるものだった
- 問題として,,,
- リッチメッセージが難しい
- 返事を返すのにユーザにメッセージを送信してもらわないといけない
- OKの場合は1を入力して下さいなど
- グループへの参加ができなかった
- APIがわかりにくい
- 開発者の意見をもとに Messaging API 2.0をリリースしました
新機能
- MessageAPIを刷新し、テンプレートメッセージをおくれたり、webhookを受け取れたり、グループへの参加ができるようになった
API
- Rply IDというのが付与されたwebhookがBot Applicationに届きそれに対して返信ができる
- ReplyIDを使えばどこからメッセージがきたかを気にすることなく返信ができる
- Trialでは、APIにコールする際に、ヘッダーや、パラメータにマジックナンバーなど付与するものがたくさんあったが、今回は僅かなヘッダーと、見やすいパラメータを付与するだけになった
New Message Type
Button Template
- typeにbuttonsを指定し、actionsに押した時の挙動を定義していく
- type: uriは指定したURIをブラウザで開く
Confirm Template
- type: confirmを指定するとOKとCancelに対してアクションを設定できる
Caroucel Template
- 画像や文字、選択肢などをリッチに表示できる
live Coding
curlでのdemo
accesstokenを用いて
curlでAPIになげると
無事BOTから通知が来ました!
Carouselの実装デモ
Carouselのメイン実装部分
pushメソッドの実装
tokenなどの設定部分
実行してみるとCarouselが表示されるのがわかる
リクエストは以下のような形
webhook
- BOTに対するイベントはiosやandroidからLINE Serverに送られて、webhookを使ってBot Applicationに届きます
- イベントについて
- trialの機能にさらにgroupの参加や離脱、ビーコン、postbackといったイベントを受け取れるようになった
- postbackアクションはボタンなどのアクションに指定できるが、サーバにpostbackイベントが届くと、アクションにパラメータを付与できる
- 例えばCarouselで何月何日のCarouselをクリックしたかなどの詳細パラメータを取得できる
Live Coding
webhookを使った実装
webhookのurlを用います
コントローラの実装
channel secretの値を用います。
lineからのシグナルからはX-Line-SigunatureをチェックしてLINEからであることを保証して下さい。
Signatureがおかしかったら弾かれるさまを確認。
イベント毎の実装部分
今回はオウム返しの実装をしてみます。来たメッセージに対して!!!をつけるだけのもの。
ビルドしてデプロイします。
オウム返ししてくれました。
より詳細なCarouselのdemo
複数のCarouselを実装
Carouselのアクションに対してのPostBackの実装
リマインダーをセットしたら数秒後にメッセージを通知する実装
天気を聞くと
Carouselで答えてくれます。
リマインダを登録してみます。
登録されて…
数秒たつとリマインダがきました
リッチメニュー
リッチメニューは管理画面からいじります。
このようにシャッとひらけます
先程のCarouselの実装を確認しました。
SDK
- Java, golang, Ruby, PHP, Perl5を用意しています
QA
- グループに参加した場合でもリッチメニューは使えるか?
- 使えません
- グループに参加するユーザ情報は取得できるか?
- できません
- midを取得してユーザの管理ができると思うが、グループに参加したときはグループIDしかとれないのか?
- はい。グループに発信されたメッセージに対してアクションすることしかできません
- jsでのSDK予定はあるか?
- 今のところありません
- reminderは期限などはあるか?
- 無期限です
@mogmetの所感
実際のBOTの実装の流れを見てなんとなく理解できたような気がしました!
とりあえずcurlで叩くところから始めてみたく存じます。