
# استفاده از 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%20Hooks)

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

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

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

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

[برای مشاهده اطلاعات دریافتی از این تابع کلیک کنید](https://core.telegram.org/bots/api#webhookinfo)

