【PHP】api.aiをAPIとして利用する方法




api.ai
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

「Integration」を使えばさまざまなツールと連携できるapi.aiですが、よくこのブログで書いている「形態素解析した日本語をapi.aiに投げる」には、api.aiをAPIとして利用する必要があります。そのやり方について。

リファレンス

api.ai > Docs > /query

やり方

api.aiにPOSTするURLは、下記になります。

https://api.api.ai/v1/query

これに、下記パラメータを必須としてPOSTすればOK。

  • v:APIのバージョン。現在は”20150910″。
  • query:ユーザーの投稿内容。僕は形態素解析したものを渡してます。
  • sessinId:エージェントごとに固有の36桁の番号。api.aiログイン後、画面右の「Try it now」から応答確認した時に確認できる「SHOW JSON」から確認できます。
  • lang:言語。英語版ボットでも、日本語を渡す時に”ja”と指定してもOKでした。
  • api

全てURLにパラメータとして渡しても良いようですが、普段は、vのみURLのパラメータとして渡し、それ以外はJSON形式にしてヘッダー情報と併せてURLにPOSTしてます。何となく管理がラクなので。

ソースコードはこちら。

$apiToken = 'エージェントのClient access token';
$apiUrl = 'https://api.api.ai/v1/query?v=v=20150910';
$reqBody = [
'query' => 'ユーザーの投稿内容',
'sessionId' => 'セッションID',
'lang' => 'ja',
];

$headers = [
'Content-Type: application/json; charset=UTF-8',
'Authorization: Bearer' . $apiToken
];

$options = [
'http'=> [
'method' => 'POST',
'header' => implode("\r\n", $headers),
'content' => json_encode($reqBody)
]
];

$stream = stream_context_create($options);
$resApi = file_get_contents($apiUrl, false, $stream);

$resApiをjsondecodeして、応答内容やActionなど必要な情報を抜き出せばOKです。APIとして活用できると、いろいろできることも増えるので便利ですね。

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone