Оглавление:

CovBot - чат-бот на основе WhatsApp для COVID 19 Информация и многое другое: 7 шагов
CovBot - чат-бот на основе WhatsApp для COVID 19 Информация и многое другое: 7 шагов

Видео: CovBot - чат-бот на основе WhatsApp для COVID 19 Информация и многое другое: 7 шагов

Видео: CovBot - чат-бот на основе WhatsApp для COVID 19 Информация и многое другое: 7 шагов
Видео: CET Covid Robot | Our first implementation | CET CovBot v1.0 2024, Июль
Anonim
Image
Image
Создать учетную запись Twilio
Создать учетную запись Twilio

CoVbot - это простой и интуитивно понятный чат-бот на основе WhatsApp. Основная особенность бота:

Он может дать вам последний статус COVID-19 в стране выбора в простой и интуитивно понятным способом.

Кроме того, бот может предлагать забавные занятия, которые нужно делать ДОМА, например:

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

Если вам нравится этот Instructable, пожалуйста, рассмотреть вопрос голосования за него в первом пункте Автор конкурса. (и да, это моя первая инструкция, поэтому, если что-то неясно или требует дополнительных объяснений, дайте мне знать в разделе комментариев, и я могу вам помочь:)

Запасы

Этот проект основан исключительно на программном обеспечении, поэтому любой, кто будет следовать этому руководству с ноутбуком / настольным ПК / 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 / Terminal следующее:

python -c 'print (f "Привет, мир")'

Если все было установлено правильно, то на экране должно быть напечатано Hello World. Если вы получаете неверную синтаксическую ошибку, значит, у вас установлена неправильная версия python. Установите версию python> = 3.6

Установите необходимые библиотеки Python с помощью pip:

Мы будем использовать следующие библиотеки Python, чтобы наше программное обеспечение работало:

  1. Flask - это фреймворк для нашего сервера
  2. Twilio - эта библиотека позволяет питону связываться с WhatsApp.
  3. Запрос - эта библиотека используется для запроса данных из API.
  4. BeautifulSoup4 - эта библиотека используется для сбора информации с веб-сайтов.
  5. lxml - эта библиотека используется в сочетании с BeautifulSoup для извлечения соответствующей информации с веб-сайта.

Чтобы установить эти библиотеки, вы можете сделать следующее:

Откройте CMD / Terminal и введите следующую команду:

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, которое мы будем использовать в проекте для общения с нашим ботом, а также настройке веб-перехватчика.. Подробнее обо всем этом будет рассказано в следующих шагах.

Шаг 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 = «секрет» # Это не безопасно.. но только для испытания его нормально

rapid_api_key = "" api_key = ""

Сохраните файл

Шаг 4: соедините Python и Twilio через Ngrok

На этом этапе мы сделаем следующее:

  1. Скачать исходный код
  2. Запустите программу и перенаправьте локальный IP-адрес на общедоступный адрес через ngrok, чтобы мы могли сделать к нему запрос.
  3. Настройте нашу учетную запись Twilio для пересылки запроса на наш сервер

Загрузите исходный код бота:

Загрузите весь прикрепленный файл в этой настройке в каталог проекта, созданный на последнем шаге.

Запустить программу:

Перейдите в каталог исходного кода в CMD / терминале и выполните следующую команду:

python server_main.py

Убедитесь в том, чтобы иметь «config.py», который мы создали в предыдущем шаге, иначе вы получите сообщение об ошибке

Результат должен быть примерно таким:

* Обслуживающее приложение Flask "server_main" (ленивая загрузка)

* Среда: производство ПРЕДУПРЕЖДЕНИЕ: Это сервер разработки. Не используйте его в производственном развертывании. Вместо этого используйте производственный сервер WSGI. * Режим отладки: включен * Работает на https://127.0.0.1:5000/ (нажмите CTRL + C, чтобы выйти) * Перезапуск со статистикой * Отладчик активен! * ПИН-код отладчика: 740-257-236

Это означает, что ваш сервер правильно работает в вашей локальной сети на порту 5000. Чтобы сделать этот сервер доступным извне вашей локальной сети, мы будем использовать ngrok

Перенаправить локальный IP-адрес на общедоступный через ngrok

Перейдите в каталог, где вы загруженное ngrok через CMD / терминал и выполнить следующую команду:

ngrok http 5000

Результат должен быть примерно таким:

ngrok от @inconshreveable (Ctrl + C для выхода)

Статус сеанса онлайн Сессия истекает 7 часов 59 минут Версия 2.3.35 Регион США (us) Веб-интерфейс https://127.0.0.1:4040 Пересылка _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Пересылка _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00

Скопировать ссылку HTTP со стороны «Forwading» (только до ngrok.io). (Я добавил _ в этом примере, чтобы избежать instructable, чтобы перехватить его в качестве ссылки)

Настройте Twilio на использование нового адреса для пересылки запроса сервера на:

Теперь, когда мы успешно перенаправили наш сервер для публичного доступа, нам нужно настроить Twilio таким образом, чтобы при выполнении запроса с использованием API Twilio Whatsapp мы перенаправляли запрос на наш сервер. Для этого нам необходимо сделать следующее:

  1. Перейдите в раздел Whatsapp на консоли Twilio.
  2. Перейдите в подраздел «Sanbox»
  3. В текстовое поле «КОГДА ПРИХОДИТ СООБЩЕНИЕ» вставьте HTTP-ссылку из ngrok, скопированную с расширением / sms (НЕ КОПИРУЙТЕ _ в начале и в конце):

_https://d44c955749bf.ngrok.io/sms_

Теперь все для чат-бота настроено. На следующем этапе мы можем проверить, все ли работает правильно

Шаг 5: Протестируйте наше приложение

Протестируйте наше приложение
Протестируйте наше приложение
Протестируйте наше приложение
Протестируйте наше приложение
Протестируйте наше приложение
Протестируйте наше приложение

На этом этапе мы сделаем следующее:

  1. Присоединяйтесь к нашему боту используя код доступа
  2. Попробуйте наше приложение

Присоединяйтесь к нашему боту используя код доступа

В этом проекте мы будем использовать Twilio в WhatsApp Песочница Номер для нашего WhatsApp бота. Для каждого человека это число будет разным. Вы можете найти свой номер так:

  • Войдите в свою учетную запись Twilio
  • Перейдите в консоль Twilio -> Раздел Whatsapp -> Песочница.
  • Вы увидите номер своей тестовой среды Twilio со следующим текстом:

Пригласите друзей в свою песочницу. Попросите их отправить сообщение WhatsApp по адресу:

Из-за политики безопасности Whatsapp каждый, кто хочет поговорить с автоматическим ботом через Whatsapp, должен явно отказаться от участия, используя код. Вы можете найти свой код, глядя в том же разделе, что и ваш Twilio числа песочницы с текстом:

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

  1. Сохранить «Twilio Песочница WhatsApp Номер» для вашего контакта с вашим выбором имени (например CovBot)
  2. Откройте Whatsapp и отправьте этому контакту следующее сообщение:

присоединиться

Вы должны увидеть такое сообщение:

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

Это означает, что вы подключились к своему боту и готовы задать ему вопрос

Попробуйте наше приложение:

Чтобы протестировать различные функции вашего бота после подключения, отправьте ему следующее сообщение:

Привет

Вы должны увидеть следующий текст:

Добро пожаловать в CoVbot!

Простой Chatbot, который может дать последние обновления COVID-19 в простой, быстрый и простой способ. Поскольку все мы находимся в карантине, с помощью бота можно предложить несколько забавных занятий, чтобы максимально использовать время дома, поскольку мы стремимся обезопасить себя, друзей и семью. Мы надеемся, что она вам понравится и окажется полезной! Отправьте 4, чтобы начать!

Теперь вы можете воспользоваться опцией, чтобы опробовать различные функции бота.

ЭТО ОНО! Ваш чат-бот WhatsApp готов !!!! Поздравления

Шаг 6: Как это работает и дальнейшие улучшения:

Как это работает и дальнейшие улучшения
Как это работает и дальнейшие улучшения
Как это работает и дальнейшие улучшения
Как это работает и дальнейшие улучшения
Как это работает и дальнейшие улучшения
Как это работает и дальнейшие улучшения
Как это работает и дальнейшие улучшения
Как это работает и дальнейшие улучшения

Этот раздел предназначен для людей, имеющих некоторый опыт программирования на Python. Если вы этого не сделаете, вы можете пропустить этот раздел

Код Пояснение

Основной цикл:

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

Данные о COVID, фильмы и телешоу:

Данные о COVID 19, фильмах и телешоу извлекаются из API. Я использую библиотеку запрос питона, чтобы получить данные, а затем преобразовать его в формат JSON. Затем я просто разбираю соответствующую информацию. Для фильмов и телешоу я также использовал случайную библиотеку Python, чтобы выбрать случайное телешоу и фильм.

Подробная информация о книге

Алгоритм предложения книг, используемый в проекте, представляет собой просто парсер. Я не смог найти ни одного API, который дает вам случайную книгу с деталями, поэтому я просто очищаю веб-сайт с помощью BeautifulSoup4 и с помощью парсера lxml извлекаю соответствующую информацию из книги.

Детали подменю:

Реализация подменю была немного сложнее, чем остальные, поскольку сообщения Whatsapp похожи на SMS-сообщения, которые являются протоколом без сохранения состояния. Чтобы решить эту проблему, я использовал два метода:

  1. Использование глобальных переменных помнить состояние сообщения - Это реализуется только для Подварианта COVID 19. В этом случае, когда пользователь выбирает параметр «Статус COVID 19 в моей стране», для глобальной переменной с именем incomplete_message устанавливается значение True, чтобы указать, что еще требуется другое сообщение, отправленное на основе предыдущего варианта. Затем в начале выполняется проверка, которая проверяет, помечено ли сообщение как неполное, если так, предполагается, что сообщение является названием страны для данных COVID, и передается информация в правильную функцию, а для сообщения о неполном сообщении глобальной переменной устанавливается значение False.
  2. Использование файлов cookie Twilio и сеансов Flask - файлы cookie и сеансы Flask используются в подменю «Предложить действие в карантине» для реализации сохранения состояния, как и любое веб-приложение в Интернете в наши дни, но вместо запоминания таких вещей, как ваше имя пользователя или учтите, что он помнит преобразование между двумя числами. Если вы хотите больше информации об этой части я рекомендовал чтение этого удивительное руководства по Twilio Куки написанного Twilio Team

Будущие улучшения:

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

Шаг 7: Заключительные примечания

Надеюсь, вам всем понравится этот проект. Это моя первая инструкция, поэтому, если что-то неясно или требует дополнительных объяснений, дайте мне знать в разделе комментариев, и я могу вам помочь. Также, если вы сделали этот проект с другой техникой или списком функций, поделитесь им.

Рекомендуемые: