Как принять смс на номер, используя python?

Пытаюсь написать бота для приема СМС на выбранный номер. Как я могу, собственно, СМС получить?


Ответы (2 шт):

Автор решения: Vladimir Obrizan

Для приема СМС на реальный номер телефона нужно воспользоваться СМС-шлюзами. Например:

Я работал с двумя этими сервисами, в целом работают хорошо. Есть СДК и примеры на Python.

По аналогии вы можете найти программируемые смс-шлюзы и у других провайдеров.

→ Ссылка
Автор решения: Олег Ибрагимов

Получить смс на выбранный номер проще всего через API-платформу. Если времени много, то можно, конечно, и самому заморочиться с SMPP и подключиться напрямую к SMSC. Но там минусов больше чем плюсов. Во-первых, учиться надо, у этого протокола одной спецификации почти полторы сотни страниц, плюс вложиться придется в разработку, такие вещи на коленке не делаются. Короче, оправданно, только если есть цель мегарассылки по всей планете.

Если же говорим о России, то лично я голосую за посредника, типа Exolve, а если на Запад смотреть, то надо кого-то англоязычного подбирать вроде Twilio. С API-платформой все проще: подключаемся к платформе, получаем ключ, авторизуемся, отправляем запрос, лучше всего в POST, ждем ответ от сервера, ушло-не ушло, и вопрос решен.

Немного по поводу POST. Из моего опыта – это наиболее надежный вариант. Все-таки в смс немало личной информации, а POST-запросы не кэшируются, в логах не сохраняются, в истории не остаются, короче, безопаснее с ними. POST-запрос для отправки смс может выглядеть примерно так:

import requests
# Замените эти значения на свой API-ключ и номер получателя
api_key = 'YOUR_API_KEY'
to_number = 'RECIPIENT_NUMBER'
# Замените это значение на текст сообщения, который вы хотите отправить
message = 'Hello, World!'
# Формируем POST-запрос с помощью API-интерфейса SMS-провайдера
url = 'https://api.sms-provider.com/send-sms'
data = {
        'api_key': api_key,
        'to_number': to_number,
        'message': message
}
response = requests.post(url, data=data)
# Проверяем, что сообщение было отправлено успешно
if response.status_code == 200:
        print('SMS message sent successfully!')
else:
        print('Error sending SMS message.')

Ну и плюс к этому у тех же exolve другие плюшки есть: статус доставки виден, можно шаблоны сделать, чтобы каждый раз не суетиться, время, опять же задать, удобное для рассылки. Так что с API все проще и дешевле, это точно.

→ Ссылка