Receiving Updates
There are two ways of receiving updates, like incoming messages and interactions:
Polling
Your bot polls repeatedly the Bot API server and asks if there are new updates. If there is nothing new the request
waits until it timeouts or a new Update
becomes available. (That's called long polling
Telepath provides an implementation of this long polling feature in the handlePolling
method of the Bot
class.
$bot->handlePolling();
With optional parameters you can also define if you only want to received Updates of a certain type and overwrite the timeout.
Beware that this method call will never return.
Webhook
A webhook is a HTTPS POST request from the Bot API server to your bot with the data of a new Update
. Each Update
will result in an request the webserver of your bot must work on.
Register webhook
Webhooks must be registered at the Bot API server and require a webserver which can receive HTTPS requests.
To register the webhook Telepath offers the webhook:set
command. You can specify the URL of your endpoint using the url
parameter.
For more information of supported options please also have a look into the Telegram documentation.
Alternatively you can call the setWebhook
method of the Bot
class.
You may also want to have a look into the recommendations from Telegram for the secure usage of webhooks.
Handle incoming requests
To answer incoming Update
webhook calls you can simply call the handleWebhook
method of the Bot
class.
$bot->handleWebhook();
This method will transform the data from the webhook into a Update
and process it automatically.
Get information about current webhook
Telepath offers the command webhook:info
to retrieve several information about the currently registered webhook at the Bot API server. You can also call the getWebhookInfo
method of the Bot
class to receive the data.
Delete webhook
If you want to change the endpoint of your webhook or use the polling method instead of webhooks you must delete the webhook at the Bot API server. To do this you can use the webhook:delete
command or call the deleteWebhook
method of the Bot
class.