PDA

View Full Version : راه حل استفاده از متد getUpdates رباتهای تلگرام در پی اچ پی؟



samdoft
چهارشنبه 29 دی 1395, 19:06 عصر
سلام دوستان
من تا اونجایی مستندات سایت تلگرام رو راجع به رباتها خوندم میدونم که یکی از راههای که
پیام هایی که به ربات فرستاده میشه رو انالیز و مدیریت کرد استفاده از webhook هستش

وب هوک بعد از تنظیم کردنش اینجوری عمل میکنه که هر پیامی که از طرف کاربر به روبات ارسال میشه
از طرف سایت تلگرام به پیج webhook ما ارسال و به تبعش با توجه به دستورات ما جواب داده میشه...

اما سوال من اینه که اگر ما بخوایم از متد getUpdates استفاده کنیم چجوری یه ربات رو با زبان پی اچ پی برنامه نویسی کنیم
منظورم اینه که چجوری کاری کنیم که روبات ما همیشه اماده به کار باشه و در هر ساعت از شبانه روز درخواست هایی که به ربات ارسال
میشه رو مانیتور کرد و به اونا جواب داد
چون یه صفحه پی اچ پی تا وقتی فراخونیش نکنی که عمل نمیکنه
به عبارت دیگه سوال من اینه که چجوری با کدهای پی اچ پی یه اتصال دائم به سرور تلگرام برای گرفتن مقادیر getUpdates برقرار کنیم ؟
با تشکر از وقتی که میذارید:)

numberone1
چهارشنبه 29 دی 1395, 23:24 عصر
سلام
استفاده از وب هوک شرط اولش داشتن ssl ولید هست.
توی فروم دیگه ای یه دوستی توضیحات کاملی داده که همونو عینا میزارم اینجا


شما اگه میخوای بات تلگرام بنویسی باید داکیومنشن خود سایت رو بخونی و به نظرم اینجوری سوالا رو اگه یکی غلط جواب بده ممکنه که فقط دچار سردرگرمی بشی!
در هر صورت توی لینک زیر تنظیم وب هوک رو یاد داده!
https://core.telegram.org/bots/api#setwebhook
حالا من توضیح اضافه تر میدم که ایشالله به مشکل نخوری https://forum.persiantools.com/styles/default/xenforo/clear.png
همونطوری که توی بخش making request تلگرام توضیح داده شده شما باید فرمت درخواستات به شکل زیر باشه :
https://api.telegram.org/bot<token>/METHOD_NAME
که به جای token معلومه که باید توکنی که از bothfather گرفتی رو بزاری و به جای METHOD_NAME هم setwebhook رو باید بزاری که توی لینک بالا که بهت دادم توضیح داده!
توی درخواستتم که باید به شکل post باشه باید پارامتری با اسم url و مقدار آدرسی که میخوای تنظیم کنی رو بفرستی! و چون میگی که آدرست ولیده، نیازی نیست که پارامتری به اسم certificate هم بفرستی!
خود تلگرام پیشنهاد داده که بهتره آدرسی که میخوای واسه وب هوک تنظیم شه شامل token ات باشه که امنیتش بره بالا و کسه دیگه ای آدرستو پیدا نکنه که بهت اطلاعات فیک بفرسته!
و همچنین اگه وب هوک تنظیم کنی دیگه نمیتونی از متود getUpdate برای گرفتن پیام ها استفاده کنی!
واسه اینکه وب هوک رو هم حظف کنی کافیه توی پارامتر url مقدار خالی قرار بدی و درخواستتو بفرستی، اینجوری دوباره میتونی از متود getupdate واسه تست یا هر چیز دیگه ای استفاده کنی!
به نظر من بهتره از اپلیکیشن postman برای کار با api ها استفاده کنی که به فهمت توی کار با api ها خیلی کمک میکنه! از آدرس getpostman.org دانلودش کن (البته این اپ افزونه ی کرومه و قطعا باید رو سیستمت کروم نصب باشه واسه استفاده اش)

samdoft
پنج شنبه 30 دی 1395, 00:01 صبح
سلام
استفاده از وب هوک شرط اولش داشتن ssl ولید هست.
توی فروم دیگه ای یه دوستی توضیحات کاملی داده که همونو عینا میزارم اینجا
مرسی دوست عزیز
ولی من اینارو بلدم کار با api هاروهم بلدم دوباره توضیحات سوالمو بخون :)

plague
پنج شنبه 30 دی 1395, 12:47 عصر
زبان php برای ارتباط پایدار و دائم ساخته نشده و کلا اینجوری کار نمیکنه
با کرون جاب باید هر 1 دقیقه یکبار چک کنی پیام جدید داری یا نه

samdoft
پنج شنبه 30 دی 1395, 15:25 عصر
زبان php برای ارتباط پایدار و دائم ساخته نشده و کلا اینجوری کار نمیکنه
با کرون جاب باید هر 1 دقیقه یکبار چک کنی پیام جدید داری یا نه

مرسی از جوابت دوست عزیز
خب ایا کرون جاب به طور خودکار این کاررو میکنه یا باید ما هر دقیقه صفحه رو از مرورگر فراخونی کنیم
اصلا کرون جاب چی هست و چطور کار میکنه؟

plague
پنج شنبه 30 دی 1395, 17:45 عصر
به طور خلاصه یه آدرس رو میدی به سرور میگی هر 1 دقیقه یکبار فراخانیش کنه
این آدرس میتونه اسکریپت ربات شما باشه که متد getUpdates رو فر اخانی میکنه
یه سرچ بکن آموزشش حتما زیاده تو سی پنلت هم سرچ کنی cron منوش رو پیدا مکینی

samdoft
پنج شنبه 30 دی 1395, 18:22 عصر
به طور خلاصه یه آدرس رو میدی به سرور میگی هر 1 دقیقه یکبار فراخانیش کنه
این آدرس میتونه اسکریپت ربات شما باشه که متد getUpdates رو فر اخانی میکنه
یه سرچ بکن آموزشش حتما زیاده تو سی پنلت هم سرچ کنی cron منوش رو پیدا مکینی

کمترینش یه دقیقه یک باره یا از این کمتر هم میشه؟
چون یه دقیقه واسه مدیریت روبات خیلی زیاده یه ثانیه یه بار باید برسی بشه

plague
پنج شنبه 30 دی 1395, 20:15 عصر
استانداردش 1 دقیقست
اگه به سرور دسترسی داشته باشی راه های هست برای کم کردنش که من تا حالا انجام ندادم
من ربات زیاد نوشتم نمیدونم میخای چیکار کنی شما ولی 1 دقیقه همیشه کافی بوده
یک ثانیه مخصوصا اگه با دیتابیس سروکار داشته باشه اسکریپتت میتونه سرور رو داون کنه

samdoft
جمعه 01 بهمن 1395, 00:15 صبح
استانداردش 1 دقیقست
اگه به سرور دسترسی داشته باشی راه های هست برای کم کردنش که من تا حالا انجام ندادم
من ربات زیاد نوشتم نمیدونم میخای چیکار کنی شما ولی 1 دقیقه همیشه کافی بوده
یک ثانیه مخصوصا اگه با دیتابیس سروکار داشته باشه اسکریپتت میتونه سرور رو داون کنه

خب فکرشو بکن یه نفر بیاد پیغام واسه ربات ما ارسال کنه بعد یک دقیقه جوابش داده بشه خب این اصلا بدرد بخور نیست

plague
جمعه 01 بهمن 1395, 11:43 صبح
اینجوری هم نیست که فکرمیکنی
حداکثر 1 دقیقه طول میکشه نه اینکه 1 دقیقه کامل همیشه طول میکشه
یه راه حل ساده برای حل این مشکل اینه که تو هر بار اجرا شدن اسکریپتت چند بار آپدیت رو چک کنی و بینشون با sleep فاصله بندازی مثلا اسکریپتت اینجوری میشه

check for update
sleep(15)
check for update
sleep(15)
check for update
sleep(15)

اینجوری اسکریپتت هر 1 دقیقه با کرون اجرا میشه و هر بار که اجرا شد 3 بار با فاصله زمانی 15 ثانیه چک میکنه آپدیت رو
یعنی عملا اسکریپت شما هر 15 ثانیه چک میکنه آپدیت ها رو نه 1 دقیقه

samdoft
جمعه 01 بهمن 1395, 11:54 صبح
اینجوری هم نیست که فکرمیکنی
حداکثر 1 دقیقه طول میکشه نه اینکه 1 دقیقه کامل همیشه طول میکشه
یه راه حل ساده برای حل این مشکل اینه که تو هر بار اجرا شدن اسکریپتت چند بار آپدیت رو چک کنی و بینشون با sleep فاصله بندازی مثلا اسکریپتت اینجوری میشه

check for update
sleep(15)
check for update
sleep(15)
check for update
sleep(15)

اینجوری اسکریپتت هر 1 دقیقه با کرون اجرا میشه و هر بار که اجرا شد 3 بار با فاصله زمانی 15 ثانیه چک میکنه آپدیت رو
یعنی عملا اسکریپت شما هر 15 ثانیه چک میکنه آپدیت ها رو نه 1 دقیقه

میشه این فاصله ها رو تو اسکریپت پایین تر هم تنظیم کرد مثلا دوثانیه یا یک ثانیه
و سوال اخرم هم اینه که کرون جاب تنها راه حل واسه این کاره؟

plague
جمعه 01 بهمن 1395, 12:09 عصر
هرچقد میخای بزار
بله راهش کرون جابه

samdoft
دوشنبه 02 اسفند 1395, 17:34 عصر
خیلی خیلی ممنون مشکلم حل شد:)