如何设置Telegram bot webhook?

Ign*_*i93 12 php ssl webhooks telegram telegram-bot

我正在开发一个Telegram机器人,我想将webhook设置为我的域名的URL.我已根据Telegram的指南生成了一个自签名证书.但是,我无法设置webhook.我搜索过以前的答案并找到了这个答案,但它对我不起作用.任何人都可以解释我如何上传SSL证书并设置webhook吗?

Mah*_*our 60

设置网络钩子

https://api.telegram.org/bot{my_bot_token}/setWebhook?url={url_to_send_updates_to}
Run Code Online (Sandbox Code Playgroud)

例如:

https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/setWebhook?url=https://www.example.com
Run Code Online (Sandbox Code Playgroud)

删除网络钩子

官方API不直接支持该方法。该方法只是使用空 url 参数调用 setWebhook。这告诉 Telegram 删除 webhook(如果有的话)。

https://api.telegram.org/bot{my_bot_token}/setWebhook?url=
Run Code Online (Sandbox Code Playgroud)

回复:

{"ok":true,"result":true,"description":"Webhook was deleted"}
Run Code Online (Sandbox Code Playgroud)

获取网络钩子

https://api.telegram.org/bot{my_bot_token}/getWebhookInfo
Run Code Online (Sandbox Code Playgroud)


Cha*_*gwu 20

我在服务器上创建了一个文件,用于方便地设置电报webhook.

您可以在服务器上使用相同的文件.

这应该在您希望运行Telegram Bot的同一台服务器上

<html>

<head>
  <title>Set Webhooks</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.6.0/css/bulma.min.css" />
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>

<body>
  <div class="container">
    <div id="app" class="section">
      <form :action="set_webhook" method="post" enctype="multipart/form-data">
        <label class="label">Enter your Token</label>
        <p class="control">
          <input class="input" type="text" v-model="token" />
        </p>
        <label class="label">Enter your Host</label>
        <p class="control">
          <input class="input" type="text" v-model="host" />
        </p>
        <label class="label">Enter your Port</label>
        <p class="control">
          <input class="input" type="text" v-model="port" />
        </p>

        <input type="hidden" name="url" v-model="bot_url">
        <label class="label">Maximum Connections?</label>
        <p class="control">
          <input class="input" type="text" name="max_connections" value="100" />
        </p>
        <br/>
        <p style="color:blue">{{ bot_url }}</p>
        <br/>
        <label class="label">Enter your Certificate</label>
        <p class="control">
          <input type="file" name="certificate" id="fileToUpload" />
        </p>
        <br/>
        <div class="control is-grouped">
          <p class="control">
            <button class="button is-primary" name="submit">Set Webhook</button>
          </p>
          <br/>
          <p class="control">
            <a :href="get_webhook_info" target="_blank" class="button is-info">Get Webhook Info</a>
          </p>
        </div>
    </div>
  </div>
  <script>
    new Vue({
      el: '#app',
      data: {
        token: 'xxx',
        port: 88,
        host: 'your-server.com',
      },
      computed: {
        get_webhook_info: function () {
          return 'https://api.telegram.org/bot' + this.token + '/getwebhookinfo'
        },
        set_webhook: function () {
          return 'https://api.telegram.org/bot' + this.token + '/setwebhook'
        },
        bot_url: function () {
          return 'https://' + this.host + ':' + this.port + '/' + this.token
        }
      }
    }

    )
  </script>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)
  1. 将此文件拖放到您希望托管机器人的同一台服务器上
  2. 确保.pem在您的Web服务器上启用了mime-type for
  3. 浏览我们服务器上的此页面
  4. 用您的BOT_TOKEN和选择的PORT填写表格
  5. 上传您的证书文件
  6. 提交表格

您将获得成功的结果:

{"ok":true,"result":true,"description":"Webhook was set"}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 这很棒!做了一些改进并创建了一个带有现场演示的 repo:https://github.com/igronus/telegramhook.tk (3认同)