[A]sync Python API для сервиса отправки сообщений sms.ru
Для установки библиотеки используйте pip:
pip install smsru-apiЧтобы начать использовать библиотеку, импортируйте класс Client:
from smsru_api import ClientСоздайте экземпляр класса, передав ваш API ключ:
smsru = Client('Your API KEY')Теперь вы можете использовать методы класса для отправки сообщений и выполнения других операций с API sms.ru.
from smsru_api import ClientДля асинхронной работы используйте класс AsyncClient():
from smsru_api import AsyncClientВсе методы асинхронного класса являются корутинами и идентичны синхронным.
Классам Client() или AsyncClient() в параметры нужно передать ваш API ключ из личного кабинета:
from smsru_api import Client
from smsru_api import AsyncClient
smsru = Client('Your API KEY')
async_smsru = AsyncClient('Your API KEY')Обратная совместимость с классами до версии 1.0 также поддерживается:
from smsru_api import SmsRu, AsyncSmsRu
smsru = SmsRu('api_key')
async_smsru = AsyncSmsRu('api_key')Метод send() отправляет ваше сообщение на номер(а) через sms.ru
Отправить один текст на один или несколько номеров, указанных через запятую:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.send('9XXXXXXXX0', '9XXXXXXXX1', message='Message to sms')Отправить разный текст на разные номера:
from smsru_api import Client
smsru = Client('Your API KEY')
multi_dict = {
'9XXXXXXXX0': 'Message to sms',
'9XXXXXXXX1': 'Another message to sms'
}
response = smsru.send(multi=multi_dict)Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"sms": {
"79XXXXXXXX0": {
"status": "OK",
"status_code": 100,
"sms_id": "000000-10000000"
},
"79XXXXXXXX1": {
"status": "ERROR",
"status_code": 207,
"status_text": "На этот номер (или один из номеров) нельзя отправлять сообщения, либо указано более 100 номеров в списке получателей"
}
} ,
"balance": 0
}Метод возвращает JSON ответ, полученный от sms.ru.
Также он имеет 10 параметров:
numbers: Номер телефона получателя (либо несколько номеров до 100 штук за один запрос).message: Текст сообщения в кодировке UTF-8.multi: Отправка сообщения на несколько номеров с разными текстами. Если указан этот параметр, то параметрыnumbersиmessageигнорируются.from_name: Имя отправителя (должно быть согласовано с администрацией).ip_address: IP адрес вашего пользователя.timestamp: Время отложенной отправки.ttl: Срок жизни сообщения в минутах (от 1 до 1440).day_time: Учитывает часовой пояс получателя. Если указан этот параметр, то параметрtimeигнорируется.test: Имитирует отправку сообщения для тестирования.TrueилиFalse.translit: Переводит все русские символы в латинские.debug: Включает режим отладки. Все сообщения отправляются с параметромtest: True, если он не указан вручную.partner_id: ID партнера. По умолчанию указан код автора. Прошу, если вы будете использовать мой код, не меняйте его. Это то, что мотивирует меня поддерживать данный API, спасибо ツ.
Метод callcheck_add() добавляет телефон в ожидание на sms.ru:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.callcheck_add('9XXXXXXXX0')Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"check_id": "201737-542",
"call_phone": "78005008275",
"call_phone_pretty": "+7 (800) 500-8275",
"call_phone_html": "<a href=\"callto:78005008275\">+7 (800) 500-8275<\a>"
}Метод возвращает JSON ответ, полученный от sms.ru.
Также он имеет один параметр:
phone: Номер телефона пользователя, который необходимо авторизовать (с которого мы будем ожидать звонок).
Метод callcheck_status() проверяет, был ли совершен звонок от пользователя.
sms.ruнастоятельно рекомендует использовать бесплатную опцию API callback для более быстрого и удобного получения статусов проверок. Она позволяет вам не запрашивать многократно статус проверки - он будет автоматически отправляться на ваш сервер в реальном времени.
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.callcheck_status('201737-542')Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"check_status": "401",
"check_status_text": "Авторизация по звонку: номер подтвержден"
}Метод возвращает JSON ответ, полученный от sms.ru.
Также он имеет 1 параметр:
check_id: Идентификатор авторизации, полученный отsms.ruпри добавлении номера.
Метод status() узнает статус СМС по его sms_id:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.status('1000-100000')Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"sms": {
"1000-100000": {
"status": "OK",
"status_code": 102,
"status_text": "Сообщение отправлено (в пути)",
"cost": "X.XX",
"send_time": 1651453200,
"status_time": 1651453200
}
}Метод cost() запрашивает у сервера стоимость СМС:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.cost('9XXXXXXXX0', '9XXXXXXXX1', message='Message to sms')Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"sms": {
"9XXXXXXXXX": {
"status": "OK",
"status_code": 100,
"cost": 0,
"sms": 1
}
},
"total_cost": 0,
"total_sms": 1
}Метод balance() запрашивает у сервера баланс аккаунта:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.balance()Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"balance": 0
}Метод limit() запрашивает у сервера лимиты по отправке СМС.
Метод free() запрашивает у сервера бесплатные лимиты по отправке СМС:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.limit()
free_response = smsru.free()Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"total_limit": 5000,
"used_today": 50
}
{
"status": "OK",
"status_code": 100,
"total_free": 5,
"used_today": null
}Метод senders() запрашивает у сервера отправителей:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.senders()Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"senders": ["company.com", "Company"]
}Метод add_stop_list() добавляет номер в стоп-лист:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.add_stop_list('9XXXXXXXXX', 'Comment')Ответ от сервера:
{
"status": "OK",
"status_code": 100
}Метод del_stop_list() удаляет номер из стоп-листа:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.del_stop_list('9XXXXXXXXX')Ответ от сервера:
{
"status": "OK",
"status_code": 100
}Метод stop_list() получает список номеров в стоп-листе:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.stop_list()Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"stoplist": {
"9XXXXXXXXX": "Comment",
"9XXXXXXXX1": "Comment"
}
}Метод add_callback() добавляет callback (webhook) на аккаунт:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.add_callback('https://campany.com/callback')Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"callback": [
"https://campany.com/callback",
"http://anothersite.ru/callback/index.php"
]
}Метод del_callback() удаляет callback (webhook) из аккаунта:
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.del_callback('https://campany.com/callback')Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"callback": [
"http://anothersite.ru/callback/index.php"
]
}Метод callbacks() получает список callbacks (webhooks):
from smsru_api import Client
smsru = Client('Your API KEY')
response = smsru.callbacks()Ответ от сервера:
{
"status": "OK",
"status_code": 100,
"callback": [
"https://campany.com/callback",
"http://anothersite.ru/callback/index.php"
]
}Распространяется по лицензии Apache-2.0. См. LICENSE для получения дополнительной информации.