Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set Telegram bot webhook?

I'm developing a Telegram bot, and I want to set the webhook to my domain's URL. I've already generated a self-signed certificate following the Telegram's guide. However, I'm not able to set the webhook. I've searched previous answers and found this one, but it doesn't work to me. Can anybody explain me how to upload the SSL certificate and set the webhook?

like image 879
Ignasi93 Avatar asked Mar 02 '17 11:03

Ignasi93


People also ask

How do you link bots on webhook?

Go to bot settings, then the "Webhooks" tab. Activate the setting and insert the URL to which you want to send data. Select the events you want to send alerts for and click Save to apply the settings.

How do you set up a webhook?

To set up a webhook, go to the settings page of your repository or organization. From there, click Webhooks, then Add webhook. Alternatively, you can choose to build and manage a webhook through the Webhooks API. Webhooks require a few configuration options before you can make use of them.

How do I use webhook URL?

With webhooks, it's generally a three-step process: Get the webhook URL from the application you want to send data to. Use that URL in the webhook section of the application you want to receive data from. Choose the type of events you want the application to notify you about.


2 Answers

I created a file on my server for conveniently setting up telegram webhooks.

You can use the same file on your server.

This should be on the same server from which you wish to run the 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>
  1. Drop this file on the same server you wish to host you bots
  2. Ensure the mime-type for .pem is enabled on your webserver
  3. Browse to this page on our server
  4. Fill the form with your BOT_TOKEN and chosen PORT
  5. Upload your certificate file
  6. Submit the form

You will get a successful result:

{"ok":true,"result":true,"description":"Webhook was set"}

enter image description here

like image 95
Charles Okwuagwu Avatar answered Oct 23 '22 21:10

Charles Okwuagwu


Set Webhook

https://api.telegram.org/bot{my_bot_token}/setWebhook?url={url_to_send_updates_to}

For instance:

https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/setWebhook?url=https://www.example.com

Delete Webhook

https://api.telegram.org/bot{my_bot_token}/setWebhook?url=

response:

{"ok":true,"result":true,"description":"Webhook was deleted"}

Get Webhook

https://api.telegram.org/bot{my_bot_token}/getWebhookInfo
like image 36
Mahdi Bashirpour Avatar answered Oct 23 '22 19:10

Mahdi Bashirpour