- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Telegram 机器人,其 Webhook 设置在第三方托管服务器上。我可以使用任何 URL query string而且它们工作得很好。
现在我正在尝试制作我的机器人 send a text file 。如果我理解正确的话,我需要使用 multipart/form-data
发出 POST 请求,并且为了使其在托管服务器上工作,我付出了很大的努力。
$url = "https://api.telegram.org/bot<myToken>/sendDocument?chat_id=$<myId>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$post = array( 'document' => '@'.realpath('data.txt'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$headers = array();
$headers[] = 'Content-Type: multipart/form-data';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//DEBUGGING-------------------------------
$info = curl_getinfo($ch);
$buffer = "";
foreach ($info as $key => $value) {
$buffer .= "$key => $value\n";
}
sendMessage($buffer, $<myId>);
//----------------------------------------
$result = curl_exec($ch);
//DEBUGGING-------------------------------
sendMessage($result, $<myId>);
//----------------------------------------
curl_close($ch);
(sendMessage
是我用于调试的函数,因为我无法在 webhook 的 php 页面上使用 echo
)。
显然我没有收到data.txt
,两条调试消息是:
url => https://api.telegram.org/bot<myToken>/sendDocument?chat_id=$<myId>
content_type =>
http_code => 0
header_size => 0
request_size => 0
filetime => 0
ssl_verify_result => 0
redirect_count => 0
total_time => 0
namelookup_time => 0
connect_time => 0
pretransfer_time => 0
size_upload => 0
size_download => 0
speed_download => 0
speed_upload => 0
download_content_length => -1
upload_content_length => -1
starttransfer_time => 0
redirect_time => 0
redirect_url =>
----------------------------------------------------------------------------
{"ok":false,"error_code":400,"description":"Bad Request: URL host is empty"}
我也尝试过创建CURLFile,但没有成功。 ...这似乎比他需要的更难,考虑到我可以很容易地做到locally on my machine .
最佳答案
To send a local file ,创建一个new CURLFile()
,并将其添加到 CURL 请求中;
<?php
CONST CHAT_ID = '~~';
CONST BOT = '~~';
CONST FILENAME = './data.txt';
// Create CURL object
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.telegram.org/bot".BOT."/sendDocument?chat_id=" . CHAT_ID);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
// Create CURLFile
$finfo = finfo_file(finfo_open(FILEINFO_MIME_TYPE), FILENAME);
$cFile = new CURLFile(FILENAME, $finfo);
// Add CURLFile to CURL request
curl_setopt($ch, CURLOPT_POSTFIELDS, [
"document" => $cFile
]);
// Call
$result = curl_exec($ch);
// Show result and close curl
var_dump($result);
curl_close($ch);
关于php - Telegram Bot sendDocument(托管服务器上的 php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66244747/
我对将 pdf 文件发送到 Telegram Bot 的方式感到非常头疼。显然我正在关注文档,但从未发送过。我正在使用网址:https://api.telegram.org/botBOTID/send
我有一个 Telegram 机器人,其 Webhook 设置在第三方托管服务器上。我可以使用任何 URL query string而且它们工作得很好。 现在我正在尝试制作我的机器人 send a te
我有一个 Telegram 机器人,其 Webhook 设置在第三方托管服务器上。我可以使用任何 URL query string而且它们工作得很好。 现在我正在尝试制作我的机器人 send a te
我想通过 Telegram Bot API 发送文件,但我不知道如何使用提供的 Telegram Bot HTTP API 方法在 Java 中执行此操作(发布 multipart/form-data
我是一名优秀的程序员,十分优秀!