Skip to content

Python API для сервиса отправки сообщений sms.ru

License

Notifications You must be signed in to change notification settings

XpycTee/smsru_api

Repository files navigation


SMS.RU API

Python API для сервиса отправки сообщений sms.ru

PyPI - Downloads pypi pyversions Downloads Contributors Issues License

Table Of Contents

Built With

aiohttp

Getting Started

Installation

pip install smsru-api

Usage

Чтобы использовать скрипт, просто импортируйте его в свой код

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"
    }
}

Добавить callback (webhook)

Метод 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"
    ]
 }

Удалить callback (webhook)

Метод 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 (webhooks)

Метод 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"
    ]
}

License

Distributed under the Apache-2.0 License. See LICENSE for more information.

Authors

  • XpycTee - просто я - XpycTee - smsru_api

Acknowledgements