فهرست مطالب:
- تدارکات
- مرحله 1: نرم افزار مورد نیاز را نصب کنید
- مرحله 2: ایجاد یک حساب Twilio
- مرحله 3: کلید API را برای داده ها ، فیلم ها و نمایش تلویزیونی COVID 19 دریافت کنید
- مرحله 4: پایتون و Twilio را از طریق Ngrok متصل کنید
- مرحله 5: برنامه ما را آزمایش کنید
- مرحله 6: چگونه کار می کند و بهبود آینده:
- مرحله 7: نکات نهایی
تصویری: CovBot - یک Chatbot مبتنی بر WhatsApp برای اطلاعات COVID 19 و بیشتر: 7 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:53
CoVbot یک چت بات ساده و مبتنی بر واتساپ است. ویژگی اصلی ربات به شرح زیر است:
این می تواند آخرین وضعیت COVID-19 را در کشور انتخابی به روشی ساده و بصری به شما ارائه دهد.
علاوه بر این ، ربات می تواند فعالیتهای سرگرم کننده ای را برای انجام در خانه پیشنهاد دهد ، مانند:
- فیلم پیشنهاد کنید - فیلمی که می توانید از لیست 10 فیلم برتر با یک نمای کلی کوتاه از طرح و مدت زمان تماشا کنید. از آنجا که این لیست در نرم افزارها کدگذاری نشده است ، همیشه آخرین اخبار را بر اساس روندهای فعلی به شما ارائه می دهد.
- پیشنهاد یک برنامه تلویزیونی - یک برنامه تلویزیونی برای تماشای محبوب ترین برنامه های تلویزیونی ، با یک مرور کوتاه از طرح و رتبه بندی ها. از آنجا که این لیست در نرم افزارها کدگذاری نشده است ، همیشه آخرین اخبار را بر اساس روندهای فعلی به شما ارائه می دهد.
- کتاب پیشنهاد کنید - کتابی که باید از لیست 10 کتاب برتر خوانده شود ، با تصویر واضح و جلد کتاب.
- تمرینات روزانه-این یک ویدیو است که بر اساس یک برنامه تمرین 7 روزه توسط CRANK gym در حساب اینستاگرام خود ارائه شده است.
اگر از این دستورالعمل لذت می برید ، لطفاً در مسابقه نویسنده مورد اول به آن رای دهید. (و بله این اولین دستورالعمل من است بنابراین اگر چیزی واضح نیست یا نیاز به توضیح بیشتری دارد لطفاً در قسمت نظرات به من اطلاع دهید و من می توانم به شما کمک کنم:)
تدارکات
این پروژه فقط یک پروژه مبتنی بر نرم افزار است ، بنابراین هر کسی که این دستورالعمل را با لپ تاپ/رایانه رومیزی/macOS/Linux و اینترنت دنبال می کند می تواند این پروژه را تکمیل کند. من همچنین یک قسمت مفصل در انتها برای توضیح بیشتر کد/فرایند برای افرادی که دارای تجربه برنامه نویسی هستند ، اضافه خواهم کرد ، لطفاً توجه داشته باشید که برای تکمیل پروژه لازم نیست
سطح دشواری پروژه:
خیلی آسان نیست ، اما خیلی سخت نیست
سخت افزاری که استفاده می کنیم:
- یک لپ تاپ/دسکتاپ با سیستم عامل Windows/macOS/Linux.
- یک تلفن همراه با پیام رسان WhatsApp نصب شده است
نرم افزاری که استفاده می کنیم:
- زبان برنامه نویسی پایتون
- ngrok - ابزاری است که به ما اجازه می دهد از خارج از شبکه به سرور خود دسترسی پیدا کنیم
- ویرایشگر مورد نظر شما ((به عنوان مثال Notepad ++ ، Sublime Text ، Vim و غیره)
مرحله 1: نرم افزار مورد نیاز را نصب کنید
در این مرحله ما موارد زیر را انجام خواهیم داد:
- Python> 3.6 را نصب کرده و تست کنید
- کتابخانه های مورد نیاز پایتون را نصب کنید
- گرمک را نصب کنید
اگر هر دو برنامه را نصب کرده اید ، می توانید این مرحله را رد کنید
Python را نصب کنید:
کل پایگاه داده پشتیبان/سرور برای این پروژه در پایتون 3.6 نوشته شده است. بنابراین برای اجرای برنامه های خود باید Python> 3.6 را بر روی کامپیوتر خود نصب کرده باشیم. آموزش CoreySchafer را در مورد نحوه نصب پایتون برای Windows و macOS دنبال کنید
با تایپ موارد زیر در cmd/Terminal می توانید همه چیز را به درستی نصب کنید.
python -c 'print (f "Hello World")'
اگر همه چیز به درستی نصب شده است ، Hello World باید روی صفحه چاپ شود. اگر خطای نحوی نامعتبر دریافت کردید ، نسخه اشتباه پایتون را نصب کرده اید. نصب نسخه python> = 3.6
نصب کتابخانه های پایتون مورد نیاز با استفاده از pip:
برای کارکردن نرم افزار از کتابخانه های پایتون زیر استفاده خواهیم کرد:
- Flask - این چارچوب سرور ما است
- Twilio - این کتابخانه راهی برای ارتباط پایتون با WhatsApp ارائه می دهد
- درخواست - این کتابخانه برای درخواست داده از API ها استفاده می شود
- BeautifulSoup4 - این کتابخانه برای جمع آوری اطلاعات از وب سایت ها استفاده می شود
- lxml - این کتابخانه در ترکیب با BeautifulSoup برای استخراج اطلاعات مربوطه از یک وب سایت استفاده می شود
برای نصب این کتابخانه ها می توانید موارد زیر را انجام دهید:
CMD/Terminal را باز کرده و دستور زیر را تایپ کنید:
pip install flask، twilio، request، beautifulsoup4، lxml
یا
فایل Requires.txt را بارگیری کرده و یک ترمینال را در پوشه ای که فایل در آن قرار دارد باز کرده و تایپ کنید:
pip install -r Requires.txt
گرمک را نصب کنید
ngrok به شما اجازه می دهد تا سروری را که روی دستگاه محلی شما کار می کند در معرض اینترنت قرار دهید. فقط به گرمک بگویید سرور شما در حال شنیدن چه پورتی است.
از راهنمای موجود در وب سایت گرمک برای نصب ngrok برای سیستم عاملی که استفاده می کنید پیروی می کند.
نکته: مرحله 3 راهنما مربوط به این پروژه نیست بنابراین می توان از آن صرف نظر کرد
مرحله 2: ایجاد یک حساب Twilio
در این مرحله ما موارد زیر را انجام خواهیم داد:
- ثبت نام برای یک حساب Twilio
- معرفی سریع بخشهای مفید کنسول Twilio
ثبت نام:
در این پروژه ، ما از API Twilio Whatsapp برای اتصال برنامه پایتون به Whatsapp استفاده خواهیم کرد. برای اینکه بتوانیم از API Twilio استفاده کنیم ، ابتدا باید یک حساب کاربری در وب سایت رسمی Twilio ایجاد کنیم. Twilio برای حساب آزمایشی 15 دلار اعتبار رایگان به ما می دهد تا از آن استفاده کنیم.
معرفی سریع:
پس از ایجاد حساب کاربری ، جالب ترین بخش های کنسول Twilio برای این پروژه عبارتند از:
داشبورد - از داشبورد ، می توانید میزان اعتبار مورد نیاز خود را مشاهده کنید ، می توانید نام پروژه خود را ویرایش کرده و زبان برنامه نویسی را تغییر دهید
زیر بخش Whatsapp در بخش SMS های قابل برنامه ریزی - از قسمت Whatsapp کنسول ، می توانید به کد پیوست شدن ربات ، تعداد Whatsapp که در پروژه برای صحبت با ربات خود استفاده می کنیم و همچنین راه اندازی webhook دسترسی پیدا کنید. به جزئیات بیشتر در مورد همه این موارد در مراحل بعدی توضیح داده می شود
مرحله 3: کلید API را برای داده ها ، فیلم ها و نمایش تلویزیونی COVID 19 دریافت کنید
کلید API یا کلید رابط برنامه نویسی برنامه ، کدی است که توسط برنامه های کامپیوتری ارسال می شود. سپس برنامه یا برنامه با API یا رابط برنامه نویسی برنامه تماس می گیرد تا کاربر ، توسعه دهنده یا برنامه خود را به وب سایت فراخوانی کند.
ما از API برای دریافت اطلاعات مربوط به آخرین وضعیت ، فیلم ها و نمایش های تلویزیونی COVID 19 استفاده می کنیم. برای دسترسی به API به کلیدی نیاز دارید که برای هر کاربر شخصی است. در این مرحله ، ما این کلیدها را دریافت می کنیم
دریافت کلید API برای داده های COVID 19:
- وارد حساب RapidAPI خود شوید یا ثبت نام کنید.
- پس از آن به API COVID-19 توسط Gramzivi بروید
- به قسمت "پارامترهای سرصفحه" کنسول API به پایین بروید.
- کلید API شما باید در قسمت "X-RapidAPI-Key" قابل مشاهده باشد.
دریافت کلید API برای فیلم ها و داده های نمایش تلویزیونی:
- برای حساب TMDB خود وارد شوید یا ثبت نام کنید
- پس از آن به تنظیمات خود - API بروید
- به قسمت "کلید API (تأیید v3)" بروید
- کلید API شما باید در زیر آن قابل مشاهده باشد
فایل "config.py" را ایجاد کنید
اکنون یک فایل config.py برای ذخیره کلیدهای API خود ایجاد می کنیم. ما یک فایل جداگانه برای اینها ایجاد می کنیم ، زیرا کلیدهای API اطلاعات محرمانه هستند و اگر پروژه خود را به اشتراک می گذارید ، نباید کلید API خود را به اشتراک بگذارید.
- یک فهرست پروژه جدید ایجاد کنید
- در داخل فهرست جدید ایجاد شده ، یک فایل جدید با نام "config.py" ایجاد کنید.
- این فایل را با ویرایشگر دلخواه خود (Sublime ، Notepad ++) ویرایش کنید و متن زیر را با اطلاعات مربوط به مرحله قبل بدست آورید و جایگزین کنید:
session_key = "راز" #این ایمن نیست.. اما فقط برای آزمایش اشکال ندارد
Rapid_api_key = "" api_key = ""
فایل را ذخیره کنید
مرحله 4: پایتون و Twilio را از طریق Ngrok متصل کنید
در این مرحله موارد زیر را انجام می دهیم:
- کد منبع را بارگیری کنید
- برنامه را اجرا کرده و IP محلی را از طریق ngrok به آدرس عمومی ارسال کنید تا بتوانیم از آن درخواست کنیم
- حساب Twilio ما را برای ارسال درخواست به سرور ما پیکربندی کنید
کد منبع ربات را بارگیری کنید:
تمام فایل پیوست موجود در این تنظیم را در فهرست پروژه ایجاد شده در آخرین مرحله بارگیری کنید.
اجرای برنامه:
به دایرکتوری کد منبع در CMD/terminal بروید و دستور زیر را اجرا کنید:
python server_main.py
اطمینان حاصل کنید که "config.py" را که در آخرین مرحله ایجاد کردیم داشته باشید ، در غیر این صورت با خطا مواجه خواهید شد
خروجی باید چیزی شبیه به این باشد:
* ارائه برنامه Flask "server_main" (بارگذاری تنبل)
* محیط: تولید هشدار: این یک سرور توسعه است. از آن در استقرار تولید استفاده نکنید. به جای آن از سرور WSGI تولیدی استفاده کنید. * حالت اشکال زدایی: روشن * در حال اجرا در https://127.0.0.1:5000/ (CTRL+C را برای خروج فشار دهید) * راه اندازی مجدد با stat * Debugger فعال است! * پین اشکال زدایی: 740-257-236
این بدان معناست که سرور شما به درستی روی شبکه محلی شما در پورت 5000 کار می کند. برای اینکه این سرور از خارج از شبکه محلی شما قابل دسترسی باشد ، از گرمک استفاده می کنیم.
IP محلی را از طریق ngrok به آدرس عمومی هدایت کنید
به پوشه ای بروید که گرمk را از طریق CMD/terminal بارگیری کرده اید و دستور زیر را اجرا کنید:
گرمک http 5000
خروجی باید چیزی شبیه به این باشد:
ngrok byinconshreveable (Ctrl+C برای ترک)
وضعیت جلسه بصورت آنلاین جلسه 7 ساعت ، 59 دقیقه منقضی می شود نسخه 2.3.35 منطقه ایالات متحده (ایالات متحده) رابط وب https://127.0.0.1:4040 بازارسال _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ بازارسال _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ اتصالات ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00 0.00
پیوند HTTP را از قسمت "Forwading" (فقط تا ngrok.io) کپی کنید. (من _ در این مثال برای جلوگیری از آموزش رهگیری آن به عنوان یک پیوند اضافه کرده ام)
پیکربندی Twilio برای استفاده از آدرس جدید برای ارسال درخواست سرور به:
اکنون که ما با موفقیت سرور خود را برای دسترسی عمومی به بازار ارسال کرده ایم ، باید Twilio را طوری پیکربندی کنیم که در صورت درخواست با استفاده از API Twilio Whatsapp ، درخواست را به سرور خود ارسال کنیم. برای این کار باید موارد زیر را انجام دهیم:
- به قسمت Whatsapp در کنسول Twilio بروید
- به بخش فرعی "Sanbox" بروید
- در کادر نوشتاری "وقتی پیام می آید" پیوند HTTP را از گرمک کپی شده با پسوند /sms (در آغاز و پایان _ کپی نکنید) بچسبانید:
_https://d44c955749bf.ngrok.io/sms_
اکنون همه چیز برای چت بات تنظیم شده است. در مرحله بعد ، می توانیم آزمایش کنیم که آیا همه چیز به درستی کار می کند یا خیر
مرحله 5: برنامه ما را آزمایش کنید
در این مرحله موارد زیر را انجام می دهیم:
- با استفاده از کد دسترسی به ربات ما بپیوندید
- برنامه ما را امتحان کنید
با استفاده از کد دسترسی به ربات ما بپیوندید
در این پروژه ، ما از شماره Sandbox Twilio Whatsapp برای ربات Whatsapp خود استفاده خواهیم کرد. برای هر فرد ، این تعداد متفاوت خواهد بود. می توانید شماره خود را به این شکل پیدا کنید:
- وارد حساب Twilio خود شوید
- به کنسول Twilio -> بخش Whatsapp -> Sandbox بروید
- شماره Twilio Sandbox خود را با متن زیر مشاهده خواهید کرد:
دوستان خود را به Sandbox خود دعوت کنید. از آنها بخواهید به واتساپ پیام ارسال کنند:
با توجه به سیاست امنیتی واتساپ ، هرکسی که می خواهد از طریق واتساپ با یک ربات خودکار صحبت کند ، باید به صراحت از یک کد استفاده کند. می توانید کد خود را با نگاه کردن در همان قسمت شماره Twilio sandbox خود با متن پیدا کنید:
پس از به دست آوردن شماره Whatsapp Twilio Sandbox و کد انتخاب ، برای شروع استفاده از ربات به تلفن همراه خود بروید و موارد زیر را انجام دهید:
- با انتخاب نام خود "شماره Twilio Sandbox Whatsapp" را در مخاطب خود ذخیره کنید (به عنوان مثال CovBot)
- Whatsapp را باز کنید و پیام زیر را به آن مخاطب ارسال کنید:
پیوستن
شما باید پیامی مانند این را ببینید:
Twilio Sandbox: همه چیز آماده است….
این بدان معناست که شما با ربات خود ارتباط برقرار کرده اید و آماده پرسیدن qs از آن هستید
برنامه ما را امتحان کنید:
برای آزمایش ویژگی های مختلف ربات خود پس از اتصال ، پیام زیر را به ربات ارسال کنید:
سلام
شما باید متن زیر را مشاهده کنید:
به CoVbot خوش آمدید!
یک چت بات ساده که می تواند جدیدترین به روزرسانی های COVID-19 را به روشی ساده ، سریع و آسان ارائه دهد. از آنجایی که همه ما در قرنطینه هستیم ، می توان از این ربات برای پیشنهاد برخی فعالیت های سرگرم کننده استفاده کرد تا از زمان خود در خانه بیشترین استفاده را ببریم ، زیرا سعی می کنیم خود ، دوستان و خانواده را ایمن نگه داریم. امیدواریم برای شما مفید باشد و از آن لذت ببرید! برای شروع 4 نفر را ارسال کنید!
اکنون می توانید گزینه ای را امتحان کنید تا ویژگی های مختلف ربات را امتحان کنید.
خودشه! Whatsapp Chatbot شما آماده است !!!! تبریک می گویم
مرحله 6: چگونه کار می کند و بهبود آینده:
این بخش برای افرادی است که تجربه برنامه نویسی پایتون را دارند. در غیر اینصورت می توانید از این بخش صرف نظر کنید
توضیح کد
حلقه اصلی:
هنگامی که پیام Whatsapp به شماره Twilio شما ارسال می شود ، API Twilio یک درخواست POST به سرور شما که مشخص کرده اید می کند. سرور با استفاده از چارچوب Flask پیاده سازی می شود و بنابراین می توانیم از شیء Flask Request برای بازیابی اطلاعات دریافتی در طول درخواست POST استفاده کنیم. بر اساس داده ها (اعداد در این مورد) ما تصمیم می گیریم که کاربر کدام گزینه را انتخاب کرده است و اطلاعات مناسب را ارائه می دهیم
داده ها ، فیلم ها و نمایش های تلویزیونی COVID:
داده های COVID 19 ، فیلم ها و نمایش های تلویزیونی از API بازیابی می شود. من از کتابخانه python درخواست برای دریافت داده ها و سپس تبدیل آنها به فرمت JSON استفاده می کنم. سپس من فقط اطلاعات مربوطه را تجزیه می کنم. برای فیلم ها و نمایش تلویزیونی ، من همچنین از کتابخانه پایتون تصادفی برای انتخاب یک برنامه تلویزیونی و فیلم تصادفی استفاده کردم
جزئیات کتاب
الگوریتم پیشنهاد کتاب مورد استفاده در پروژه فقط یک اسکرپر وب است. من نتوانستم هیچ API ای پیدا کنم که یک کتاب تصادفی با جزئیات در اختیار شما قرار دهد ، بنابراین من فقط یک وب سایت را با استفاده از BeautifulSoup4 و با استفاده از تجزیه کننده lxml اطلاعات مربوط به کتاب را استخراج می کنم.
جزئیات زیر منو:
پیاده سازی زیر منوها کمی سخت تر از بقیه بود زیرا پیام های Whatsapp مانند SMS هایی هستند که یک پروتکل بدون حالت هستند. برای حل این مشکل از دو تکنیک استفاده کرده ام:
- استفاده از متغیرهای جهانی برای به خاطر سپردن وضعیت پیام - این فقط برای گزینه فرعی COVID 19 اجرا می شود. در این حالت هنگامی که یک کاربر "وضعیت COVID 19 در گزینه کشور من" را انتخاب می کند ، یک متغیر سراسری با نام uncomplete_message روی True تنظیم می شود تا نشان دهد که پیام دیگری بر اساس گزینه قبلی هنوز مورد نیاز است. سپس در ابتدا یک بررسی وجود دارد که بررسی می کند آیا پیام ناقص علامت گذاری شده است در این صورت فرض می کند پیام نام کشور داده های COVID است و اطلاعات را به عملکرد صحیح می رساند و پیام ناقص متغیر جهانی را روی False تنظیم می کند
- استفاده از کوکی ها و جلسات فلاسک Twilio - کوکی ها و جلسات فلاسکی در زیر منوی "پیشنهاد فعالیت در قرنطینه" برای پیاده سازی حالت استفاده می شود ، درست مانند هر برنامه وب دیگری که در اینترنت این روزها از آن استفاده می کند ، اما به جای به خاطر سپردن مواردی مانند نام کاربری خود یا حساب آن تبدیل بین دو عدد را به خاطر بسپارید. اگر اطلاعات بیشتری در مورد این قسمت دوست دارید ، توصیه می کنم این راهنمای عالی را در مورد کوکی های Twilio که توسط تیم Twilio نوشته شده است بخوانید.
پیشرفت های آینده:
- از شی گرا بودن پایتون و الگوهای طراحی برای بهبود معماری کد و خشکی استفاده کنید
- حذف متغیرهای جهانی
- مدیریت خطا می تواند بهبود یابد
- به طور خودکار آدرس گرمک را با استفاده از ذرت و Twilio CLI به روز کنید
- مستندات کد
مرحله 7: نکات نهایی
امیدوارم همه از این پروژه خوشتون بیاد. این اولین دستورالعمل من است ، بنابراین اگر چیزی روشن نیست یا نیاز به توضیح بیشتری دارد ، در قسمت نظرات به من اطلاع دهید ، و من می توانم به شما کمک کنم. همچنین اگر این پروژه را با تکنیک یا لیست ویژگی های مختلف ساخته اید ، همه آن را به اشتراک بگذارید
توصیه شده:
پرورش بیشتر کاهو در فضای کمتر یا پرورش کاهو در فضا ، (بیشتر یا کمتر) .: 10 مرحله
رشد بیشتر کاهو در فضای کمتر یا … رشد کاهو در فضا ، (بیشتر یا کمتر): این یک ارائه حرفه ای به مسابقه سازنده Growing Beyond Earth است که از طریق دستورالعمل ها ارسال شده است. من نمی توانم بیشتر هیجان داشته باشم که برای تولید محصولات فضایی طراحی کنم و اولین دستورالعمل خود را ارسال کنم. برای شروع ، مسابقه از ما خواست تا
نحوه هک سنسور دما برای طول عمر بیشتر باتری: 4 مرحله
نحوه هک سنسور دما برای طول عمر بیشتر باتری: Inkbird IBS-TH1 یک دستگاه کوچک عالی برای ثبت دما و رطوبت در چند ساعت یا چند روز است. می توان آن را طوری تنظیم کرد که هر ثانیه حداکثر تا 10 دقیقه یکبار ثبت شود و داده ها را از طریق Bluetooth LE به تلفن های هوشمند اندرویدی یا iOS گزارش می کند. برنامه
کنترل کننده میانبر دستی (برای Photoshop + بیشتر) [Arduino]: 4 مرحله
کنترل کننده میانبر دستی (برای Photoshop + بیشتر) [Arduino]: آخرین باری که من یک پد کنترل کوچک ایجاد کردم تا در Photoshop استفاده کنم. این فوق العاده بود ، و من هنوز هم از آن استفاده می کنم! اما این نیز بسیار محدود است ، فقط با پنج دکمه و اندازه مفید و شماره گیرهای کدورت. من هنوز خودم را بسیار در حال رسیدن به صفحه کلید می دانم … بنابراین
پدهای حساس به فشار بازی (برای زمین های بازی دیجیتال - و بیشتر): 11 مرحله (همراه با تصاویر)
پدهای حساس به فشار بازیگوش (برای زمین های بازی دیجیتال - و بیشتر): این یک دستورالعمل است که به شما نشان می دهد چگونه یک پد حساس به فشار بسازید - که می تواند برای ایجاد اسباب بازی ها یا بازی های دیجیتالی استفاده شود. می توان از آن به عنوان یک مقاومت حساس به نیرو در مقیاس بزرگ استفاده کرد ، و اگرچه بازیگوش است ، اما می تواند برای پروژه های جدی تر مورد استفاده قرار گیرد
چگونه می توان Wifi را از 4 کیلومتری یا 2.5 مایل دورتر دریافت کرد! به روز شده برای سرعت بیشتر !!!!: 5 مرحله
چگونه می توان Wifi را از 4 کیلومتری یا 2.5 مایل دورتر دریافت کرد! برای سرعتهای بیشتر به روز شده است !!!!: سالهاست که این پست را گذاشته ام و من واقعاً از همه اطلاعات و علاقه ای که همه شما در این پروژه داشته اید قدردانی می کنم! پس از تحقیق و توسعه ما راه هایی را پیدا کرده ایم که این کار را حتی بهتر انجام دهیم. می دانید ما به چه چیزی نیاز داریم؟ قدرت بیشتر