1. Qiita
  2. Items
  3. Line

LINE BOT APIを利用した地獄のミサワBOTの作り方

  • 190
    Like
  • 2
    Comment

はじめに

LINEがBOT APIのトライアルアカウントを無償提供したので試してみましたのでやり方をご紹介します。

0407final.png

【LINE】メッセージングAPIのオープン化に先駆け、先着1万名限定でBOTアカウントを自由に開発できる「BOT API Trial Account」の無償提供を開始
http://linecorp.com/ja/pr/news/ja/2016/1320

作ってみたもの

写真.png

みさわに話しかけると、ネタ画像を1枚送ってくれます。ただそれだけです。画像はS3に置きました。

QRコードでさくっと追加出来るみたいですが、友達上限が50名のため限りがあります。

jgp2389e.png

必要なもの

作り方

1.ビジネスアカウントの作成

スクリーンショット 2016-04-08 3.38.02.png
スクリーンショット 2016-04-08 3.38.35.png

2.アカウント情報を確認してコールバックURLを設定

チャンネルIDやシークレットなどが発行されます。

screencapture-developers-line-me-channels-1461989310-1460054506047.png

メッセージが送信された時に通知する先を登録するのですが、httpsでかつ、:443 を含めないと、Not secure URL or port number not sepcified.でエラーになりますので注意しましょう。

https://サーバー:443/linebot/callback

3. Server IP Whitelistの登録

コールバックで指定したURLから、BOT APIを利用する場合、そのIPアドレスを事前に登録しないと拒否されてしまうので登録します。

スクリーンショット_2016-04-08_3_45_42.png

4.登録出来たら、APIリファレンスを見ながらBOT APIの処理を実装

試すだけなので素のPHPで画像を返す処理を実装しました。

callback.php
<?php
$json_string = file_get_contents('php://input');
$jsonObj = json_decode($json_string);
$to = $jsonObj->{"result"}[0]->{"content"}->{"from"};

// テキストで返事をする場合
$response_format_text = ['contentType'=>1,"toType"=>1,"text"=>"hello"];
// 画像で返事をする場合
$response_format_image = ['contentType'=>2,"toType"=>1,'originalContentUrl'=>"画像URL","previewImageUrl"=>"サムネイル画像URL"];
// 他にも色々ある
// ....

// toChannelとeventTypeは固定値なので、変更不要。
$post_data = ["to"=>[$to],"toChannel"=>"1383378250","eventType"=>"138311608800106203","content"=>$response_format_image];

$ch = curl_init("https://trialbot-api.line.me/v1/events");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json; charser=UTF-8',
    'X-Line-ChannelID: 発行されたチャンネルID',
    'X-Line-ChannelSecret: 発行されたチャンネルシークレット',
    'X-Line-Trusted-User-With-ACL: 発行されたMID'
    ));
$result = curl_exec($ch);
curl_close($ch);

5.以上の手順でBOTが完成です

LINEアプリで友だち追加して、BOTにメッセージを送ってみましょう。
もしうまくいかない場合、BOT APIのレスポンスをチェックしてみましょう。

最後に

今回試したものは対話型では無いので面白味が全くありませんでした。
docomoが公開している言語解析やシナリオ対話世の中に公開されている無料のAPIなどを活用することで簡単に面白いBOTが作れると思います。

メッセージ・画像・動画・音声・スタンプ・位置情報などを元にした対話型サービスを作れるので活用方法は様々で、本当にいろんなWebサービスがBOT化していきそうですね。