Рубрики
Без рубрики

Ответ на текстовые SMS-сообщения с помощью Python и Bottle

Краткое пошаговое руководство по тому, как отвечать на текстовые SMS-сообщения в веб-приложении Bottle, созданном на Python.

Автор оригинала: Matt Makai.

Приложения Python могут легко отправить смс с помощью веб-API. Веб-приложения, созданные на платформе Bottle, также могут отвечать для входящих текстовых сообщений путем обработки входящих веб-перехватчиков HTTP POST. В в этом посте мы быстро рассмотрим, как настроить веб-приложение Bottle для обрабатывать данные SMS в виде запросов HTTP POST.

Инструменты, которые нам понадобятся

Это руководство работает с Python 2 или 3, хотя Python 3 рекомендуется сообществом для новых приложений. Установите одну из этих двух версий Python в вашей системе, чтобы использовать для этого прохождение. Также нам понадобятся:

Ознакомьтесь с руководством на как настроить Python 3, Bottle и Gunicorn на Ubuntu 16.04 LTS если вам нужна помощь в получении среда разработки настроен.

Установка зависимости приложения

Наше приложение будет использовать библиотеку вспомогательного кода для ответа на входящие SMS. Bottle и вспомогательная библиотека устанавливаются из PyPI в файл virtualenv. Откройте свой терминал и используйте команду virtualenv для создания нового virtualenv:

virtualenv replysms

Вызовите скрипт activate virtualenv, который сделает его “активным” Установка Python. Обратите внимание, что вам нужно делать это в каждом окне терминала. что вы хотите, чтобы этот virtualenv использовался.

source replysms/bin/activate

Командная строка изменится после активации virtualenv:

Используйте команду pip для установки бутылки и Пакеты Twilio Python в ваш virtualenv.

pip install bottle twilio==5.7.0

Мы установили необходимые зависимости, поэтому теперь запускается код Python. с активированным virtualenv сможет использовать эти пакеты. Пора для создания нашего веб-приложения Bottle и ответа на входящие текстовые сообщения.

Кодирование нашего приложения для бутылок

У веб-приложения Bottle будет два маршрута. Один маршрут позволит нам протестировать что приложение запущено. Другой маршрут будет обрабатывать и отвечать на входящие HTTP-запросы POST от Twilio. Создайте новый файл с именем app.py в своем в каталоге, в котором вы хотите сохранить этот проект Python.

Напишите следующий код в новом файле app.py . Есть также GitHub Gist с кодом, который можно скопировать и вставить.

from bottle import (post, request, response, route, run, )
from twilio import twiml


@route('/')
def check_app():
    # returns a simple string stating the app is working
    return "It works!"


@post('/twilio')
def inbound_sms():
    twiml_response = twiml.Response()
    # grab message from the request. could also get the "To" and 
    # "From" phone numbers as well from parameters with those names
    inbound_message = request.forms.get("Body")
    # we can now use the incoming message text in our Python application
    if inbound_message == "Hello":
        twiml_response.message("Hello from Bottle right back at you!")
    else:
        twiml_response.message("Hi! Not quite sure what you meant, but okay.")
    # we return back the mimetype because Twilio needs an XML response
    response.content_type = "application/xml"
    return str(twiml_response)


if __name__ == '__main__':
    run(host='127.0.0.1', port=5000, debug=True, reloader=True)

Строки, начинающиеся с # , представляют собой комментарии, поясняющие, что строки кода под ними делают. Веб-приложения бутылки определяют маршруты URL с помощью декораторы @route и @post , в зависимости от типа HTTP-запроса маршрут должен обрабатывать.

Убедитесь, что ваш virtualenv все еще активен, чтобы приложение могло использовать библиотеки кода Bottle и Twilio, которые мы установили ранее. Дай попробуйте приложение, запустив его с помощью python app.py .

Откройте веб-браузер и перейдите по адресу localhost: 5000 (или 127.0.0.1:5000). Мы должны см. “Это работает!” на экране.

Приложение бутылки, работающее локально в Ubuntu.

Однако есть проблема с нашим веб-приложением, работающим в нашей локальной разработке. окружающая обстановка. Twilio не может отправить запрос HTTP POST в веб-приложение сервер, если не создан туннель localhost.

Ngrok Localhost Tunneling

Ngrok – это инструмент туннелирования локальных хостов, который соединяет вашу локальную среду разработки на внешний URL. Загрузите и установите версию Ngrok, подходит для вашей операционной системы.

Мы можем запустить Ngrok локально и открыть наше приложение Bottle, работающее на порт 5000. Запустите эту команду в каталоге, где находится исполняемый файл Ngrok. располагается.

./ngrok http 5000
Ngrok запущен и работает в качестве туннеля localhost.

Отлично, теперь мы можем использовать URL-адрес пересылки, чтобы Twilio мог отправлять запросы POST в наше приложение при входящем SMS. Замените URL-адрес в текстовое поле с вашим собственным URL-адресом пересылки, как я сделал на этом снимке экрана.

Вставьте URL-адрес пересылки ngrok в текстовое поле конфигурации веб-перехватчика Twilio.

Теперь нам просто нужен номер телефона Twilio, который будет отправлять POST-запрос на наш приложение при входящем SMS.

Получите номер телефона

Маршрут нашего веб-приложения Bottle может отвечать на входящие запросы POST, но мы необходимо использовать Twilio, чтобы иметь номер телефона, который преобразует входящие SMS данные в запрос POST. В вашем веб-браузере перейдите на на веб-сайте Twilio и зарегистрируйтесь для получения бесплатной учетной записи . Вы также можете войти в свою существующую учетную запись Twilio, если она у вас уже есть.

Экран регистрации Twilio.

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

При регистрации вы получаете бесплатный номер телефона Twilio. Мы можем настроить этот номер телефона для пересылки информации по SMS в наш Интернет приложение, настроив ответный веб-перехватчик.

Перейти к экран управления номерами телефонов и нажмите на номер телефона, который хотите настроить для ответа текстовые сообщения.

Прокрутите вниз и найдите заголовок «Сообщения». Изменить Текстовое поле «Приходит сообщение» для ввода URL-адреса пересылки ngrok плюс маршрут “/twilio”, как показано на скриншоте ниже.

Вставьте URL-адрес пересылки ngrok в текстовое поле конфигурации веб-перехватчика Twilio.

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

Наше приложение готово к работе – пора попробовать наш номер телефона! Отправьте «Привет» или любой другой текст на свой номер телефона. Вот что результат выглядит как на моем iPhone.

Пример снимка экрана, на котором показаны ответы на SMS на iPhone.

Краткое веб-приложение Bottle – хорошее начало для создания более сложных такие программы как Выберите свое собственное приключение Презентации или же SMS-боты Slack .

Что дальше?

Отлично, наше приложение Bottle теперь отвечает на входящие SMS Сообщения!

Вопросов? Свяжитесь со мной через Twitter @fullstackpython или @mattmakai . Я также на GitHub с имя пользователя mattmakai .

Что-то не так в этом посте? Вилка исходный код этой страницы на GitHub и отправьте запрос на перенос.