web-dev-qa-db-fra.com

Envoi de message dans un télégramme avec des images

J'ai du code telegram-bot sur php et je réponds aux messages envoyés par la méthode replyWithMessage.

Toutes les commandes ici:

 $this->replyWithMessage(['text' => $item['title']. "\n\n" . $url]);

Comment puis-je ajouter une image d'aperçu avant le texte?

8
SergioZhidkov

Vous pouvez utiliser /sendphoto et définissez le caption qui apparaît sous une image.
https://core.telegram.org/bots/api#sendphoto

16
Maak

Vous ne pouvez pas envoyer de SMS contenant à la fois une image et du texte. Cependant, si votre texte contient une URL, Telegram affiche un aperçu de la page Web par défaut. Ou vous pouvez envoyer deux messages l'un après l'autre ou envoyer une photo avec légende.

3
ariaby

Non, vous POUVEZ envoyer un texte contenant une photo dans un seul message. Le télégramme vous permet de faire cela mais que la voie est plutôt délicate.

  1. En utilisant la méthode https://core.telegram.org/bots/api#sendmessage , définissez l'option disable_web_page_preview => false
  2. Dans vos données text, placez un lien d'image avec des caractères invisibles dans le texte de votre message.

Exemple:

$message = <<<TEXT
*** your content ***
*** somewhere below (or above) a link to your image with invisible character(s) ***
<a href="https://www.carspecs.us/photos/c8447c97e355f462368178b3518367824a757327-2000.jpg"> ‏ </a>
TEXT;

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: multipart/form-data']);
curl_setopt($ch, CURLOPT_URL, 'https://api.telegram.org/bot<token>/sendMessage');
$postFields = array(
    'chat_id' => '@username',
    'text' => $message,
    'parse_mode' => 'HTML',
    'disable_web_page_preview' => false,
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
if(!curl_exec($ch))
    echo curl_error($ch);
curl_close($ch);
2
Dias