群发送失败。 telegram api bot,sendMediaGroup函数

时间:2017-12-16 18:41:56

标签: php json telegram

在函数输入$ files = $ _FILES

不要得到Telegram想要的东西。

它说:" {" ok":false," error_code":400," description":" Bad Request:group发送失败"}"。 HIELPLEAS!

bool

3 个答案:

答案 0 :(得分:0)

您应该根据文件名称命名文件并将文件附加到请求中。所以改变你的代码:

function sendMediaGroup($files)
{
    $url = "https://api.telegram.org/bot" . $this->token . "/" . __FUNCTION__;
    $media = [];
    $ch = curl_init();
    $type = "photo";
    $caption = "";
    $parameters = array();

    foreach ($files as $file)
    {
        $media[] = [
            'type' => $type,
            'media' => "attach://" . $file['tmp_name'],
            'caption' => $caption
        ];

        $parameters[] = [
            $file['tmp_name'] => $file
        ];
    }

    $disable_notification = false;
    $reply_to_message_id = null;
    $parameters[] = [
        'chat_id' => $this->chat_id,
        'media' => json_encode($media),
        'disable_notification' => $disable_notification,
        'reply_to_message_id' => $reply_to_message_id,
    ];

    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type:multipart/form-data"));
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);

    return $output = curl_exec($ch);
}

答案 1 :(得分:0)

为了使Telegram通过Internet中的图片URL 创建媒体组,您必须以media属性值传递的文件链接可以被Telegram的服务器访问。有时情况并非如此,sendMediaGroup API调用失败,并显示神秘错误消息Bad Request: group send failed。在这种情况下,您可以尝试另一种发送照片的方法,例如使用sendMessage方法在text字段中输入,或转到@webpagebot并将其链接发送给他-该文件将更新该链接的预览,并且您可以将其发送到媒体组。

主持人注意:该答案并非100%针对原始问题,但在使用标题中的单词进行搜索时,该问题的链接在前十个弹出。

答案 2 :(得分:0)

如果要设置媒体的URL,则URL应该在:80或:443端口上工作。例如:https:examplesite.com/image1.jpg正常,https:examplesite.com:8443 / image1.jpg不好!