Постройте боты в WhatsApp с чистым питоном
Это руководство проведет вас через процесс создания бота WhatsApp с использованием облачного API Meta (ранее Facebook) с Pure Python и Clask Special. Мы также интегрируем события WebHook для получения сообщений в режиме реального времени и будем использовать OpenAI для генерации ответов искусственного интеллекта. Для получения дополнительной информации о структуре приложения Flask вы можете обратиться к этой документации.
Предварительные условия
- Учетная запись Meta Developer - если у вас ее нет, вы можете создать здесь учетную запись Meta Developer.
- Приложение для бизнеса - если у вас его нет, вы можете научиться создавать деловое приложение здесь. Если вы не видите опцию создания бизнес -приложения, выберите «Другой» > «Далее» > «Бизнес» .
- Знакомство с Python, чтобы следовать учебному пособию.
Оглавление
- Постройте боты в WhatsApp с чистым питоном
- Предварительные условия
- Оглавление
- Начните
- Шаг 1: Выберите номера телефонов
- Шаг 2: Отправьте сообщения с API
- Шаг 3: Настройка веб -крючков для получения сообщений
- Начните свое приложение
- Запустить Ngrok
- Интегрировать WhatsApp
- Тестирование интеграции
- Шаг 4: Понимание безопасности Webhook
- Проверки
- Проверка запросов на проверку
- Проверка полезных нагрузок
- Шаг 5: Узнайте об API и создайте свое приложение
- Шаг 6: интегрируйте ИИ в приложение
- Шаг 7: Добавьте номер телефона
- DataLumina
- Учебные пособия
Начните
- Обзор и настройка : Начните свое путешествие здесь.
- Найдите свои боты : ваши боты можно найти здесь.
- Документация WhatsApp API : ознакомьтесь с официальной документацией.
- Полезное руководство : Вот руководство на основе Python для отправки сообщений.
- API DOCS для отправки сообщений : Проверьте эту документацию.
Шаг 1: Выберите номера телефонов
- Убедитесь, что WhatsApp добавлен в ваше приложение.
- Вы начинаете с тестового номера, который вы можете использовать для отправки сообщений до 5 номеров.
- Перейдите в настройку API и найдите тестовый номер, с которого вы будете отправлять сообщения.
- Здесь вы также можете добавить номера для отправки сообщений. Введите свой собственный номер WhatsApp .
- Вы получите код на своем телефоне через WhatsApp, чтобы проверить свой номер.
Шаг 2: Отправьте сообщения с API
- Получите 24-часовой токен доступа из секции API Access.
- Он покажет пример того, как отправлять сообщения, используя команду
curl , которую можно отправить из терминала или с таким инструментом, как почтальон. - Давайте преобразуем это в функцию Python с библиотекой запросов.
- Создайте файлы
.env на основе example.env и обновите требуемые переменные. Видео пример здесь. - Вы получите сообщение «Hello World» (ожидайте 60-120 второй задержки для сообщения).
Создание доступа, который работает дольше, тогда 24 часа
- Создайте системного пользователя на уровне учетной записи Meta Business.
- На странице пользователей System настройте активы для вашего системного пользователя, назначив ваше приложение WhatsApp полным элементом управления. Не забудьте нажать кнопку «Сохранить изменения».
- Смотрите шаг 1 здесь
- Смотрите шаг 2 здесь
- Теперь нажмите
Generate new token и выберите приложение, а затем выберите, как долго будет действительный токен доступа. Вы можете выбрать 60 дней или никогда не истекать. - Выберите все разрешения, так как я сталкивался с ошибками, когда я выбрал только WhatsApp.
- Подтвердите и скопируйте токен доступа.
Теперь мы должны найти следующую информацию на панели инструментов приложения :
- App_id : "<youratsapp-business-app_id>" (найдено на приборной панели приложения)
- App_secret : "<Yout-WHATSAPP-business-app_secret>» (найдено на приборной панели приложения)
- Receurient_waid : "" (Это ваш идентификатор WhatsApp, то есть номер телефона. Убедитесь, что он добавлен в учетную запись, как показано в примере тестового сообщения.)
- Версия : "v18.0" (последняя версия мета -графа API)
- Access_token : "" (создано на предыдущем шаге)
Вы можете отправить только сообщение типа шаблона в качестве первого сообщения пользователю. Вот почему вы должны сначала отправить ответ, прежде чем мы продолжим. Мне потребовалось 2 часа, чтобы понять это.
Шаг 3: Настройка веб -крючков для получения сообщений
Обратите внимание, что это самая сложная часть этого урока.
Начните свое приложение
- Сделайте у вас установку или среду Python и установите требования:
pip install -r requirements.txt - Запустите приложение Flask Locally, выполнив run.py
Запустить Ngrok
Шаги ниже взяты из документации NGROK.
Вам нужен статический домен NGROK, потому что Meta подтверждает ваш домен NGROK и сертификат!
Как только ваше приложение успешно работает на Localhost, давайте надежно запустим его в Интернете, используя NGROK!
- Если вы еще не пользователь NGROK, просто подпишитесь на NGROK бесплатно.
- Загрузите агент Ngrok.
- Перейдите на панель мониторинга Ngrok, нажмите на свой AuthToken и скопируйте свой AuthToken.
- Следуйте инструкциям для аутентификации своего агента Ngrok. Вы должны сделать это только один раз.
- В левом меню разверните края облака, а затем нажмите домены.
- На странице доменов нажмите + Создать домен или + новый домен. (Здесь все могут начать с одного свободного домена)
- Начните Ngrok, запустив следующую команду в терминале на вашем локальном рабочем столе:
ngrok http 8000 --domain your-domain.ngrok-free.app
- NGROK отобразит URL, в котором ваше приложение Localhost подвергается воздействию Интернета (скопируйте этот URL для использования с Meta).
Интегрировать WhatsApp
В панели панели приложения Meta перейдите в WhatsApp> Configuration, затем нажмите кнопку «Редактировать».
- Во всплывающем окне EDIT Webhook Callback URL-адреса введите URL-адрес, предоставленный агентом NGROK, чтобы разоблачить ваше приложение в Интернет в поле URL обратного вызова, с/webhook в конце (т. Е. )
- Введите токен проверки. Эта строка настроена вами при создании конечной точки Webhook. Вы можете выбрать любую строку, которая вам нравится. Обязательно обновите это в своей переменной среды
VERIFY_TOKEN . - После того, как вы добавите WebHook в WhatsApp, WhatsApp отправит запрос на валидацию в вашем приложении через NGROK. Подтвердите ваше приложение Localhost получает запрос на проверку и регистрирует
WEBHOOK_VERIFIED в терминале. - Вернемся на страницу конфигурации, нажмите «Управление».
- На всплывающем окне «Поля Webhook» нажмите «Подписаться на поле сообщений» . Совет: вы можете подписаться на несколько полей.
- Если работают приложение Flask и NGROK, вы можете нажать «тест» рядом с сообщениями, чтобы проверить подписку. Вы получаете тестовое сообщение в верхнем случае. Если это так, ваш веб -крючок настроен правильно.
Тестирование интеграции
Используйте номер телефона, связанный с вашим продуктом WhatsApp, или используйте тестовый номер, который вы скопировали ранее.
- Добавьте этот номер в ваши контакты приложения WhatsApp, а затем отправьте сообщение на этот номер.
- Подтвердите, что ваше приложение Localhost получает сообщение и регистрирует как заголовки, так и тело в терминале.
- Проверьте, отвечает ли вам бот в верхнем корпусе.
- Теперь вы успешно интегрировали бота! ?
- Теперь пришло время аккутально построить крутые вещи с этим.
Шаг 4: Понимание безопасности Webhook
Ниже приведена некоторая информация из API Meta Webhooks Docs об проверке и безопасности. Он уже реализован в коде, но вы можете ссылаться на его, чтобы лучше понять, что происходит в Security.py
Проверки
Источник
В любое время, когда вы настраиваете продукт Webhooks на панели панели приложения, мы отправим запрос получить запрос на ваш URL -адрес конечной точки. Запросы на проверку включают в себя следующие параметры строки запроса, добавленные к окончанию URL -адреса конечной точки. Они будут выглядеть примерно так:
GET https://www.your-clever-domain-name.com/webhook?
hub.mode=subscribe&
hub.challenge=1158201444&
hub.verify_token=meatyhamhock
Verify_token, meatyhamhock в случае этого примера, - это струна, которую вы можете выбрать. Неважно, что это, пока вы храните в переменной среды VERIFY_TOKEN .
Проверка запросов на проверку
Источник
Всякий раз, когда ваша конечная точка получает запрос на проверку, он должен:
- Убедитесь, что значение hub.verify_token соответствует строке, которую вы устанавливаете в поле Verify Token, когда вы настраиваете продукт Webhooks на панели панели приложения (вы еще не настроили эту строку Token).
- Ответьте с помощью hub.challenge.
Проверка полезных нагрузок
Источник
WhatsApp подписывает все полезные нагрузки уведомлений о событиях с подписью SHA256 и включают подпись в заголовке X-Hub-Signature-256 запроса, предшествовавшего SHA256 =. Вам не нужно проверять полезную нагрузку, но вы должны.
Чтобы подтвердить полезную нагрузку:
- Создайте подпись SHA256, используя полезную нагрузку и секрет вашего приложения.
- Сравните свою подпись с подписью в заголовке X-Hub-Signature-256 (все после SHA256 =). Если подписи соответствуют, полезная нагрузка подлинна.
Шаг 5: Узнайте об API и создайте свое приложение
Просмотрите документацию разработчика, чтобы узнать, как создать ваше приложение и начать отправлять сообщения. Смотрите документацию.
Шаг 6: интегрируйте ИИ в приложение
Теперь, когда у нас есть соединение с конечным и конечным, мы можем сделать бота немного более умным, чем просто кричать на нас в верхнем регистре. Все, что вам нужно сделать, это придумать свою собственную функцию generate_response() в WhatsApp_utils.py.
Если вы хотите, чтобы пример резака Cookie для интеграции API Openai Assistans с инструментом поиска, затем выполните эти шаги.
- Посмотрите это видео: учебник Appenai Assistants
- Создайте своего собственного помощника с OpenAI и обновите свой
OPENAI_API_KEY и OPENAI_ASSISTANT_ID в переменных среды. - Предоставить вашему помощнику данные и инструкции
- Обновите OpenAI_Service.py для вашего варианта использования.
- Импорт
generate_reponse в whatsApp_utils.py - Обновление
process_whatsapp_message() с новой функцией generate_reponse() .
Шаг 7: Добавьте номер телефона
Когда вы будете готовы использовать свое приложение для использования производства, вам необходимо использовать свой собственный номер телефона для отправки сообщений своим пользователям.
Чтобы начать отправку сообщений на любой номер WhatsApp, добавьте номер телефона. Чтобы управлять информацией о вашей учетной записи и номером телефона, см. Страницу обзора. И документы WhatsApp.
Если вы хотите использовать номер, который уже используется в приложении WhatsApp Customer или Business, вам придется полностью перенести этот номер на бизнес -платформу. Как только число будет перенесено, вы потеряете доступ к приложению WhatsApp Customer или Business. См. Мигрируйте существующий номер WhatsApp в бизнес -аккаунт для информации.
После того, как вы выбрали свой номер телефона, вы должны добавить его в свою учетную запись WhatsApp. Смотрите добавить номер телефона.
При работе с WhatsApp Business API и желанием экспериментировать, не влияя на ваш личный номер, у вас есть несколько вариантов:
- Купить новую сим -карту
- Виртуальные номера телефонов
- Двойные SIM -телефоны
- Используйте другое устройство
- Временные службы
- Выделенные устройства для разработки
Рекомендация : если это предназначено для более длительной или профессиональной цели, рекомендуется использовать виртуальный сервис номера телефона или приобретение новой SIM -карты для выделенного устройства. Для быстрых тестов может быть достаточно временного числа, но всегда быть осторожным с безопасностью и конфиденциальностью. Помните, что после того, как число связано с WhatsApp Business API, его нельзя использовать с обычным WhatsApp на устройстве, если вы не отключите его от бизнес -API и не согласовыте его на устройстве.
DataLumina
Этот документ предоставляется вам DataLumina. Мы помогаем аналитикам данных, инженеров и ученым запустить и масштабировать успешный внештатный бизнес - 100 тысяч долларов США /год, забавные проекты, счастливые клиенты. Если вы хотите узнать больше о том, что мы делаем, вы можете посетить наш веб -сайт и подписаться на нашу рассылку. Не стесняйтесь делиться этим документом со своими друзьями и коллегами.
Учебные пособия
Для видеоуроков, посетите канал YouTube: youtube.com/@daveebbelaar.