2015-07-20 5 views
2

Я хочу SendPhoto в моем локальном хосте webhook. Изображение не находится на сервере телеграмм. Поэтому мне нужно загрузить его многостраничным заголовком.Метод SendPhoto в телеграмме не работает

Попытанные Код:

$file=fopen("Untitled.png","rb"); 
$cont=fread($file,filesize("Untitled.png")); 
$headers=array("Content-type: multipart/form-data"); 
$postfields = array("chat_id" => "108432389", "photo" => "$file"); 
$ch = curl_init(); 
$options = array(
    CURLOPT_URL => "https://api.telegram.org/bot(Token)/SendPhoto", 
    CURLOPT_HEADER => true, 
    CURLOPT_POST => 1, 
    CURLOPT_POSTFIELDS => $postfields, 
    CURLOPT_INFILESIZE => filesize("Untitled.png"), 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_HTTPHEADER => $headers 
); 
curl_setopt_array($ch, $options); 
curl_exec($ch); 

Но он не может SendPhoto.

Я просмотрел различные веб-сайты для решения, но их код такой же, как и мой код.

Почему это не работает?

+0

Я думаю, что это решение может решить вашу проблему помощи http://stackoverflow.com/a/32844167/5348805 – Ars

ответ

1

Вот моя функция PHP, которая выполняет эту работу.

sendPicture($id, "picture.png"); 


function sendPicture($_chatID, $file_on_server){ 

    $target_url = 'https://api.telegram.org/**<YOUR TOKEN HERE>**/sendphoto'; 

    $file_name_with_full_path = realpath('./'.$file_on_server); 

    $post = array(
     'chat_id' => $_chatID, 
     'photo'  => '@'.$file_name_with_full_path 
    ); 

    $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; 


} 
+0

Спасибо @Markus, но он не может sendphoto тоже. '{" ok ": false," error_code ": 400," description ":" Error: Bad Request: Неверный постоянный файл_ид: содержит неправильные символы или имеет неправильную длину "}' – Alireza

+0

@Alireza: мне кажется, проблема с кодированием запроса. API телеграмм бота использует только UTF-8. Таким образом, вы можете попробовать, чтобы настроить кодировку на UTF-8: iconv (mb_detect_encoding ($ text, mb_detect_order(), true), «UTF-8», $ text); – Markus

+0

Фотография не находится на сервере телеграмм. Мы должны загрузить его первым. но мы этого не сделали! – Alireza

Смежные вопросы