2016-04-15 17 views
0

ユーザーが画像を要求した場合は、画像を受信することができません。
しかし、私はそれを可能にする方法を本当によく分かりません。
私は自分のWebサイトに特別なページを作成しました。ここでは、リクエストによって画像を取得します。
しかし、私のボットは動作していません。
私はflickrアカウントを作成し、特別なページを作成し、接続した私のボットのコードをflickrページコードで作成しました。
質問は、私のボット検索の写真をflickrで作成し、それをユーザーに提供する方法です。ここで

facebook messenger botのflickrランダムイメージを取得するには?

ボットページのコードです:

include 'flickr.php'; 
$row = "My access token"; 
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token='.$row; 


$ch = curl_init($url); 
if($message == "image'.$set.'") 
{ 
    $load_images = $hasil; 
    $image = file_get_contents($load_images); 
    $jsonData = '{ 
     "recipient":{ 
     "id":"'.$sender.'" 
     }, 
      "message":{ 
       "attachment":{ 
        "type":"image", 
        "payload":{ 
         "url":"'.$image.'" 
        } 
      } 
     } 
    }'; 
}; 

$json_enc = $jsonData; 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_enc); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 

if(!empty($input['entry'][0]['messaging'][0]['message'])){ 
    $result = curl_exec($ch); 
} 

そしてここでは、私のFlickrのコードです。
私はミスがここにどこかにあると思いますが、私はそれを見ることはできません。

require_once 'webhook.php'; 

class flickr 
{ 
    var $api; 
    function __construct($api) { 
     $this->api = $api; 
     } 
    function flickr_photos_search($search,$count_image,$size) 
    { 
    $params = array(
    'api_key' => $this->api, 
    'method' => 'flickr.photos.search', 
    'text'  => $search, 
    'format' => 'rest', 
    'per_page' => $count_image, 
    'page'  => 1,); 
    $xml = $this->create_url($params); 
    if(@$rsp = simplexml_load_file($xml)) 
    { 
     if (count($rsp)<>0) 
     { 
      foreach($rsp->photos->children() as $photo) 
      { 
       if ($photo->getName()=='photo') 
       { 
        $farm=$photo->attributes()->farm; 
        $server=$photo->attributes()->server; 
        $id=$photo->attributes()->id; 
        $secret=$photo->attributes()->secret; 
        if ($size=='Med') 
        { 
         $sz=""; 
        } 
        else 
        { 
         $sz = "_".$size; 
        } 
        $gbr[]='<img src="https://farm'.$farm.'.staticflickr.com/'.$server.'/'.$id.'_'.$secret.$sz.'.jpg'.'" /> '; 
       } 
      } 
     } 
     else 
     { 
      die("No images found!"); 
     } 
    }else 
    { 
     die("wrong parameter"); 
    } 
    return $gbr; 
    } 
function create_url($params) 
    { 
    $encoded_params = array(); 
    foreach ($params as $k => $v){ 

     $encoded_params[] = urlencode($k).'='.urlencode($v); 
    } 
    $url = "https://api.flickr.com/services/rest/?".implode('&', $encoded_params); 
    return $url; 
} 
} 

if(isset($_REQUEST[$set])) 
{ 

$search=$_REQUEST[$set]; 
$result= 30; 
$size = 'm'; 

$flickr = new flickr('My flickr secret code'); 
$gbr = $flickr->flickr_photos_search($search,$result,$size); 
foreach($gbr as $hasil) 
    { 
     echo $hasil.' '; 
    } 
} 

答えて

1

問題があります:documentationから

$load_images = $hasil; 
$image = file_get_contents($load_images); 
"payload":{ 
    "url":"'.$image.'" 
} 

- ペイロードの画像は、その画像のちょうどURL

あなたは本当に簡単に、そのために私のAPI(https://github.com/Fritak/messenger-platform)を使用することができますです使用する:

// Send an image (file). 
$bot->sendImage($userToSendMessage, 'http://placehold.it/150x150'); 
+0

のおかげで、私はそこに画像のURLを入れて持っていることを理解しています。 質問があっボットは、画像を検索することができますFlickrや他のサービスのために特定のURLを、置く方法を、です。 – Grynets

関連する問題