はじめに
LINEがBOT APIのトライアルアカウントを無償提供したので試してみましたのでやり方をご紹介します。
【LINE】メッセージングAPIのオープン化に先駆け、先着1万名限定でBOTアカウントを自由に開発できる「BOT API Trial Account」の無償提供を開始
http://linecorp.com/ja/pr/news/ja/2016/1320
作ってみたもの
みさわに話しかけると、ネタ画像を1枚送ってくれます。ただそれだけです。画像はS3に置きました。
QRコードでさくっと追加出来るみたいですが、友達上限が50名のため限りがあります。
必要なもの
- LINEビジネスアカウント
- SSL通信可能なサーバー
- ネタ
作り方
1.ビジネスアカウントの作成
2.アカウント情報を確認してコールバックURLを設定
チャンネルIDやシークレットなどが発行されます。
メッセージが送信された時に通知する先を登録するのですが、https
でかつ、:443
を含めないと、Not secure URL or port number not sepcified.
でエラーになりますので注意しましょう。
https://サーバー:443/linebot/callback
3. Server IP Whitelistの登録
コールバックで指定したURLから、BOT APIを利用する場合、そのIPアドレスを事前に登録しないと拒否されてしまうので登録します。
4.登録出来たら、APIリファレンスを見ながらBOT APIの処理を実装
試すだけなので素の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化していきそうですね。