【问题标题】:always failed to send image using telegram API using PHP总是无法使用 PHP 使用电报 API 发送图像
【发布时间】:2016-11-11 00:54:19
【问题描述】:

我想创建一个使用 Telegram API 发送图像的函数(参考 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-master\src\Telegram.php 第 465 行

我的代码有什么问题?

【问题讨论】:

    标签: php file telegram-bot


    【解决方案1】:

    我认为 urlencode('http://127.0.0.1/mgp25/maldini.jpg');是问题所在。您应该使用您的提供商/公共 IP 地址。或者使用相对路径。

    【讨论】:

    • 朋友们好。我已经更新了代码并收到了类似上面的错误通知。
    【解决方案2】:

    你有与 Telegram 的 SSL 连接吗?如果您没有与电报的 SSL 连接,则非电报命令将不起作用,但如果您只能发送一条简单的消息,那么就不存在 SSL 问题。 毕竟,如果除图像外一切正常,请使用此 cURL 代码,除非使用准备使用的 telegramBOT 类。 如果这不起作用(cURL),那么从服务器上读取或查找照片确实存在问题(真实服务器或xampp文件夹等......) 如果是服务器(主机),则必须先上传,如果是 xampp 图像必须在真实文件夹中。最好测试一下图像是否可以访问(例如通过 webbrowser 中的http://localhost/image/maldini.jpg

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

    【讨论】:

    • 我认为这是从我的 xampp 服务器上读取或查找照片的问题。我已复制粘贴您的代码,但仍然无法正常工作。你有什么建议吗?
    • 我的代码已经过完整的测试并且可以完美运行(除非您必须使用自己的令牌和聊天 ID 以及可访问的图像路径)。问题:可以通过网络浏览器访问图像吗?如果没问题,那么你应该调整你的代码。使用您的地址,并更正任何拼写错误。
    • @IIMNURDIANSYAH 在第 7 行,您不得使用 http:// 链接格式。请改用.....realpath('image/maldini.jpg'), .......。 'realpath` 函数也是不区分大小写或不区分大小写的,因为它是从平台运行的,所以最好在文件名和路径中使用类似的大小写字符。其次,我说要检查您的 WEB-BROWSER(chrome、firefox、IE 等)中的文件,看看文件是否可访问? http://localhost/image/maldini.jpg 链接是否显示来自 Firefox 的图像(例如)?
    • 我也很高兴朋友。
    • 嗨,Tick Tock 先生。你会再帮我一次吗?在codeigniter中实现sendimage函数时我没有什么问题。我在这里创建了新线程:stackoverflow.com/questions/38413381/… big big big 谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2013-07-15
    • 2021-07-27
    • 1970-01-01
    • 2014-01-05
    相关资源
    最近更新 更多