Как получать и отвечать на SMS с помощью Python, Flask и Twilio

Автор: | 04.08.2026

Если вам интересно, как это работает, посмотрите это короткое видео:

Когда кто-то отправляет SMS на ваш номер Twilio, Twilio делает HTTP-запрос к вашему приложению. Детали этого SMS передаются через параметры запроса. Twilio ожидает HTTP-ответ от вашего веб-приложения в виде TwiML — это набор простых XML-тегов, которые сообщают Twilio, что делать дальше.

Сначала убедитесь, что ваше локальное окружение настроено и у вас есть директория для кода.

Откройте терминал и установите Flask — популярный микро-веб-фреймворк, который мы будем использовать для обработки запроса от Twilio:

Установите библиотеку Twilio для Python, чтобы генерировать ответ в формате TwiML:

Создайте файл `app.py` и импортируйте объекты Flask и request из библиотеки Flask. Также импортируйте библиотеку Twilio и инициализируйте новое приложение Flask:

Нам нужен маршрут для обработки POST-запроса на конечную точку сообщений. Используйте декоратор `@app.route`, чтобы указать приложению вызывать функцию `sms` всякий раз, когда на URL `/sms` нашего приложения отправляется POST-запрос:

Детали входящего SMS передаются в теле запроса в формате form-encoded. Два полезных параметра — это номер телефона, с которого было отправлено сообщение (`From`), и текст сообщения (`Body`):

Далее мы используем библиотеку Twilio для создания TwiML-ответа ``, который указывает Twilio ответить сообщением ``. Это сообщение будет повторять номер телефона и текст оригинального SMS:

И не забудьте указать приложению запуститься:

В терминале запустите сервер, который будет слушать порт 5000:

Нашему приложению нужен общедоступный URL. Чтобы не развертывать его каждый раз при изменении, мы воспользуемся удобным инструментом ngrok, который создаст туннель к нашему локальному компьютеру.

Ngrok генерирует специальный переадресующий URL, который мы будем использовать, чтобы указать Twilio, где находится наше приложение. Скачайте ngrok и запустите его в терминале на порту 5000:

Теперь нужно привязать номер телефона к нашему приложению.

Откройте экран настройки номера телефона в консоли Twilio. Прокрутите вниз до поля «Когда приходит сообщение». Вы должны увидеть что-то вроде этого:

Введите URL для нашего маршрута сообщений, который был сгенерирован ngrok. Он должен выглядеть примерно так: `http://your-ngrok-url.ngrok.io/sms`.

Нажмите «Сохранить», затем отправьте SMS на ваш номер, чтобы получить ответ!

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

Если вы хотите узнать больше о том, как использовать Twilio и Python вместе, ознакомьтесь с:

Свяжитесь со мной, если у вас есть вопросы или вы просто хотите похвастаться тем, что создали:

— Email: sagnew@twilio.com

— Twitter: @Sagnewshreds

— Github: Sagnew

— Twitch (стримы живого кодинга): Sagnewshreds