php で line bot をしてみる
TRANSCRIPT
PHPでLINE BOTをしてみる
尾崎 翔太
How about me??
尾崎 翔太
株式会社ウィルゲート 技術責任者
PHPやJavascriptをよく書いています。
隙をみて、JenkinsとかdockerとかAWSとかES6とか、とかとかいろいろ触っています。
つくり手の最良の機会を創り、価値あるコンテンツが届く社会へ
弊社、ウィルゲートについて
コンテンツマーケティング事業
クラウドソーシング・SEO
メディア事業
Bot??
人ではく、機械が作業を行う。
「チャットbot」の話 話相手になる
チャット経由で機械へ何かをお願いする
チャットBotのAPIが公開されて盛り上がっている! Facebook Messenger Bot
LINE bot
LINE Bot??
LINE 月間アクティブユーザが2200万人を超える各サービスの集合
LINE Bot 法人向けとしてLINE Buisiness Connectがもともと提供されている
例)「LINE NEWS」ニュースを配信するアカウント
このAPIが先日、トライアルアカウントとして無償で提供された。 先着1万人まで!締め切られたかなあ…
LINE Bot??
Botアカウントに対してCallbackのURLを指定 メッセージやスタンプ、各種コンテンツを送るとCallbackが呼ばれる
APIを通じて、LINEにメッセージを送れる ※Callbackのレスポンスにメッセージを指定するわけではありません
構成やどんな言語でやるかなど、Qiitaやブログの記事がたくさん書かれている!
PHPでLINE Botをしてみる:LINEからのリクエストを受け取る
構成
LINE:CallbackにAPI GatewayのURLを設定
API Gateway:
POSTのAPIとする(重要)
HTTPヘッダのX-LINE-ChannelSignatureを転送(後述)
PHPでLINE Botをしてみる:LINEからのリクエストを受け取る
気を付けること
設定してからちょっと時間がかかるそう 以前やってあきらめた人もぜひ!
POSTでやってくる API Gateway初使用もあってめっちゃはまった…。。。
SSLが必須 Let’s Encryptは証明書都合でまだっぽい・・・。
PHPでLINE Botをしてみる:LINEからのリクエストを受け取る
気を付けること
HTTPボディにJSONが入っている file_get_contents('php://input')
メッセージ整合性確認のためにシグネチャの検証を。 base64_decode($headers["X-LINE-ChannelSignature"])
hash_hmac("sha256", $rawJson, CHANNEL_SECRET, true)
PHPでLINE Botをしてみる:LINEへメッセージを送る
構成
LINE側のホワイトリストにVPSのIPを指定
PHPでLINE Botをしてみる:LINEへメッセージを送る
気を付けること
curlで十分です composer時代ならguzzleか。
いくつかのHTTPヘッダを付ける
いくつかのPOSTフィールドをJSONで詰める
詳しい送り方はリファレンスを見よう! 参照:https://developers.line.me/bot-api/api-reference
PHPでLINE Botをしてみる:LINEへメッセージを送る
気を付けること
画像や動画はLINEがアクセスできるURLを送る
画像や動画などは制限が…。 画像サイズ:1024x1024、サムネイル240x240
動画形式:mp4
などなど…
PHPでLINE Botをしてみる:作ってみたよ~~
デモ。
画像をいじる 顔検出API
imagemagick
雑談 雑談対話API
参照:https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=dialogue&p_name=api_1
PHPでLINE Botをしてみる:作ってみたよ~~
デモ。
プログラム大変そう…。
全体で200行ちょっとしかないです。
LINEにメッセージ送るメソッドも15行くらい
PHPでLINE Botをしてみる:おまけで構成の話
実際に運用していくなら構成をもっと考えましょう
Callback内でメッセージを作って送るとたいへんです 「botからお返事がこない…」
Callbackはキューにためるだけ
キューを処理するワーカーを作りましょう参照: http://qiita.com/yoichiro@github/items/6d4c7309210af20a5c8f
おわり