لوگوی وبسایت
تمام آموزش های وبسایت رایگان می باشد ، پس از صفحات مختلف سایت دیدن فرمایید .

سرویس های گپ‌، مشابه بات های تلگرام

دیگه بحث فیلترینگ توی ایران عادی شده و ما هم به از بین رفتن تلاش های چند سالمون عادت کردیم … اما اگر بخوایم یک نگاه کلی به پیام رسان های داخلی داشته باشیم گپ تنها پیام رسانی هست که API ایی عمومی دارد و میشود با امکانات محدودش سرویس هایی پیاده کرد …

اول از همه بگویم که منظور من از پیامرسان گپ gap.im هست نه پیام رسان IGap .

محدودیت های این API

متاسفانه این API بسیار ضعیف است و در مقابل امکاناتی که تلگرام به ما می دهد قابل مقایسه نیست . صرفا می توانیم پیام دریافت کنیم و پیام ارسال کنیم . خبری از Deep Linking و بررسی عضویت توی کانال و مدیریت گروه یا کانال با سرویس نیست … زیرا منطق سرویس های گپ کاربر محور است . یعنی یک سرویس ما داریم . کاربر عضو آن می شود و با آن کاربر تعامل میکند ! حالا با اضافه کردن یک پنل برای ارسال پیام همگانی خواستند کار ما را ساده تر کنند ولی لازم نبود …

بیاید یک سرویس پیاده سازی کنیم

متاسفانه امنیت در پیام رسان های داخلی بحث مهمی انگار نبوده چون شما به راحتی بدون نیاز به SSL می توانید یک Webhook در سرویس های این پیامرسان تعریف کنید .

پس اگر یک هاست و دامنه معمولی داشته باشید میتوانید یک سرویس پیاده سازی کنید .

من از لوکال هاست و Ngrok استفاده میکنم .

ابتدا باید وارد بخش Developer های Gap شویم . برای اینکار به آدرس https://developer.gap.im بروید و با اطلاعات حساب کاربری گپ تان وارد پنل شوید .

خود گپ یک سری سرویس از قبل ساخته شده مثل فروشگاه ساز و آزمون ساز آماده کرده ( بنظر من کار حرفه ایی نیست ) که میتوان از آن ها استفاده کرد .

برای اینکه سرویس جدیدی اضافه کنید در پنل سرویس ها روی گزینه ایجاد سرویس کلیک کنید .

خب با یک فرم بلند بالا برخورد میکنیم که باید پرش کنیم !

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

برای این کار فرم رو طبق اطلاعاتی که میخواهم پر میکنم .

نوع سرویس ما تعاملی است . و در بخش لینک خارجی باید آدرس وب هوکمان را وارد کنیم . ( مانند متد setWebhook تلگرام )

برای اینکار من تانل روی پورت ۸۲۸۳ با استفاده از ngrok آماده میکنم که بعدا وب سرور php رو روی همین پورت اجرا کنم و به عنوان وب هوک ازش استفاده کنم .

خروجی باید اینطور چیزی باشد

پس آدرس http://b7c17272.ngrok.io را به عنوان لینک خارجی به سرویس میدهم .

بخش مهم این فرم سایر تنظیماتش است‌!! چون اگر متن پیام خوش آمد گویی را پر نکنید گپ به باگ میخورد وکسی نمیتواند سرویس شما را استارت کند .

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

خب … وقتی ذخیره رو زدید به شما یک API KEY مثل توکن های تلگرام داده میشه که باید اون رو در جای امنی نگه دارید .

 

یک طوطی بنوسیم !

واسه آشنا شدن بیشتر با وب سرویس گپ اول یک ربات طوطی بنویسیم ! هر چی گفت ما هم همونو در جوابش بگیم .

یک پروژه جدید بسازید و اون رو روی پورت ۸۲۸۳ بالا بیارید :

خب حالا اگه از ngrok استفاده میکنید با باز کردن آدرس http://127.0.0.1:4040 می توانید تک تک پیام های جدیدی که از طرف ربات میاد رو مشاهده کنید .

اول برای تست ربات رو توی گپ استارت کنید .

چنین درخواست HTTP ایی برای ما ارسال می شود .

یعنی ما به صورت POST هم type و هم chat_id را دریافت میکنیم .

اگه وارد آدرس https://developer.gap.im/documents/api/ شوید میتونید تایپ های مختلف و ساختاری که پیام ها برای ما ارسال می شوند را متوجه شوید .

گپ منطق خوبی برای سرویس هاش پیاده نکرده (‌ اگر بخواهید در یک پست جداگانه تمام مشکلاتی که به نظر من هستن با راه حل هایشان رو می نویسم ) از این کارش که تایپ join داریم خوشم اومد ! دیگه نیازی نیست هر بار چک کنیم طرف عضو ربات بوده قبلا یا نه .. .

خب حالا یک پیام درون ربات ارسال کنید . برای مثال من می نویسم تست .

چنین POST ایی برای من ارسال شد :

خب میدانیم چه کاربری چه متنی رو برای ما ارسال کرده .

حالا باید $text را برای $chat_id ارسال کنیم .

برعکس تلگرام که باید مقدار API KEY درون آدرس قرار بگیرد . در گپ باید این مقدار را درون درخواست HTTP قرار دهیم . برای این کار من یک متد پیاده کردم که می توانید از آن استفاده کنید .

همان طور که می بینید جای اینکه درخواست ها را به api.telegram.org ارسال کنیم به api.gap.im ارسال می کنیم .

حالا برای ارسال پیام متنی باید چه مقادیری ارسال کنیم ؟ اگر به صفحه داکیومت های گپ بروید می بینید با متد sendMessage ما می توانیم تمام دیتا ها را ارسال کنیم . ( چه عکس چه فایل چه … ) صرفا باید type را برابر با نوع پیاممان قرار بدهیم .

مانند تلگرام chat_id نیاز است و جای مقادیر text, photo , video و .. ما data ارسال میکنیم .

پس برای ساخت طوطی این قطعه کد را نیاز داریم :

طوطی من کار کرد !:)

حالا یکم با کیبورد ها هم ور بریم !

کیبورد های گپ خیلی خوبن ! یعنی توی این یه مورد ازشون راضی ام . خیلی زیاد !

ما دو نوع کیبورد داریم . inline و کیبورد معمولی ( مثل تلگرام )

اما کیبورد های گپ یک سری خوبی ها دارن ! برای مثال با کیبورد inline میشه پرداخت انجام داد و … ( که بزودی احتمالا به تلگرام هم اضافه خواهد ).

الان ما با کیبورد معمولی یا reply کیبورد کار داریم . این کیبورد دقیقا شبیه تلگرامه با یک تفاوت . اینکه ما قبلا یک مقدار به اسم text داشتیم که متن کیبورد رو بهش میدادیم . حالا میتونیم جای text به کیبورد یک key بدیم . مثلا بنویسیم متن دانلود باشه ولی مقداری که ارسال میشه download_123 باشه و فایل ۱۲۳ رو برای دانلود بفرستیم ! خیلی بهتره .

حالا اگه بخواهیم یک کیبورد تست هم به پیام های ارسالیمون اضافه کنیم اینطور میشه :

ربات دانلود عکس پروفایل اینستا

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

https://github.com/Amhr/gap-instafile

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

 

به امید احترام قائل شدن برای ازادی مردم و عدم فیلترینگ تلگرام:) خدانگهدار

بر چسب های پست : , , , , , ,
مطالب مرتبط
آموزش برنامه نویسی ربات تلگرام ، توسعه ربات و آماده سازی بستر بر روی لوکال هست ب ...
۲۶ مرداد ۹۶
23 دیدگاه
شاید شما بخواهید هاست محلیتان یا همان localhost در سطح اینترنت نیز قابل دسترسی ب ...
۲۱ مهر ۹۵
10 دیدگاه
در بخش قبلی ما با ساختار یک برنامه نوشته شده با زبان C آشنا شدیم و در این بخش با ...
۱۸ مهر ۹۵
3 دیدگاه
زبان برنامه نویسی C یک زبان General Purpose و سطح بالا می باشد که در اصل توسط دن ...
۱۴ مهر ۹۵
1 دیدگاه
1 دیدگاه برای “سرویس های گپ‌، مشابه بات های تلگرام”
  1. حمیدرضا گفت:

    سلام
    من وقتی با نرم افزار گپ وارد ربات میشم بعد چند ثانیه ربات غیر فعال میشه و منو از ربات میندازه بیرون و پیغام می ده “خطا در عضویت” ؟!!!

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

ورود به حساب کاربری
بستن این پنجره