LINE BOT API と Riot API で遊んでみた
先着10,000名限定で公開された『BOT API Trial Account』ですが、研究開発の時間を頂けたので少し触ってみました。
そのままテストしてもつまらないので、偶然持っていたLeague of LegendsのProduction APIを使って戦績を返すBOTを作ってみました。
とりあえず準備
LINE BOT API
アカウントの取得方法やAPIの使い方などは、この記事が分かりやすかったので見てください。 qiita.com
Callback先にはSSL証明書(Let's Encrypt以外の)が必須らしいので、とりあえず僕の開発用のサーバをCallback URLに指定。
Riot API
Development APIはRiot Games APIからすぐ作れます。
僕の持ってるProduction APIは申請から承認まで3週間ほどかかるのですが、日本サーバにアカウントを移動させたタイミングで使えなくなってたので問い合わせたらすぐに対応してくれました。
サーバ
ずっと昔に作って放置してたCodeigniterの環境にLINE BOT用のコントローラーを設置し、さきほどのQiitaの投稿をベースに書いてきます。
<?php public function index() { // アカウント情報設定 $this->channel_id = "[チャンネルID]"; $this->channel_secret = "[チャンネルシークレット]"; $this->mid = "[MID]"; // メッセージ受信 $json_string = file_get_contents('php://input'); $json_object = json_decode($json_string); $this->content = $json_object->result{0}->content; $event_type = "138311608800106203"; $this->_api_post_request("/v1/events", $event_type, json_encode($this->_create_text($this->_get_summoner_data($this->content->text)))); } private function _create_text($text) { $text = array( 'toType' => 1, 'contentType' => 1, 'text' => $text, ); return $text; } private function _api_post_request($path, $event_type, $content) { $url = "https://trialbot-api.line.me{$path}"; $headers = array( "Content-Type: application/json", "X-Line-ChannelID: {$this->channel_id}", "X-Line-ChannelSecret: {$this->channel_secret}", "X-Line-Trusted-User-With-ACL: {$this->mid}" ); $post = <<< EOM { "to":["{$this->content->from}"], "toChannel":1383378250, "eventType":"{$event_type}", "content":{$content} } EOM; $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_POSTFIELDS, $post); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $output = curl_exec($curl); }
$this->content->text
にチャットの内容が入ってくるので、それをサモナー検索用のメソッドに投げて、返ってきた値をcreate_textメソッドに投げることでcallback用の配列に格納し、api_post_requestで $this->content->from
に入っているチャットルームIDに向けてメッセージを送信しています。
できたのがこれ
LOL Summoner Info
チャットで入力したサモナーの戦績をRiot APIから取得して返してくれます!
まだLINE BOT APIがトライアルということもあり、50人までしかフレンドに登録できませんがもしよかったら追加して遊んでみてください。