如果用户要求,我想让我的机器人接收图片。
但我真的不确定如何使它成为可能。
我在我的网站上创建了特殊页面,我可以根据请求获取图像。
但是,我的机器人不工作
我创建了flickr帐户,创建了特殊页面,用flickr页面代码连接了我的机器人代码。
那么,问题是,如何让我的机器人在flickr中搜索图片然后提供给用户呢?
以下是bot页面的代码:
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.' ';
}
}
答案 0 :(得分:1)
有一个问题:
$load_images = $hasil;
$image = file_get_contents($load_images);
"payload":{
"url":"'.$image.'"
}
来自documentation - 有效负载图片只是该图片的网址
您可以使用我的API(https://github.com/Fritak/messenger-platform),非常容易使用:
// Send an image (file).
$bot->sendImage($userToSendMessage, 'http://placehold.it/150x150');