Python API для сервиса отправки сообщений sms.ru
aiohttp
pip install smsru-api
Чтобы использовать скрипт, просто импортируйте его в свой код
import smsru_apiили импортируйте сам класс SmsRu()
from smsru_api import SmsRuДля асинхронной работы есть класс AsyncSmsRu()
from smsru_api import AsyncSmsRuВсе методы асинхронного класса это корутины.
Классам SmsRu() или AsyncSmsRu() в параметры нужно передать ваш API ключ из личного кабинета
from smsru_api import SmsRu, AsyncSmsRu
sms_ru = SmsRu('Your API KEY')
async_sms_ru = AsyncSmsRu('Your API KEY')Метод send() отправляет ваше сообщение на номер(а) через sms.ru
from smsru_api import SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.send('9XXXXXXXX0', '9XXXXXXXX1', message='Message to sms'){
"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.
from_name Имя отправителя (должно быть согласовано с администрацией).
ip_address В этом параметре вы можете передать нам IP адрес вашего пользователя.
timestamp Время отложенной отправки.
ttl Срок жизни сообщения в минутах (от 1 до 1440).
day_time Учитывает часовой пояс получателя. Если указан этот параметр, то параметр time игнорируется.
test Имитирует отправку сообщения для тестирования. True или False
translit Переводит все русские символы в латинские.
debug Включает режим отладки. Все сообщения отправляются с параметром test: True если он не указан в ручную
Метод call() отправляет запрос на звонок по указанному номеру
from smsru_api import SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.call('9XXXXXXXXX'){
"status": "OK",
"code": "1435",
"call_id": "000000-10000000",
"cost": 0.4,
"balance": 0
}Метод status() узнает статус СМС по его sms_id
from smsru_api import SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.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 SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.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 SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.balance(){
"status": "OK",
"status_code": 100,
"balance": 0
}Метод limit() запрашивает у сервера лимиты по отправке СМС
Метод free() запрашивает у сервера бесплатные лимиты по отправке СМС
from smsru_api import SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.limit()
free_response = sms_ru.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 SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.senders(){
"status": "OK",
"status_code": 100,
"senders": ["company.com", "Company"]
}Метод add_stop_list() добавляет номер в стоп лист
from smsru_api import SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.add_stop_list('9XXXXXXXXX', 'Comment'){
"status": "OK",
"status_code": 100
}Метод del_stop_list() удаляет номер из стоп листа
from smsru_api import SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.del_stop_list('9XXXXXXXXX'){
"status": "OK",
"status_code": 100
}Метод stop_list() получает список номеров в стоп листе
from smsru_api import SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.stop_list(){
"status": "OK",
"status_code": 100,
"stoplist": {
"9XXXXXXXXX": "Comment",
"9XXXXXXXX1": "Comment"
}
}Метод add_callback() добавляет callback (webhook) на аккаунт
from smsru_api import SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.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 SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.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 SmsRu
sms_ru = SmsRu('Your API KEY')
response = sms_ru.callbacks() {
"status": "OK",
"status_code": 100,
"callback": [
"https://campany.com/callback",
"http://anothersite.ru/callback/index.php"
]
}Distributed under the Apache-2.0 License. See LICENSE for more information.
- XpycTee - просто я - XpycTee - smsru_api