2016-12-30 292 views
0

こんにちは私はMicrosoft Vision APIを使用して、LINEメッセンジャーアプリから投稿された画像の説明を取得しようとしています。Microsoft Visual API用にcURLを使用

私はPHPでコードし、curlを使用しています。 エラーメッセージが表示されませんが、何か間違っているようです。 私はメッセージを受け取るだけです。 "私は見えます!"。

以下のログがあります。

2016-12-30T10:25:14.550661+00:00 app[web.1]: [30-Dec-2016 19:25:14 Asia/Tokyo] stdClass Object 
2016-12-30T10:25:14.550706+00:00 app[web.1]: (
2016-12-30T10:25:14.550758+00:00 app[web.1]:  [code] => InvalidImageUrl 
2016-12-30T10:25:14.550801+00:00 app[web.1]:  [requestId] => 871afc35-7c01-478b-9c0c-c51d365bfba4 
2016-12-30T10:25:14.550853+00:00 app[web.1]:  [message] => Can't fetch the image. 
2016-12-30T10:25:14.550855+00:00 app[web.1]:) 
2016-12-30T10:25:14.550855+00:00 app[web.1]: 
2016-12-30T10:25:15.299165+00:00 heroku[router]: at=info method=POST path="/callback.php" host=kasabot30.herokuapp.com request_id=2fc2bb0d-4ca5-4d0c-94c4-540345bb3726 fwd="203.104.146.152" dyno=web.1 connect=1ms service=1715ms status=200 bytes=150 
2016-12-30T10:25:15.291527+00:00 app[web.1]: 10.154.74.169 - - [30/Dec/2016:10:25:13 +0000] "POST /callback.php HTTP/1.1" 200 - "-" "LineBotWebhook/1.0 
2016-12-30T10:29:47.964240+00:00 app[web.1]: 10.109.176.159 - - [30/Dec/2016:10:29:47 +0000] "GET /Lenna.png HTTP/1.1" 200 473831 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 
2016-12-30T10:29:47.967859+00:00 heroku[router]: at=info method=GET path="/Lenna.png" host=kasabot30.herokuapp.com request_id=f3fe060b-3740-4660-8044-e8bd4b07f6eb fwd="219.208.70.99" dyno=web.1 connect=0ms service=13ms status=200 bytes=474068 

私の間違いを見つけてもらえますか? Vision APIを除いて、他のコードもうまく機能しています。

ありがとうございます。それがAPIに送られた後のデータが誤って構成されたことが判明したコメントでの議論で得られた付加情報に基づいて

https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fa/console

//Function to post on Microsoft Vision API 
$url = 'https://api.projectoxford.ai/vision/v1.0/analyze?visualFeatures=Description&language=en'; 
$api_key ='MY_KEY'; 
$image_url = 'https://kasabot30.herokuapp.com/Lenna.png'; 

$post_data = array(
    "url:" => "$image_url" 
); 

$ch = curl_init($url); 
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', 
    'Ocp-Apim-Subscription-Key:'.$api_key 
)); 
$image_json_string = curl_exec($ch); 
curl_close($ch); 

$image_json = json_decode($image_json_string); 
$image_description = $image_json->{"description"}->{"captions"}[0]->{"text"}; 

$response_format_text = [ 
array(
    "type" => "text", 
    "text" => "I can see".$image_description."!" 
) 
]; 

//Function to post on LINE Message API 
$ch = curl_init("https://api.line.me/v2/bot/message/reply"); 
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', 
     'Authorization: Bearer ' . $accessToken 
)); 
$result = curl_exec($ch); 
curl_close($ch); 
+0

「それは何か間違っている」とはどういう意味ですか?なぜ私たちに言わないのですか? – arkascha

+0

httpサーバのエラーログファイルには何が表示されますか? – arkascha

+0

そしてデバッグのために、 '$ image_json'の内容をログファイルにダンプして上記の質問に追加してください。あなたの質問の下に '編集'リンクがあります。 _それを使用して詳細を追加してください。 – arkascha

答えて

1

。画像のURLを引き渡すための鍵はurl、ないurl:次のようになります。

$post_data = array(
    'url' => $image_url 
); 

その変更に伴いAPIは、期待される結果を配信しました。

+0

ありがとう!私が正しく受け入れていないかどうか教えてください! – TKasai

関連する問題