Добрый день! Пишу бота для telegram на php, прицеплен через webhook. Бот уже умеет отправлять файлы через url. Но не хотелось бы раз за разом отсылать их повторно.
Не могу понять, как:
$output = json_decode(file_get_contents('php://input'), TRUE);
sendMessage($chat_id, $output['message']['photo'][0]['file_id']);
sendMessage($chat_id, $output['message']['photo'][1]['file_id']);
sendMessage($chat_id, $output['message']['photo'][2]['file_id']);
выходят три разных маркера вида AgADBAAD1acxG_hEyFKdehxkDtYNbECcpxkABKdphgFcKKFpkRMAAgI
, как понять, который из них мне нужен? или, может быть при форварде используется другой маркер, непонятно, другого метода не придумал пока)
$api = 'https://api.telegram.org/bot' . $access_token;
function sendPhotoId($chat_id, $file) {
$target_url = $GLOBALS['api'] . '/sendphoto';
$post = array(
'chat_id' => $chat_id,
'photo' => array(
'file_id' => "AgADBAAD1acxG_hEyFKdehxkDtYNbECcpxkABOusfARhbKj6kxMAAgI"
)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
echo $result;
}
Но не работает. Подскажите, пожалуйста, куда копать.
Как понять, который из идентификаторов файлом мне нужен для пересылки фотографий?
Лучше используйте file_id фотографии самого большого разрешения. Хоть это явно и не зафиксировано в документации, но фотки записываются в массиве в порядке возрастания линейных размеров. Так что надо брать самый последний айдишник из переданных.
В примере вашем, как уже было отмечено, неправильно заполняется массив с параметрами. Поле photo должно содержать только строку — id отправляемого фото (ну или ссылку, или байты файла в формате multipart/form-data). Так сказано в описании метода sendPhoto.
Кроме того, учтите, что бот может таким образом отправлять только те file_id, которые он сам получил от телеграма. Чужие, от другого бота, не подойдут.
На этом всё, касаемо особенностей Telegram. Из возможных проблем стоит также рассмотреть отсутствие библиотеки curl. Чтобы её установить в Ubuntu или Debian, поставьте пакет php-curl.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Доброго времени! Столкнулся с такой задачей, есть 2 переменные с датой и временем
Создаю сайт и потребовалось создать элемент формы select который бы выводил список всех пользователей для выбораСоздавать форму мне удобнее...
Подскажите, пожалуйста, как прочитать и вывести данные из файла XML? Есть файл стандарта yandex