Я хочу сделать функцию отправки изображения с помощью API Telegram (справочный API: https://github.com/mgp25/Telegram-Bot-API/ ), но когда я пытаюсь запустить это, у меня всегда появляется ошибка, подобная этой :
Сообщение: file_get_contents (''): не удалось открыть поток: HTTP-запрос не удался! Неверный запрос HTTP / 1.1 400
Вот мой код [обновлено]:
<?php require 'Telegram.php'; $tele = new telegramBot('token'); //$info = $tele->sendMessage('218945828',"wadaw"); $url= 'image/maldini.jpg'; $info = $tele->sendPhoto('chatid',$url); print_r($info); ?>
ошибка :
Предупреждение: file_get_contents ( https://api.telegram.org/bot_token/sendPhoto?chat_id=chat_id&photo=0 ): не удалось открыть поток: php_network_getaddresses: getaddrinfo не удалось: такой хост не известен. в C: \ xampp \ htdocs \ mgp25 \ Telegram-Bot-API-мастер \ src \ Telegram.php в строке 465
Что случилось с моим кодом?
У вас есть SSL-соединение с Telegram? Если у вас не было SSL-соединения с телеграммой, не команды телеграмм не будут работать, но если вы можете отправить простое сообщение, чтобы не было проблемы с SSL. В конце концов, если все ОК, кроме изображения, используйте этот код cURL, за исключением использования этого готового к использованию класса telegramBOT
. если это не работает (cURL), поэтому есть проблема при чтении или поиске фотографии на вашем сервере (реальный сервер или папка xampp или так далее …) Если это сервер (хост), он ДОЛЖЕН быть загружен первым, а если это изображение xampp должно быть в настоящей папке. лучше проверить, доступен ли образ (например, через http: //localhost/image/maldini.jpg из webbrowser?
cURL Готов к использованию кода для отправки фотографии:
$BOT_TOKEN='1231325:AbXDECcvhir7'; //----YOUR BOT TOKEN $chat_id=123456 // or '123456' ------Receiver chat id define('BOTAPI','https://api.telegram.org/bot' . $BOT_TOKEN .'/'); $cfile = new CURLFile(realpath('image/maldini.jpg'), 'image/jpg', 'maldini.jpg'); //first parameter is YOUR IMAGE path $data = [ 'chat_id' => $chat_id , 'photo' => $cfile ]; $ch = curl_init(BOTAPI.'sendPhoto'); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); curl_close($ch);
Я думаю, что urlencode (' http://127.0.0.1/mgp25/maldini.jpg '); это проблема. Вы должны использовать свой IP-адрес поставщика / общего доступа. Или используйте относительный путь.