【问题标题】:How can I find out that telegram sends messages to the url that I set as webhook我怎样才能知道电报向我设置为 webhook 的 url 发送消息
【发布时间】:2016-07-20 12:23:54
【问题描述】:

我为我的电报机器人执行了这些步骤来设置 Webhook:

我从我的 https url(https://mywebapp.com/index./index.jsp) 获取 .cer 文件,然后按此顺序生成 .jks 文件(我转到 cmd 中的 jre/bin 文件夹):

keytool -importcert -file mywebapp.cer -keystore myKeystore.jks -alias mywebapp.com

然后我将其转换为 .p12 文件:

keytool -importkeystore -srckeystore myKeystore.jks -destkeystore myPkcs.p12 -srcstoretype jks -deststoretype pkcs12

然后我通过 openSSL 将 .p12 文件转换为 .pem 文件:

openssl pkcs12 -in myPkcs.p12 -out myPem.pem

然后我生成这个表单来设置 webhook:

<form id="telegramForm" action="https://api.telegram.org/botTOKEN/setWebhook" method="POST" enctype="multipart/form-data">
            <input type="text" name="url" id="url" value="https://mywebapp.com/index.jsp">
            <input type="file" name='certificate' id='certificate'>
            <input type="submit" value="submit">
        </form>

然后我从 input[type=file] 浏览 myPem.pem 文件。我提交此表单并收到以下回复:

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

但是当我(或用户电报)通过电报应用程序向我的机器人发送一些消息(如文本消息“hello”)时,https://mywebapp.com/index.jsp(设置为 webhook 的 URL)没有收到任何请求。

我怎样才能知道电报发送消息(用户发送到我的电报机器人)到我设置为 webhook 的 url?我怎样才能知道这个 url (https://mywebapp.com/index.jsp) 可以接收电报用户发送给我的电报机器人的消息? 为什么我无法收到电报用户发送给我的机器人的消息?我怎样才能得到它们? 谢谢。

【问题讨论】:

    标签: webhooks telegram telegram-bot pem jks


    【解决方案1】:

    最好将您的网络挂钩设置为:https://mywebapp.com/index.php

    index.php 是您的机器人处理器文件。

    将此代码放入您的index.php 文件中进行测试:

    <?php
    
    define('BOT_TOKEN','1234:xyz'); //replace second parameter with your bot token
    $command_prefix_url = 'https://api.telegram.org/bot' . BOT_TOKEN;
    $update = json_decode(file_get_contents('php://input'));
    
    $rep = json_decode(file_get_contents($command_prefix_url . '/SendMessage?chat_id=' .
        $update->message->chat->id . '&text='.urlencode($update->message->text)));
    ?>
    

    现在每次,如果有人向您发送一些文本,它将从机器人接收该文本。

    如果您想知道,是否有人向您的机器人发送了一些东西,您可以将此$update 保存到数据库或重新发送给您的(管理员)客户端!!(大量消息)

    【讨论】:

    • 我将 mywebapp.com/index.jsp 设置为 webhook。我写道,如果mywebapp.com/index.jsp 收到请求,请将请求的参数写入日志文件(mywebapp.com/log.txt).But 当我向机器人发送消息时,日志文件中不会写入任何内容。为什么?我设置 webhook 的步骤错了吗?谢谢。@Tick托克
    • @AtefehRashidi 你是怎么做这份工作的?你的步骤是什么?我的代码有效吗?(当您通过电报客户端(应用程序)向您的机器人发送文本时,您是否收到了一些东西)?
    • 我无法测试您的代码,因为我的服务器端代码是由 jsp 和 java 编写的。我生成自签名证书(如电报文档所述)和设置 webhook 的步骤是否为真?它是通过php还是jsp并不重要。我只想知道为什么我的 webhook 没有收到来自电报机器人的任何请求?谢谢。@Tick Tock
    • @AtefehRashidi 你可以用java或任何编程语言写代码,我写了那个简单的代码来测试和知道问题出在哪里,如果你对php一无所知,我告诉你它在做什么,那么你可以用java编写它。我的代码从 Telegram 收到一条消息,然后将其回复给发件人。如果它有效,那么您可以更进一步,但如果它不起作用,那么您之前启动时就会遇到真正的问题。
    猜你喜欢
    • 2012-12-25
    • 2011-01-02
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多