Добавить в корзинуПозвонить
Найти в Дзене
Анастасия Софт

Создание бота для WhatsApp с использованием Twilio API и Python: Пошаговый гид с поддержкой входящих сообщений и взаимодействием с API

Ты когда-нибудь мечтал, чтобы твой бот не только отправлял сообщения, но и мог отвечать на входящие сообщения через WhatsApp? А может, ты хочешь, чтобы бот умел запрашивать данные через API, например, получать погоду или новости? Сегодня я покажу, как сделать всё это с использованием Twilio API и Python. 🔥 Мы не просто создадим бота, который будет отвечать на сообщения, но и добавим взаимодействие с внешними API. Будет интересно! 😉 Для начала, как и раньше, нам нужно установить библиотеку Twilio, которая позволяет работать с WhatsApp API. Открой терминал и выполни команду: pip install twilio
pip install flask # Flask нам нужен для создания сервера, который будет слушать входящие сообщения Кроме того, мы будем использовать Flask для того, чтобы принимать входящие сообщения от Twilio и отвечать на них. Ты уже знаешь, как зарегистрировать бота в Twilio Developer Console и получить Account SID и Auth Token. Также нужно создать номер, поддерживающий WhatsApp. Теперь давай создадим Python
Оглавление
Создание бота для WhatsApp с использованием Twilio API и Python: Пошаговый гид с поддержкой входящих сообщений и взаимодействием с API
Создание бота для WhatsApp с использованием Twilio API и Python: Пошаговый гид с поддержкой входящих сообщений и взаимодействием с API

Привет! 👋

Ты когда-нибудь мечтал, чтобы твой бот не только отправлял сообщения, но и мог отвечать на входящие сообщения через WhatsApp? А может, ты хочешь, чтобы бот умел запрашивать данные через API, например, получать погоду или новости? Сегодня я покажу, как сделать всё это с использованием Twilio API и Python. 🔥

Мы не просто создадим бота, который будет отвечать на сообщения, но и добавим взаимодействие с внешними API. Будет интересно! 😉

Шаг 1: Установка необходимых библиотек

Для начала, как и раньше, нам нужно установить библиотеку Twilio, которая позволяет работать с WhatsApp API.

Открой терминал и выполни команду:

pip install twilio
pip install flask # Flask нам нужен для создания сервера, который будет слушать входящие сообщения

Кроме того, мы будем использовать Flask для того, чтобы принимать входящие сообщения от Twilio и отвечать на них.

Шаг 2: Регистрация и настройка Twilio

Ты уже знаешь, как зарегистрировать бота в Twilio Developer Console и получить Account SID и Auth Token. Также нужно создать номер, поддерживающий WhatsApp.

  • Перейди в раздел Messaging в Twilio Console, создай новый номер для WhatsApp (формат: whatsapp:+1415XXXXXXX).
  • Внеси в настройки свой Account SID, Auth Token и номер для отправки сообщений.

Шаг 3: Напишем код для бота

Теперь давай создадим Python-скрипт, который будет не только отправлять сообщения, но и отвечать на входящие запросы. Мы будем использовать Flask для создания веб-сервера, который будет получать данные о входящих сообщениях через Webhook.

Код бота:

from twilio.rest import Client
from flask import Flask, request, redirect
from twilio.twiml.messaging_response import MessagingResponse
import requests

# Вставь сюда свой SID и Auth Token из консоли Twilio
account_sid = 'YOUR_ACCOUNT_SID' # Здесь вставляем свой SID
auth_token = 'YOUR_AUTH_TOKEN' # Здесь вставляем свой Auth Token

# Создаем клиент Twilio с помощью нашего SID и Auth Token
client = Client(account_sid, auth_token)

# Создаем Flask приложение
app = Flask(__name__)

# Функция для отправки сообщения через WhatsApp
def send_message(to, body):
message = client.messages.create(
body=body, # Текст сообщения
from_='whatsapp:+1415XXXXXXX', # Номер, с которого отправляется сообщение (номер Twilio)
to=to # Номер получателя в формате whatsapp:+номер
)
print(f"Сообщение отправлено: {message.sid}") # Выводим SID сообщения для отслеживания

# Функция для отправки погоды через API
def get_weather():
api_key = 'YOUR_OPENWEATHER_API_KEY' # Ключ API для OpenWeather
city = 'Moscow' # Город для получения прогноза
url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric'
response = requests.get(url).json()
if response.get('weather'):
weather = response['weather'][0]['description']
temperature = response['main']['temp']
return f'Погода в {city}: {weather}, температура: {temperature}°C'
return 'Не удалось получить данные о погоде.'

# Обрабатываем входящие сообщения от пользователей
@app.route('/sms', methods=['POST'])
def sms_reply():
"""Ответ на входящее сообщение"""
msg = request.form.get('Body') # Получаем текст входящего сообщения
from_number = request.form.get('From') # Получаем номер отправителя

# Создаем объект ответа
resp = MessagingResponse()

# Проверяем сообщение пользователя
if 'погода' in msg.lower(): # Если в сообщении есть слово "погода"
weather_info = get_weather() # Получаем информацию о погоде
resp.message(weather_info) # Отправляем ответ с прогнозом
else:
resp.message(f'Привет! Ты написал: {msg}. Напиши "погода", чтобы узнать текущую погоду.') # Ответ на обычное сообщение

return str(resp) # Возвращаем ответ Twilio

# Функция для отправки приветственного сообщения
def send_welcome_message(to):
send_message(to, 'Привет, я бот! Напиши "погода", чтобы узнать текущую погоду.')

# Функция для запуска бота
def whatsapp_bot():
print("Бот WhatsApp запущен...")
# Здесь можно добавить логику, чтобы бот периодически отправлял приветственное сообщение
# send_welcome_message('whatsapp:+1234567890') # Укажи свой номер

# Запускаем Flask приложение
if __name__ == "__main__":
whatsapp_bot()
app.run(debug=True, host='0.0.0.0', port=5000) # Flask сервер слушает входящие запросы на порту 5000

Пояснение к коду:

  1. Импорт библиотек:from twilio.rest import Client
    from flask import Flask, request, redirect
    from twilio.twiml.messaging_response import MessagingResponse
    import requests

    twilio.rest — библиотека для работы с Twilio API.
    flask — микрофреймворк для создания веб-сервера.
    twilio.twiml.messaging_response — класс для создания ответов на сообщения в Twilio.
    requests — библиотека для работы с HTTP-запросами (для получения данных о погоде).
  2. Конфигурация клиента Twilio:account_sid = 'YOUR_ACCOUNT_SID'
    auth_token = 'YOUR_AUTH_TOKEN'
    client = Client(account_sid, auth_token)

    Здесь мы используем SID и Auth Token, чтобы аутентифицировать наш бот.
  3. Функция для отправки сообщений:def send_message(to, body):
    message = client.messages.create(
    body=body,
    from_='whatsapp:+1415XXXXXXX',
    to=to
    )
    print(f"Сообщение отправлено: {message.sid}")

    Эта функция отправляет сообщение на номер, который ты укажешь.
  4. Функция для получения погоды:def get_weather():
    api_key = 'YOUR_OPENWEATHER_API_KEY'
    city = 'Moscow'
    url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric'
    response = requests.get(url).json()
    if response.get('weather'):
    weather = response['weather'][0]['description']
    temperature = response['main']['temp']
    return f'Погода в {city}: {weather}, температура: {temperature}°C'
    return 'Не удалось получить данные о погоде.'

    Здесь мы используем API
    OpenWeather для получения прогноза погоды по городу.
  5. Обработка входящих сообщений:@app.route('/sms', methods=['POST'])
    def sms_reply():
    msg = request.form.get('Body')
    from_number = request.form.get('From')
    resp = MessagingResponse()

    if 'погода' in msg.lower():
    weather_info = get_weather()
    resp.message(weather_info)
    else:
    resp.message(f'Привет! Ты написал: {msg}. Напиши "погода", чтобы узнать текущую погоду.')

    return str(resp)

    Это основной обработчик входящих сообщений. Если сообщение содержит слово "погода", бот отвечает с прогнозом, иначе — просто повторяет текст.
  6. Запуск Flask приложения:app.run(debug=True, host='0.0.0.0', port=5000)

    Здесь мы запускаем сервер Flask, который будет слушать входящие запросы от Twilio.

Шаг 4: Настройка Webhook в Twilio

Теперь, когда у нас есть сервер, который слушает входящие сообщения, нужно настроить Webhook в Twilio. Для этого:

  1. В консоли Twilio, в разделе Messaging для твоего WhatsApp номера, найди поле "A MESSAGE COMES IN".
  2. Укажи URL, по которому будет доступен твой сервер Flask. Например, если ты запускаешь сервер локально, тебе нужно использовать ngrok, чтобы создать публичный URL для локального сервера.
  3. В поле "A MESSAGE COMES IN" укажи URL, например: http://your-ngrok-url/sms.

Шаг 5: Запуск бота

Теперь ты готов запустить бота! Просто запусти свой скрипт:

python whatsapp_bot.py

После этого, когда кто-то напишет боту, он будет отвечать, например, предоставлять информацию о текущей погоде, если пользователь попросит об этом.

Заключение

Поздравляю, теперь у тебя есть бот для WhatsApp, который может отвечать на входящие сообщения и взаимодействовать с внешними API! 🎉 Ты можешь настроить его под свои нужды, добавляя новые команды и расширяя функционал.

Не забывай, что возможности Twilio и Python безграничны, и ты можешь создавать даже более сложных и умных ботов. Удачи в программировании! 🚀