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