我在电报中相当重要,我尝试用它来完成我的第一步。
我在这里找到了一个很好的教程https://www.youtube.com/watch?v=hJBYojK7DO4:我已经使用PHP和SSL配置了我的Apache 2.4,并且一切正常,也是本教程中的示例。
当我尝试放入浏览器时,麻烦正在使用setWebhook方法
https://api.telegram.org/<my_bot_code>/setWebHook?url=https://localhost/Telegram/MyYouTubeTutorialBot/YouTubeTutorialBot.php
回应是
{"ok":false,"error_code":400,"description":"Error: Bad webhook: Error: Ip is reserved"}
请注意,我使用的是自行生成的证书....
我在api Telegram文档中找到了(参考https://core.telegram.org/bots/faq#i-39m-having-problems-with-webhooks),
&#34; .....要使用自签名证书,您需要使用setWebhook中的certificate参数上传您的公钥证书。请上传为InputFile,发送字符串将无效。&#34;
我不明白如何上传我的公钥证书文件......某处的任何示例?
问题可能是因为我使用 localhost 和默认IP地址 127.0.0.1 为我的本地Apache?我应该使用每次连接到网络时更改的当前IP地址来更改我的IP地址(我使用互联网密钥将我连接到网络.....)?
非常感谢您提前
答案 0 :(得分:6)
使用以下简单的html代码
<html>
<body>
<form action="https://api.telegram.org/bot<BOT_TOCKEN>/setwebhook" method="post" enctype="multipart/form-data">
Select Certificate to upload:
<input type="file" name="certificate" id="fileToUpload">
URL: <input type="text" name="url" value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
<input type="submit" value="Upload Certificate" name="submit">
</form>
</body>
</html>
答案 1 :(得分:2)
以下库允许您轻松地执行此操作(并快速设置机器人):
https://github.com/auino/php-telegram-bot-library
它基本上调用Telegram的setWebhook
函数/页面,通过POST
请求将自签名证书作为文件传递:
$data = array("url"=>$YOURCALLBACKURL,"certificate"=>"@$CERTIFICATEFILE");
$telegramurl = "https://api.telegram.org/bot$TOKEN/setWebhook";
// now you have to make a request on $telegramurl passing $data via POST (e.g. using curl library)
如果你想使用php-telegram-bot-library
,你可以通过install.php文件轻松设置它,或者使用以下代码(它适用于Linux,它也可以在Windows系统上运行):
$bot = new telegram_bot($TOKEN);
$bot->set_webhook($WEBHOOKURL, $SSLCERTIFICATEFILE);
答案 2 :(得分:2)
您的本地计算机无法通过互联网localhost
或您的本地IP(127.0.0.1
)或本地网络IP(192.168.1.2
)进行访问
每台机器都有自己的localhost
所以电报服务器localhost与你的不同
您应该使用web hosting
或VPS
来运行脚本并使用其地址
我认识一个免费的开发者VPS:heroku