リクルートテクノロジーズの提供しているTalk APIと以前作成したLINEボットを繋げて、メッセージに応じて応答できるようにしてみます。
APIキーの発行
Talk APIに使用するAPIキーを発行します。
APIキー発行ページで利用規約とプライバシーポリシーを確認後、メールアドレスを入力して送信します。

確認メールにあるURLをクリックすると、APIキーの記載されたメールが送られてきます。
APIの使い方
実際にLINEボットに繋げる前に、APIの動作を試してみます。
詳しくは公式のリファレンスをご確認ください。
$url = 'https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk';
$data = array(
'apikey' => 'APIキーをここに入れる',
'query' => 'いい天気ですね。'
);
$context = array(
'http' => array(
'method' => 'POST',
'header' => implode("\r\n", array('Content-Type: application/x-www-form-urlencoded',)),
'content' => http_build_query($data)
)
);
$response_json = file_get_contents($url, false, stream_context_create($context));
$response_data = json_decode($response_json);
var_dump($response_data);
「いい天気ですね。」というメッセージを投げて、レスポンスをvar_dump()で出力しています。
レスポンスは以下のようになりました。
object(stdClass)#1 (3) {
["status"]=>
int(0)
["message"]=>
string(2) "ok"
["results"]=>
array(1) {
[0]=>
object(stdClass)#2 (2) {
["perplexity"]=>
float(1.3575035889064)
["reply"]=>
string(27) "晴れてよかったです"
}
}
}
replyの中身が返答になります。
以前作成したLINEボットに追加してみます。
<?php
require_once __DIR__ . '/vendor/autoload.php';
$input = file_get_contents('php://input');
$json = json_decode($input);
$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('チャネルアクセストークンをここに入れる');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => 'チャネルシークレットをここに入れる']);
$event = $json->events[0];
if($event->type == 'message') {
$messageData = $event->message;
if($messageData->type == 'text') {
$url = 'https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk';
$data = array(
'apikey' => 'APIキーをここに入れる',
'query' => $messageData->text
);
$context = array(
'http' => array(
'method' => 'POST',
'header' => implode("\r\n", array('Content-Type: application/x-www-form-urlencoded',)),
'content' => http_build_query($data)
)
);
$response_json = file_get_contents($url, false, stream_context_create($context));
$response_data = json_decode($response_json);
if($response_data->status == 0) {
$replyText = $response_data->results[0]->reply;
} else {
$replyText = 'ステータスコード:' . $response_data->status . ' 失敗した失敗した失敗した';
}
} else {
$replyText = "テキスト以外は対応していません。";
}
}
$textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder($replyText);
$response = $bot->replyMessage($event->replyToken, $textMessageBuilder);
return;
試してみるとステータスコードが2000(応答テキストが空)になることがあったので、上手く取得できなかった場合の返答も追加しています。
実際にLINEでメッセージを送信してみると、返答されることが確認できました。

コメントが承認されるまで時間がかかります。