🤖 دریافت دادهها (update) از تلگرام: Webhooks vs Long Polling
🗂 رباتهای تلگرامی به طور کلی به دو دسته تقسیم میشن:
◀️ رباتهایی که نیازی به دریافت آپدیت ندارند.
◀️ رباتهایی که نیازمند دریافت از تلگرام هستند.
📱 برای هر دو دسته میشه مثالهایی ارائه داد:
◀️ تصور کنید یک ربات طراحی شده که هر شب در ساعت مشخصی، پیام خاصی رو به کاربرانی ارسال میکنه. این ربات نیازی به دریافت آپدیت از تلگرام نداره، چون عملکرد اون مستقل از تعامل با کاربرانه.
◀️ اما حالا رباتی رو تصور کنید که منتظره. منتظر کاربری که به عنوان مثال دستور معروف /start رو براش ارسال کنه تا به اون خوشآمد بگه. این ربات نیازمند دریافت آپدیت هست، چون عملکرد اون مبتنی بر واکنش کاربران میشه.
💡 به این واکنشها یا دستورات کاربران، آپدیت (update) میگیم؛ یعنی همون "واکنش کاربر".
🤔 حالا یک سوال مهم مطرح میشه، رباتهای تلگرامی از چه راههایی میتونند به این آپدیتها دسترسی پیدا کنند؟
🗂 دو روش اصلی برای این کار وجود داره:
◀️ روش Long Polling
◀️ روش استفاده از Webhook
ℹ️ در این پست، قصد داریم بررسی کنیم که کدوم یک از این دو روش برای شما میتونه مناسبتر باشه. اما قبل از مقایسه، لازمه هر دو روش رو به خوبی درک کنیم.
📶 روش اول: Long Polling
ℹ️ در این روش، فرض میکنیم تلگرام تمامی آپدیتهای مربوط به ربات ما رو جایی نگه میداره تا ربات بتونه اونها رو دریافت کنه و ازش بگیره. حالا ربات ما به طور مداوم از تلگرام درخواست میکنه که "آیا آپدیت جدیدی برای من ثبت شده یا نه؟"
🎙 اگر آپدیت جدیدی وجود داشته باشه، تلگرام اون رو در اختیار ربات قرار میده و ربات اون رو پردازش میکنه. و باز برای آپدیت های بعدی درخواست میده.
🎙 و اگر آپدیتی وجود نداشته باشه، ربات دوباره همون درخواست رو ارسال میکند و این چرخه در هر صورت ادامه پیدا میکند.
💡 به عبارت دیگه، در روش Long Polling، ربات به صورت ۲۴ ساعته و مداوم به تلگرام درخواست میده تا آپدیتهای جدید رو دریافت کنه. این عمل میتونه از طریق Bot API و متد getUpdates انجام بشه یا مستقیماً از طریق تعامل با MTProto و متد getDifference صورت بگیره.
⬇️ روش دوم: استفاده از Webhook
ℹ️ در این روش، دیگه نیازی نیست که ربات به طور مداوم از تلگرام درخواست آپدیت کنه. تلگرام خودش آپدیتها رو برای ربات ارسال میکنه. برای این کار، ما نیازمند این هستیم یک وبسرور راهاندازی کنیم و webhook provider رو جوری تنظیم کنیم تا آپدیتها رو برای این وبسرور ارسال کنه. این تنظیم در BotAPI از طریق متد setWebhook انجام میشه.
💡 به بیان سادهتر، در روش استفاده از Webhook، تلگرام وظیفه ارسال آپدیتها رو به عهده میگیره و ربات فقط باید منتظر دریافت آپدیتها باشه.
🍔مقایسه Long Polling و Webhook در BotAPI
ℹ️ سهولت استفاده
◀️ اگر دنبال سادهترین روش باشید، بدون شک Long Polling انتخاب مناسبیتری میتونه باشه. تنها کاری که باید انجام بشه، ارسال درخواست به تلگرام برای دریافت آپدیتها رو در قالب یک آرایهست. این روش حتی روی دستگاه شخصی خودتون هم قابل پیادهسازی و اجراست و نیازی به داشتن یک hosting عمومی https ندارید.
ℹ️ سرعت و عملکرد
◀️ اگر سرعت برای شما اهمیت داره، Webhook گزینه بهتری میتونه باشه و همونطور که توضیح داده شد، در این روش آپدیتها توسط تلگرام به ربات ارسال میشن. این ویژگی باعث میشه استفاده از Webhook برای رباتهای بزرگ، ربات های پرترافیک و ربات هایی که آپدیت های زیادی دریافت میکنند مناسبتر باشه.
💡در نهایت، هر دو روش کاربردی هستند و بسته به پروژه شما میتونند به خوبی عمل کنند.
✍️ *ژنرال*
💎 Channel: @DevelopixRobot
Post #13
1.68K
- 👍 8
- ❤ 4
- 🔥 3