Files
my-docs/TelegramBot/WebHooks.md
Mahdiyar Abdollahi a7c9620d41 Create WebHooks.md
2023-10-29 21:53:38 +03:30

4.1 KiB
Raw Blame History

استفاده از Web Hooks در گرفتن پیام های بات تلگرام

توجه: پیش نیاز این سند Getting Started.MD است

دو روش برای دریافت پیام ارسالی به بات در تلگرام وجود دارد. Get Updates Function و Web Hooks روش Get Updates Function را در سند قبلی استفاده و بررسی کردیم. برای درک Web Hook باید اول Get Updates را خوب متوجه شویم

روش اول: Get Updates

در این روش که در سندی قبل از آن استفاده کردیم. شما به تلگرام مراجعه می کنید و تلگرام همه پیام هایی تاریخ بات را برای شما می فرستد در این روش چند چالش وجود دارد

  • در هر درخواست تمامی پیام ها ارسال می شود این به معنی است که در یک بات با مخاطبان متوسط هر درخواست شامل صد ها هزار پیام است که قبلا به آن پاسخ داده اید و به آن ها دیگر نیازی ندارید

  • باید بررسی کنید که به کدام پیام پاسخ داده شده و به کدام پاسخ نداده شده است

  • باید از حلقه بی نهایت استفاده کنید تا همیشه از تلگرام درخواست کند. پیاده سازی حلقه بی نهاییت در بسیاری از نرم افزار ها مانند وب سایت بسیار چالش بر انگیز یا غیر ممکن است.

راه کار بهتر روش Web Hooks است.

روش دوم: Web Hooks

در این روش به جای اینکه مانند روش Get Updates شما به تلگرام مراجعه کنید. تلگرام به شما مراجعه می کند. پیام های جدید را که قبلا دریافت نکرده اید به شما می دهد. این روش هر سه مشکل Get Updates را بر طرف می کند. البته این روش نیز بی نقص نیست و چالش به همراه دارد. مانند:

  • چون تلگرام باید برای شما چیزی ارسال کند نمی توان از این روش در فضای Local استفاده کرد

  • محدودیت توسط تلگرام برای این روش اعمال شده است که ممکن است رفع این محدودیت ها هزینه بر یا وقت گیر باشد

محدودیت های Web Hooks

  • اگر از وب هوکس استفاده کنید دیگر نمی توانید از getUpdates استفاده کنید
  • فقط پورت های 443, 80, 88, 8443 برای اینکار قابل استفاده اند
  • فقط تلگرام به سایت هایی که دارای SSL هستند. پیام ها را ارسال می کند

تنظیم از Web Hooks

برای تنظیم وب هوک از طریق تابع setWebhook آدرسی که می خواهیم به آن پیام ها ارسال شود را به عنوان Url ارسال می کنیم

https://api.telegram.org/bot<token>/setWebhook

نکنه: حتما از متد POST استفاده کنید و Url را با روش application/json بفرستید

برای مشاهده پارامتر های اختیاری Web Hooks به لینک زیر مراجعه کنید https://core.telegram.org/bots/api#setwebhook

پاک کردن Web Hooks

اگر به هر دلیلی خواستید وب هوک را پاک کنید یا از get Updates استفاده کنید با استفاده از تابع زیر وب هوکس پاک شده و Get Updates دوباره فعال می شود

https://api.telegram.org/bot<token>/deleteWebhook

مشاهده وضعیت Web Hooks

با تابع زیر می توان وضعیت وب هوک، سرعت پاسخ دهی، آخرین خطا ها، آخرین هشدار ها و... را مشاهده کرد

https://api.telegram.org/bot<token>/getwebhookinfo

برای مشاهده اطلاعات دریافتی از این تابع کلیک کنید