Съдържание:

CovBot - чатбот, базиран на WhatsApp за COVID 19 Информация и още: 7 стъпки
CovBot - чатбот, базиран на WhatsApp за COVID 19 Информация и още: 7 стъпки

Видео: CovBot - чатбот, базиран на WhatsApp за COVID 19 Информация и още: 7 стъпки

Видео: CovBot - чатбот, базиран на WhatsApp за COVID 19 Информация и още: 7 стъпки
Видео: CoVbot - A Simple WhatsApp Chatbot For Latest COVID 19 Status Demo 2024, Ноември
Anonim
Image
Image
Създайте акаунт в Twilio
Създайте акаунт в Twilio

CoVbot е прост и интуитивен чат бот, базиран на Whatsapp. Основната характеристика на бота е:

Той може да ви даде най-новото състояние на COVID-19 в страната по избор по прост и интуитивен начин.

Освен това, ботът може да предложи забавни дейности, които да правите У дома, като:

  1. Предложете филм - Филм за гледане от списъка на Топ 10 на филмите, с кратък преглед на сюжета и продължителността. Тъй като този списък не е твърдо кодиран в софтуера, той винаги ще ви дава най -новите актуализации въз основа на текущите тенденции.
  2. Предложете телевизионно шоу - телевизионно шоу, което да гледате от най -популярните телевизионни предавания, с кратък преглед на сюжета и рейтингите. Тъй като този списък не е твърдо кодиран в софтуера, той винаги ще ви дава най -новите актуализации въз основа на текущите тенденции.
  3. Предложете книга - Книга за четене от Топ 10 на списъка с книги с изображение и корица на книгата.
  4. Ежедневни тренировки-Това е видео, базирано на 7-дневен график за тренировки, предоставен от фитнес залата CRANK в техния акаунт в Instagram.

Ако ви харесва тази инструкция, моля, помислете за гласуване за нея в конкурса за автори на първа тема. (и да, това е първата ми инструкция, така че ако нещо не е ясно или се нуждае от повече обяснения, моля, уведомете ме в секцията за коментари и мога да ви помогна:)

Консумативи

Този проект е единствено базиран на софтуер, така че всеки, който следва тази инструкция с лаптоп/настолен компютър/macOS/Linux и интернет, може да завърши този проект. В края ще включа и подробен раздел, за да обясня кода/процеса по -подробно за хора с известен опит в програмирането. Моля, обърнете внимание, че това не е необходимо за завършване на проекта

Ниво на трудност на проекта:

Не е много лесно, но не е много трудно

Хардуерът, който ще използваме:

  • Лаптоп/десктоп с Windows/macOS/Linux.
  • Мобилен телефон с инсталиран WhatsApp Messenger

Софтуерът, който ще използваме:

  1. Език за програмиране на Python
  2. ngrok - е инструмент, който ни позволява да имаме достъп до нашия сървър извън нашата мрежа
  3. Редактор по ваш избор: (например Notepad ++, Sublime Text, Vim и т.н.)

Стъпка 1: Инсталирайте необходимия софтуер

Image
Image

В тази стъпка ще направим следното:

  1. Инсталирайте Python> 3.6 и го тествайте
  2. Инсталирайте необходимите библиотеки на python
  3. Инсталирайте ngrok

Ако сте инсталирали и двете приложения, можете да пропуснете тази стъпка

Инсталирайте Python:

Цялата бекенд/сървърна кодова база за този проект е написана на Python 3.6. Следователно, за да стартираме нашите приложения, трябва да имаме инсталиран Python> 3.6 на нашия компютър. Следвайте урока от CoreySchafer за това как да инсталирате python за Windows и macOS

Можете да проверите дали всичко е инсталирано правилно, като въведете следното в cmd/терминала:

python -c 'print (f "Hello World")'

Ако всичко е инсталирано правилно, тогава Hello World трябва да бъде отпечатан на екрана. Ако получите невалидна синтаксична грешка, тогава имате инсталирана грешна версия на python. Инсталирайте версия на python> = 3.6

Инсталирайте необходимите библиотеки на python с помощта на pip:

Ще използваме следните библиотеки на python, за да накараме нашия софтуер да работи:

  1. Flask - Това е рамката за нашия сървър
  2. Twilio - Тази библиотека предоставя начин за комуникация на python с WhatsApp
  3. Заявка - Тази библиотека се използва за заявяване на данни от API
  4. BeautifulSoup4 - Тази библиотека се използва за извличане на информация от уебсайтове
  5. lxml - Тази библиотека се използва в комбинация с BeautifulSoup за извличане на съответната информация от уебсайт

За да инсталирате тези библиотеки, можете да направите следното:

Отворете CMD/терминал и въведете следната команда:

pip install flask, twilio, request, beautifulsoup4, lxml

ИЛИ

Изтеглете файла requirements.txt и отворете терминал в директорията, където е файлът, и въведете:

pip install -r requirements.txt

Инсталирайте ngrok

ngrok ви позволява да излагате сървър, работещ на вашата локална машина, в интернет. Просто кажете на ngrok на кой порт слуша вашият сървър.

Следва ръководството на уебсайта на ngrok, за да инсталирате ngrok за операционната система, която използвате.

Съвет: Стъпка 3 от ръководството не е от значение за този проект, така че може да бъде пропусната

Стъпка 2: Създайте акаунт в Twilio

В тази стъпка ще направим следното:

  1. Регистрирайте се за акаунт в Twilio
  2. Бързо запознаване с полезни раздели на конзолата на Twilio

Регистрирай се:

В този проект ще използваме API Twilio Whatsapp, за да свържем нашата програма на python с Whatsapp. За да можем да използваме Twilio API, първо трябва да създадем акаунт на официалния уебсайт на Twilio. За пробен акаунт Twilio предлага безплатен кредит от 15 долара, който да използваме.

Бързо въведение:

След като създадете акаунт, най -интересните раздели на конзолата Twilio за този проект са:

Табло за управление - От таблото за управление можете да видите размера на кредита, който ви остава, можете да редактирате името на проекта си и да промените езика за програмиране

Подсекция Whatsapp в секцията Програмируеми SMS - От секцията Whatsapp на конзолата можете да получите достъп до кода за присъединяване на бота, броя на Whatsapp, който ще използваме в проекта, за да разговаряме с нашия бот, както и настройката на webhook. Повече подробности за всичко това ще бъдат описани в следващите стъпки

Стъпка 3: Вземете API ключ за данни, филми и телевизионни предавания за COVID 19

Вземете API ключ за данни, филми и телевизионни предавания за COVID 19
Вземете API ключ за данни, филми и телевизионни предавания за COVID 19
Вземете API ключ за данни, филми и телевизионни предавания за COVID 19
Вземете API ключ за данни, филми и телевизионни предавания за COVID 19

API ключ или интерфейсен ключ за програмиране е код, който се предава от компютърни приложения. След това програмата или приложението извиква API или интерфейс за програмиране на приложения, за да идентифицира своя потребител, разработчик или извикваща програма към уебсайт.

Използваме API за получаване на информация за най -новите състояния, филми и телевизионни предавания за COVID 19. За достъп до API се нуждаете от ключ, който е личен за всеки потребител. В тази стъпка ще получим тези ключове

Вземете API ключ за данни от COVID 19:

  • Влезте или се регистрирайте за вашия RapidAPI акаунт.
  • След това отидете на COVID-19 API от Gramzivi
  • Превъртете надолу до секцията „Параметри на заглавието“на API конзолата.
  • Вашият API ключ трябва да се вижда в полето „X-RapidAPI-Key“.

Вземете API ключ за данни за филми и телевизионни предавания:

  • Влезте или се регистрирайте за вашия TMDB акаунт
  • След това отидете на вашата настройка - API
  • Превъртете надолу до секцията „API ключ (v3 auth)“
  • Вашият API ключ трябва да се вижда под него

Създайте "config.py" файл

Сега ще създадем файл config.py за съхраняване на нашите API ключове. Създаваме отделен файл за тях, тъй като API ключовете са поверителна информация и ако споделяте проекта си, не трябва да споделяте своя API ключ.

  • Създайте нова директория на проекта
  • Вътре в новосъздадената директория създайте нов файл, наречен "config.py"
  • Редактирайте този файл с редактор по ваш избор (Sublime, Notepad ++) и копирайте и заменете следния текст със съответната информация, получена в предишната стъпка:

session_key = "secret" #Това не е безопасно.. но само за тест е добре

rapid_api_key = "" api_key = ""

Запазете файла

Стъпка 4: Свържете Python и Twilio Via Ngrok

В тази стъпка ще направим следното:

  1. Изтеглете изходния код
  2. Изпълнете програмата и препратете локалния IP на публичен адрес чрез ngrok, за да можем да направим заявка до него
  3. Конфигурирайте нашия акаунт в Twilio, за да препратите заявката до нашия сървър

Изтеглете изходния код за бота:

Изтеглете целия прикачен файл в тази настройка в директорията на проекта, създадена в последната стъпка.

Изпълнете програмата:

Отидете в директорията на изходния код в CMD/терминала и изпълнете следната команда:

python server_main.py

Уверете се, че имате "config.py", който създадохме в последната стъпка, в противен случай ще получите грешка

Изходът трябва да е нещо подобно:

* Обслужващо приложение Flask "server_main" (мързеливо зареждане)

* Околна среда: производство ВНИМАНИЕ: Това е сървър за разработка. Не го използвайте в производствено разгръщане. Вместо това използвайте производствен WSGI сървър. * Режим на отстраняване на грешки: вкл. * ПИН за отстраняване на грешки: 740-257-236

Това означава, че вашият сървър работи правилно във вашата локална мрежа на порт 5000. За да направим този сървър достъпен извън вашата локална мрежа, ще използваме ngrok

Препратете локалния IP на публичен адрес чрез ngrok

Отидете в директорията, където сте изтеглили ngrok чрез CMD/терминал и изпълнете следната команда:

ngrok http 5000

Изходът трябва да е нещо подобно:

ngrok от @inconshreveable (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

Копирайте HTTP връзката от частта "Forwading" (само до ngrok.io). (Добавих _ в този пример, за да избегна инструкции да го прихващам като връзка)

Конфигурирайте Twilio да използва новия адрес, за да препрати заявката на сървъра до:

След като успешно препратихме нашия сървър за публичен достъп, трябва да конфигурираме Twilio така, че когато се прави заявка с помощта на Twilio Whatsapp API, ние препращаме заявката към нашия сървър. За да направим това, трябва да направим следното:

  1. Отидете в секцията Whatsapp на конзолата на Twilio
  2. Придвижете се до подраздел „Sanbox“
  3. В текстовото поле „КОГАТО ИДЕ СЪОБЩЕНИЕ“поставете HTTP връзката от ngrok, копирана с разширението /sms (НЕ КОПИРАЙТЕ _ в началото и в края):

_https://d44c955749bf.ngrok.io/sms_

Сега всичко за чатбота е настроено. В следващата стъпка можем да проверим дали всичко работи правилно

Стъпка 5: Тествайте нашето приложение

Тествайте нашето приложение
Тествайте нашето приложение
Тествайте нашето приложение
Тествайте нашето приложение
Тествайте нашето приложение
Тествайте нашето приложение

В тази стъпка ще направим следното:

  1. Присъединете се към нашия бот, използвайки кода за достъп
  2. Изпробвайте нашето приложение

Присъединете се към нашия бот, използвайки кода за достъп

В този проект ще използваме Whatsapp Sandbox номер на Twilio за нашия бот Whatsapp. За всеки човек този номер ще бъде различен. Можете да намерите номера си по следния начин:

  • Влезте в акаунта си в Twilio
  • Отидете на Twilio Console -> Whatsapp раздел -> Sandbox
  • Ще видите номера на Twilio Sandbox със следния текст:

Поканете приятелите си в пясъчника си. Помолете ги да изпратят съобщение в WhatsApp на:

Поради политиката за сигурност на Whatsapp, всеки, който иска да разговаря с автоматизиран бот чрез Whatsapp, трябва изрично да се включи, използвайки код. Можете да разберете кода си, като погледнете в същия раздел като номера на пясъчната кутия на Twilio с текста:

След като сте получили своя номер на Twilio Sandbox Whatsapp и кода за включване, за да започнете да използвате бота, отидете на мобилния си телефон и направете следното:

  1. Запазете „Twilio Sandbox Whatsapp Number“на вашия контакт с вашето име (напр. CovBot)
  2. Отворете Whatsapp и изпратете следното съобщение до този контакт:

присъединяване

Трябва да видите такова съобщение:

Twilio Sandbox: Всичко е готово….

Това означава, че сте се свързали с вашия бот и сте готови да го попитате qs

Изпробвайте нашето приложение:

За да тествате различните функции на вашия бот, след като сте се свързали, изпратете следното съобщение до бота:

Здравейте

Трябва да видите следния текст:

Добре дошли в CoVbot!

Прост чат бот, който може да дава най-новите актуализации на COVID-19 по прост, бърз и лесен начин. Тъй като всички сме под карантина, ботът може да се използва, за да предложи някои забавни дейности, за да се възползваме максимално от времето си у дома, докато се стремим да пазим себе си, приятелите и семейството си. Надяваме се да ви хареса и да ви бъде полезен! Изпратете 4, за да започнете!

Сега можете да следвате опцията да изпробвате различните функции на бота.

ТОВА Е! Вашият Whatsapp Chatbot е готов !!!! Честито

Стъпка 6: Как работи и бъдещи подобрения:

Как работи и бъдещи подобрения
Как работи и бъдещи подобрения
Как работи и бъдещи подобрения
Как работи и бъдещи подобрения
Как работи и бъдещи подобрения
Как работи и бъдещи подобрения
Как работи и бъдещи подобрения
Как работи и бъдещи подобрения

Този раздел е за хора, които имат опит в програмирането на python. Ако не можете, можете да пропуснете този раздел

Код Обяснение

Основен цикъл:

Когато съобщение Whatsapp се изпрати на номера на вашия Twilio, API на Twilio прави POST заявка към вашия сървър, която сте посочили. Сървърът е реализиран с помощта на рамката Flask и затова можем да използваме обекта Flask Request за извличане на данните, получени по време на POST заявката. Въз основа на данните (в този случай номера) ние решаваме каква опция е избрал потребителят и даваме съответната информация

Данни за COVID и филми и телевизионни предавания:

Данните за COVID 19, филми и телевизионни предавания се извличат от API. Използвам библиотеката с заявки python, за да получа данните и след това да ги преобразувам във формат JSON. Тогава просто анализирам съответната информация. За филмите и телевизионното шоу използвах и библиотеката с произволен питон, за да избера произволно телевизионно предаване и филм

Подробности за книгата

Алгоритъмът за предложения за книги, използван в проекта, е просто уеб скрепер. Не можах да намеря API, който да ви даде произволна книга с подробности, затова просто изстъргах уебсайт, използвайки BeautifulSoup4 и използвайки анализатора lxml, извличам съответната информация от книгата

Подробности за подменюто:

Прилагането на подменютата беше малко по-сложно от останалите, тъй като съобщенията в Whatsapp са като SMS, което е протокол без състояние. За да разреша това, използвах две техники:

  1. Използване на глобални променливи за запомняне на състоянието на съобщението - Това се прилага само за под -опцията COVID 19. В този случай, когато потребител избере „Състояние на COVID 19 в моята държава опция“, глобална променлива с име incomplete_message е зададена на True, за да посочи, че все още е необходимо друго съобщение въз основа на предишната опция. След това има проверка в началото, която проверява дали съобщението е маркирано като непълно, ако е така, то приема, че съобщението е името на държавата за данните за COVID и предава информацията на правилната функция и задава глобалната променлива непълното съобщение на False
  2. Използване на бисквитки Twilio и сесии с колби - бисквитките и сесиите с колби се използват в подменюто „Предложете карантинна дейност“за прилагане на състоянието, точно както всяко уеб приложение в интернет го използва в наши дни, но вместо да помни нещата като вашето потребителско име или акаунта го запомнете преобразуването между две числа. Ако ви харесва повече информация по тази част, препоръчвам да прочетете това страхотно ръководство за бисквитките Twilio, написано от екипа на Twilio

Бъдещи подобрения:

  1. Използвайте обектно -ориентираната Python и шаблони за дизайн, за да подобрите архитектурата на кода и DRYness
  2. Премахнете глобалните променливи
  3. Обработката на грешки може да бъде подобрена
  4. Автоматично актуализиране на адреса на ngrok с помощта на corn и Twilio CLI
  5. Кодова документация

Стъпка 7: Заключителни бележки

Надявам се всички да харесате този проект. Това е първата ми инструкция, така че ако нещо не е ясно или се нуждае от повече обяснения, уведомете ме в секцията за коментари и мога да ви помогна. Също така, ако сте направили този проект с различна техника или списък с функции, всички го споделят

Препоръчано: