【问题标题】:I set my telegram bot webhook, but do not send the telegram. Why?我设置了电报机器人 webhook,但不发送电报。为什么?
【发布时间】:2017-09-16 20:22:05
【问题描述】:

我使用 setwebhook 方法设置了我的电报机器人的 webhook,但是当我在机器人中发送消息时,不要在我的 URL 中使用它。

    https://api.telegram.org/bot<token>/setwebhook?url=https://www.example.com/bot/temp.php

在我的主机中,我使用 PHP 语言进行分析和回答。我使用此命令从机器人获取更新。

    $update = file_get_contents(“php://input”);

但是在运行后这行 $update 是空的。 当我使用 webhook 不获取数据时,我没有 setwebhook bot 获取更新没有问题。

运行 getWebhookinfo 的结果是:

    {"ok":true,"result":{"url":"https://example.com/bot/temp.php","has_custom_certificate":false,"pending_update_count":0,"max_connections":40}}

我必须是真正的“has_custom_cere”吗? 谢谢你的帮助

【问题讨论】:

    标签: bots telegram telegram-bot php-telegram-bot telegram-webhook


    【解决方案1】:

    /getwebhookinfo 方法的结果是什么,你能把它贴在这里吗? 请检查您的 SSL 证书是否有效(对我来说只有一次)以及如果您在浏览器中调用该网站会显示什么(任何 php 错误?)。

    我本来会评论的,但我没有足够的代表...对不起:/

    【讨论】:

    • SSL/TLS1.2 被接受电报有在我的主机。
    • 好的,/getwebhookinfosays?
    • {"ok":true,"result":{"url":"example.com/bot/…}}
    • 我检查了错误日志,但我没有关于这个 php 文件的任何错误。 :(
    • 在你的情况下我会做什么:减少 php 只发送一个回显(一行 php),检查 api 查询是否在没有机器人/sendmessage 的情况下工作,并检查我是否得到了正确的bot 令牌...并回答您的问题:不,自定义证书不一定是真的
    【解决方案2】:

    您可以通过以下方法发现问题:

    检查getWebhookInfo方法,确保你的webhook URL是正确的,并且没有last_error_message字段。

    POST 类似的数据到你的服务器,here 是一些你可以在curl -d JSON 中使用的数据,只需复制它并在你自己的服务器上运行。

    最后,检查您的 CDN 配置(如果您已在该服务器上应用),暂时禁用泛洪或任何检查。

    【讨论】:

    • getWebhookinfo 的结果是:{"ok":true,"result":{"url":"example.com/bot/…}}
    • 我使用共享主机。如何检查我的 CDN 配置?
    • 结果“has_custom_certificate”为假。我必须是真的吗
    • 我在页面顶部的主要问题中写下答案
    【解决方案3】:

    Mohammad,我认为电报向您发送请求时发生了 PHP 错误。以下代码应该可以正常获取 Telegram 请求。

    $json = file_get_contents('php://input');
    $request = json_decode($json);
    

    我认为您的脚本在此代码之前停止。建议你开启PHP调试模式并查看错误日志。

    【讨论】:

    • 我检查了我的错误日志。但我对这个 php 文件没有任何错误。 :(
    【解决方案4】:

    请按照这种方式进行,如果您没有得到答复,您的PHP 有问题:
    1- 通过键入 /revoke
    BotFather 撤销您的 Auth Key 2- 用新的Auth Key 重置您的Webbhook

    https://api.telegram.org/bot<token>/setWebhook?url=https://www.website.com/bot_path
    

    注意 #1:setWebhook 区分大小写,W 关键字必须为大写。
    注意 #2:如果您使用的是 CMS,例如 Codeigniter、Laravel、Zend 等。它不需要将 .php 放在您的 bot_path 之后,如果不使用它。
    注意#3:如果你想删除你设置的最后一个Webhook,你只需要在url上面写,其余部分不写?url=
    3-毕竟你从电报收到这条消息:

    {"ok":true,"result":true,"description":"Webhook 已设置"}

    现在您可以测试您的 Bot,但请注意,以这种方式检查您的 Auth Key,如果没有问题,则绝对您的 PHP 代码有问题。如果您还有问题,请在网站上与我联系以解决问题Graphap,然后将正确答案放在这里。
    我告诉我要重新检查这种方式,因为我经常遇到问题,因为Auth Key 不起作用但现在它也能正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 2017-08-18
      • 2019-03-14
      • 1970-01-01
      相关资源
      最近更新 更多