Talk APIを使ってみる

リクルートテクノロジーズの提供している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でメッセージを送信してみると、返答されることが確認できました。

参考サイト

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


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

2024年12月
1234567
891011121314
15161718192021
22232425262728
293031