رضا اصغری
رضا اصغری
خواندن ۲ دقیقه·۶ سال پیش

یک نکته ظریف در خصوص توسعه بات‌ تلگرام همراه با وردپرس!

امروز حین شروع کدنویسی یک ربات تلگرامی برای یک فروشگاه اینترنتی توسعه داده شده بر بستر سیستم مدیریت محتوای وردپرس، با چالشی ساده اما طاقت‌فرسا روبه‌رو شدم که در عین حال که شاید موضوعی نسبتا ساده به نظر رسد، اما تصمیم گرفتم آن را در اینجا منتشر کنم تا شاید روزی برای سایر توسعه‌دهندگان وردپرس و بات‌های تلگرامی مفید واقع گردد.

همانطور که می‌دانید، نخستین گام در توسعه یک بات تلگرامی، فراهم‌سازی بسترهای نرم‌افزاری و سخت‌افزاری برای آن است که در ساده‌ترین حالت ممکن، این بستر شامل در اختیار داشتن یک وب‌سرور، یک دامنه اینترنتی و یا IP اختصاصی و همچنین اعمال پروتکل امنیتی SSL بر روی آن می‌باشد.

از آنجایی که بات مدنظر می‌بایست برای یک وب‌سایت فروشگاهی در حال ارائه سرویس کدنویسی می‌شد، طبیعتا وب‌سرور و دامنه اینترنتی موجود و از شانس خوب من پروتکل امنیتی SSL نیز بر روی آن فعال بود. بنابراین مستقیما سراغ ساخت بات رفته و در قدم ابتدایی اقدام به ست کردن وب‌هوک جهت مدیریت پیام‌ها و درخواست‌های دریافتی از کابران و ارائه پاسخ‌های متناسب با ورودی‌های کاربر نمودم. اما بر خلاف تجربه‌های گذشته، بات آنچنان که انتظار می‌رفت عمل نکرده و واکنشی به عمل اولیه /start از خود نشان نمی‌داد. با تست بات (با همان توکن و کدها) در سرورهای دیگر با عملکرد صحیح آن مواجه گشته و از صحت کدهای نوشته شده اطمینان حاصل نمودم. تا اینکه با دریافت جزئیات وب‌هوک ست شده با استفاده از متد getWebhookInfo و بررسی آن‌ها، متوجه دریافت خطای زیر توسط تلگرام هنگام تلاش جهت برقراری ارتباط با اسکریپت PHP که وب‌هوک بر روی آن ست شده است، شدم:

Wrong response from the webhook: 403 Forbidden

خطایی که حاکی از عدم صدور مجوزهای لازم از سوی وب‌سرور به تلگرام، جهت برقراری ارتباط و تبادل اطلاعات با اسکریپت بات بود. اما مشکل از کجا می‌توانست باشد؟ در صحت عملکرد کدهای نوشته شده شکی نبود (با توجه به تست در چندین سرور متفاوت و مشاهده عملکرد صحیح)، کد مجوز دسترسی به فایل اسکریپت بات در سرور به درستی تنظیم شده بود و همچنین پروتکل امنیتی SSL توسط یک شرکت معتبر خارجی تنظیم و ست شده بود! پس از ساعت‌ها کلنجار رفتن با بخش پشتیبانی شرکت ارائه دهنده خدمات میزبانی وب و فعال و غیرفعال کردن چندین ماژول امنیتی نصب شده بر روی سرور و... بازهم مشکل بر سر جای خود باقی بود و هیچ فرجی در این معضل معما مانند حاصل نمی‌شد. تا اینکه بالاخره به صورت کاملا اتفاقی به سراغ پلاگین‌های نصب شده در وردپرس رفته (بنابر تجربه حاصل شده از توسعه تم‌های وردپرسی و عیب‌یابی از طریق فعال/غیرفعال کردن پلاگین‌ها و...) و متوجه فعال بودن دو افزونه امنیتی معروف وردپرسی (wordfence و ithemes) بر روی این فروشگاه اینترنتی شدم که در نهایت با غیرفعال‌سازی افزونه ithemes خطای 403 برای وب‌هوک بات تلگرامی رفع، و بات شروع به پاسخ‌دهی به درخواست‌ها و پیام‌های دریافتی نمود. هرچند مدت زیادی را صرف زیر و رو کردن تنظیمات این افزونه نمودم، اما در نهایت موفق به یافتن پیکربندی خاصی جهت رفع محدودیت اعمال شده توسط آن برای ترافیک ورودی از تلگرام نشدم و با غیرفعال‌سازی کامل آن عطایش را به لقایش بخشیدم!



وردپرستلگرامبات تلگرامربات تلگرام
برنامه‌نویسی که سال‌هاست مبتدی است! علاقه‌مند به حوزه وب، اندروید و لینوکس...
شاید از این پست‌ها خوشتان بیاید