Не так давно мне пришла задача, разработать небольшое приложение с дополнительной функцией СМС информирование. Одно из требований для информирования было, использовать сим карту которая будет так же работать в АТС для входящих и исходящих звонков. Приложение и телефонию в этой статье мы затрагивать не будем, я лишь покажу реализацию «дополнительной функции», отправки смс с помощью Python.
СМС информирование через Python
Как я и писал ранее, для отправки сообщений необходимо использовать сим карту. Приобретаем, и подключаем нужный тариф с бесплатными 500 смс в месяц (для данного проекта этого будет достаточно).
Оборудование долго искать не пришлось. Приобретаем недорогой, проверенный мной в других проектах шлюз Yeastar TG100, где реализована функция отправки сообщений с помощью GET запросов.
Подключаем оборудование. Через WEB интерфейс активируем в настройках шлюза возможность отправки СМС по API. (172.16.10.107 адрес компьютера с которого происходит отправка запросов)
Пробуем отправить сообщение GET запросом:
- 172.16.10.10 - адрес шлюза
- account=api_username – имя пользователя API
- password=II@!abru2 – пароль API
- port=1 – порт
- destination=89370000000 – номер получателя
- content=Hello+world! – текст сообщения
http://172.16.10.10/cgi/WebCGI?1500101=account=api_username&password=II@!abru2&port=1&destination=89370000000&content=Hello+world!
Как видим все работает, сообщение "Hello world!" доставлено.
Реализуем все с помощью HTTP библиотеки requests в Python.
#ramziv.com
from requests import get
from requests.utils import quote
IP = '172.16.10.10'
USERNAME = 'api_username'
PASSWORD = 'II@!abru2'
def send_message(message, phone, port=1):
result = get(f'http://{IP}/cgi/WebCGI?1500101=account={USERNAME}&\
password={PASSWORD}&port={port}&destination={phone}&content={quote(message)}')
return result.text
message = """Здравствуйте Рамис!
Ваша заявка №123 принята в работу.
"""
print(send_message(message, 89370000000))
Запускаем и смотрим результат.
Заключение
Данный метод использовали в основном для рассылки уведомлений в корпоративной сети. Перед крупной рассылкой, рекомендую ознакомиться с требованиями операторов связи.