如何在Telegram中使用setWebhook和Windows 7和PHP上的自我证书?

时间:2015-10-27 20:49:47

标签: php ssl telegram apache2.4 telegram-bot

我在电报中相当重要,我尝试用它来完成我的第一步。

我在这里找到了一个很好的教程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地址(我使用互联网密钥将我连接到网络.....)?

非常感谢您提前

3 个答案:

答案 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 hostingVPS来运行脚本并使用其地址
我认识一个免费的开发者VPS:heroku