همیشه انسانها بهدنبال کشفو ایجاد راههای ارتباطی ساده بودهاند. در قرناخیر با فراگیرشدن اینترنت و دسترسیآسان به آن، راههای جدیدو نوینی برای برقراری ارتباطاز جمله شبکههای اجتماعی و مسنجرها (Messenger) بهوجود آمدهاست. مسنجرها همیشه محبوبتر از شبکههای اجتماعی بودهاند و البته فکر میکنیم هنوزهم محبوبتر هستند. یکیاز جذابیتهای اصلی آنها بلادرنگ (Real Time) بودن آنهاست که باعث میشود کاربران بهسادگی با یکدیگر به بحثو گفتگو بنشینند. از زمان اولین مسنجرها یعنی ICQ AOL و Yahoo! Messenger مدت زیادی گذشتهاست و مسنجرها همیشه درحال تغییر و تحول بودهاند. باآمدن گوشیهای هوشمند به بازار، مسنجرها نیز دچار تحولات شگرفی شدند تا جاییکه برخیاز انواع مسنجر، خود شبکهی اجتماعی نیز محسوب میشوند. مسنجر محبوب تلگرام (البته در ایران) یکیاز این مسنجرها است که باتوجهبه ارائه امکانات و مفاهیمجدید توانسته این حوزه را دستخوش تغییرات بزرگیکند و باعث محبوبیت بیشتر خود شود. تلگرام (Telegram) بامعرفی دومفهوم جدید کانال و ربات توانست کاربردهای جدید را برای مسنجرها تعریفکند بهنحویکه امروزه هزاران کانال و بات مختلف در تلگرام مشغول بهکار هستند و میلیونها کاربر از آنها استفاده میکنند. آموزشهایی در خصوص ارتباط بردهای آردوینو با تلگرام در وبسایتهای فارسی وجود دارد که متأسفانه فاقد اطلاعات کافی پیرامون پروتکل ارتباطی و جزییات لازم هستند. ما در این آموزش سعیمیکنیم ارتباط برد آردوینو و ربات تلگرام را با تمام جزئیات در اختیار شما عزیزان قرار دهیم.
ربات تلگرام چیست؟
درواقع ربات تلگرام یک حسابکاربری ویژه است که شما قادر به چت با آن هستید و میتوانید بااستفادهاز دستورات خاص ازپیش تعریفشده، با آنها تعامل داشتهباشید. رباتها برنامههای کامپیوتری هستند که بااستفادهاز الگوریتمهای طراحیشده، جواب درخواستهای شما را میدهد. باور اشتباهی در خصوص هکشدن توسط بات تلگرام وجود دارد که اشتباهاست. رباتها قادر به هک هیچ حسابی نیستند مگر آنکه شما اطلاعات لازم را در اختیار آنها قراردهید. برخیاز
ویژگیها و محدودیتهای ربات تلگرام:
- رباتها معمولاً فضای محدودی برای ذخیرهسازی پیامهای شما دارند و معمولاً پیامهای پردازششده پاک میشوند.
- رباتها نمیتوانند شروعکنندهی مکالمه باشند و باید حتماً از سمت شما درخواستی برای پردازش به آنها ارسال شده باشد.
- در انتهای نام کاربری هر ربات باید کلمه bot وجود داشته باشد که مشخصکنندهی ربات بودن آن حساب کاربری است.
- رباتهای تلگرام هرگز خسته و غیرفعال نمیشود ولی شما بهراحتی میتوانید آنها را برای خود غیرفعال کنید.
- رباتها با اضافه شدن به گروهها و کانالها قادر به خواندن پیامها نیستند مگر آنکه تنظیمات آن را تغییر داده باشید.
- رباتها تعداد محدودی پیام در روز میتوانند ارسال کنند.
- رباتها زمان آخرین بازدید را ندارند و به جای آن Bot نمایش داده میشود.
ربات تلگرام چه کارهایی را میتواند انجام دهد؟
وقتی میپرسیم که با آردوینو چه کارهایی میتوان انجامداد، باید بگوییم که هیچ محدودیتی وجود ندارد؛ تنها محدودیتِ موجود میزان خلاقیت شماست. ربات تلگرام نیز هیچ محدودیتی در پیادهسازی ایدهها و کاربردها ندارد و هر آنچه که برای آن پیادهسازی شدهباشد را قادراست انجامدهد.
چگونه یک ربات تلگرام بسازم؟
خوشبختانه ساخت ربات تلگرام کار پیچیدهای نیست. تنها کافیاست که یک حساب تلگرام داشتهباشید و سرصحبت را با ربات پدرخوانده (botfather) باز کنید و به او بگویید که میخواهید یک ربات بسازید. بقیهی کارها را خودش انجام میدهد. برای بازکردن سر صحبت با ربات پدرخوانده ابتدا دستور زیر را به آن بفرستید:
/start
بعداز ارسال دستور start، ربات پدرخوانده لیستی از دستورات قابلاجرا را برای شما ارسال میکند.
همانطور که در عکس فوق هم مشخص است برای ساخت یک ربات جدید باید دستورزیر را به ربات پدرخوانده بفرستیم:
/newbot
ربات پدرخوانده با دریافت دستور newbot از شما نامکاربری ربات موردنظر را سؤال میکند. دقتداشتهباشید نامکاربری با نام ربات فرق دارد و نامکاربری ربات شما حتماً در انتها باید دارای bot باشد. اگر نامکاربری را بدون bot در انتها وارد کنید، ربات پدرخوانده پیامزیر را نمایش میدهد:
بعداز وارد کردن صحیح نام کاربری درصورتیکه مشکلی وجود نداشته باشد ربات موردنظر توسط ربات پدرخوانده ایجاد میشود و یک کلید دسترسی به شما داده میشود. با استفاده از این کلید میتوانید ربات خود را مدیریت کنید؛ پس دقت داشته باشید که این کلید دسترسی را ذخیره کنید و در اختیار همه قرار ندهید چرا که هر کسی که این کلید را داشته باشد قادر به کنترل ربات خواهد بود
در این مرحله فقط کلید ارسالشده را ذخیره کنید در ادامه توضیح خواهیم داد که چطور میتوان با استفاده از آن به ربات متصل شد.
ربات تلگرام چطور کار می کند؟
قبلاز اینکه توضیح بدهیم که چطور میتوانیم ربات موردنظرمان را به آردوینو یا هر سختافزار دیگری وصل کنیم، بهتر است در خصوص اتفاقاتی که درون هستهی یک ربات میافتند صحبت کنیم. وقتیکه شخصی به ربات شما پیام ارسال میکند، پیام کاربر درون سرور تلگرام ذخیره میشود و تلگرام بسته به متد مورداستفادهی شما (Web Hook یا Long Polling) برای برقراری ارتباط با سرور تلگرام، پیام کاربر را در قالب خاصی برای شما ارسال میکند و شما بعداز پردازش دادههای ارسالی، پاسخ خود را در قالب مشخصی برای سرور تلگرام ارسال میکنید و تلگرام دادههای دریافتی را برای کاربر ارسال میکند. سرورهای تلگرام بهعنوان واسط بین کاربر و هستهی پردازشی ربات قرار میگیرند. این باعث میشود که هستهی پردازشی، آدرس آیپی کاربر را نداشته باشد و امنیت ارتباط بالا برود. دو روش برای برقرار ارتباط با سرورهای تلگرام وجود دارد: روش اول که توسط خود تلگرام نیز توصیه میشود روش Web Hook است. دراین روش هروقت ربات شما پیام جدیدی داشتهباشد خود سرورتلگرام پیام را برای شما ارسال میکند. دراین روش داشتن آدرس آیپی اختصاصی و مجوز SSL الزامی است. تهیهی این دو پارامتر هزینهبر است و نمیتوان از آن در همهی کاربردها استفاده کرد. ما قراراست در این آموزش برد آردوینو را به ربات تلگرام متصل کنیم. قاعدتاً تهیه آیپی استاتیک برای برد آردوینو کار دشواری است. از طرفی پیادهسازی پروتکل SSL خود بهتنهایی کاری بسیار پیچیده است. در این آموزش، ما از متد Long Polling استفاده میکنیم. در متد Long Polling سرور تلگرام چیزی بهما نمیدهد بلکه ما باید مداماز سرور استعلام کنیم و ببینیم آیا پیامجدیدی برای پردازش وجوددارد یا خیر! درصورت وجود پیامجدید آنرا پردازش میکنیم و به سرور ارسال میکنیم. دراین روش نیازی به داشتن آیپی استاتیک یا مجوز SSL نیست و بهراحتی می توان با سرور ارتباط برقرارکرد.
چگونه به سرور وصل شویم؟
همانطور که گفتیم برای اتصال به سرورهای تلگرام ما از روش Long Polling استفاده خواهیم کرد. در این روش اول لازم است که یک آدرس ایجاد کنیم و بعد با مراجعهبه آدرس، عملیات موردنظر خود را انجام دهیم. برای کنترل ربات تلگرام باید از متدهای معرفیشده توسط تلگرام استفاده کنیم. هریکاز این متدها ورودی و خروجیهای خاص خود را دارند. برای ارسال پارامترهای موردنیازِ هر متد میتوان از روش POST یا GET استفاده کرد. جهت سادگی بیشتر ما از متد GET برای ارسال پارامترها استفاده خواهیمکرد. دراین روش پارامترهای موردنظر در URL قرار میگیرند.
https://sisoog.com/?p=26112
درمثال فوق بااستفاده از متد GET، متغیر p مقدار 26112 را دریافتکرده و به سرور سیسوگ ارسال شدهاست. برایاینکه بتوانیم به سرور تلگرام بگوییم که قصد چه کاری را داریم و قرار است در مورد کدام ربات صحبت کنیم نیاز است که URL منحصربهفردی بسازیم که دربردارندهی این اطلاعات باشد. برای ساخت این URL باید مثل الگوی زیر رفتار کنیم:
https://api.telegram.org/bot<token>/METHOD_NAME
<token> همان کلیدی است که ربات پدرخوانده بعداز ایجاد ربات برایما ارسال کردهاست. دقتداشتهباشید که نباید هیچ فاصلهای وجودداشتهباشد و تمام فاصلهها حذف شوند. METHOD_NAME هم در واقع متدی است که قصد فراخوانی آن را داریم. لیست متدهای مجاز را میتوانید در وبسایت تلگرام مشاهده کنید. درصورتیکه متد موردنظر دارای پارامتر باشد، پارامترهای آنرا در انتها وارد می کنیم. فرضکنید میخواهیم متد getMe را برای رباتی که ساختیم فراخوانی کنیم.
باتوجهبه توضیحات ارائهشده در سایت تلگرام این متد هیچ پارامتر ورودی ندارد و در خروجی، دادهها را در قالب شیء User برمیگرداند.
همانطور که میبینید شیء User دارای مشخصات اولیه اعم از اسم، یوزر و زبان ربات است. با توجه به توضیحات ارائهشده، ابتدا URL موردنظر خود را می سازیم، بعد آنرا درون مرورگر وارد میکنم و سرور تلگرام خروجی را برایما ارسال خواهدکرد:
https://api.telegram.org/bot427594526:AAGyn4uPF3R4woujYL-N1TQpDEslXXXXX/getme
بعداز فراخوانی آدرس فوق در مرورگر، سرور تلگرام اطلاعات مربوطبه ربات را برایما ارسال میکند:
درمقالهیبعد بااستفادهاز نرمافزار آردوینو و ماژول ESP8622 برنامهای خواهیم نوشت که بتوانیم از طریق ربات تلگرام وضعیت چند خروجی را تغییر دهیم.
منبع: سیسوگ
[…] قسمتاولِ آموزش، چگونگی ساخت رباتتلگرام را توضیح دادیم و بهنحوهی […]
سلام عذر میخوام برای گذر از فیلتر تلگرام چه کاری انجام بدیم؟
[…] تا قبل از فیلترینگ رسمی تلگرام در کشور در چند مقاله (آموزش اتصال ربات تلگرام به آردوینو – قسمت اول و آموزش اتصال ربات تلگرام به آردوینو – قسمت دوم) سعی […]