Проект активно развивается. Вопросы и предложения по улучшению приветствуются через Issues.
Документация росдомофона https://rdba.rosdomofon.com/swagger-ui.html#/
Назначение: Основной модуль для работы с API РосДомофон
Содержит:
- Класс RosDomofonAPI с методами:
authenticate()- авторизация в системеupdate_signup()- обновление статуса заявки регистрацииget_accounts()- получение всех аккаунтовget_account_by_phone()- поиск аккаунта по номеру телефонаcreate_account()- создание нового аккаунтаcreate_flat()- создание квартирыget_entrance_services()- получение услуг подъездаconnect_service()- подключение услугиget_account_connections()- получение подключений аккаунтаget_service_connections()- получение подключений услугиget_abonent_flats()- получение всех квартир абонента с полными адресамиget_entrances()- получение списка подъездов с услугами компании (с фильтрацией по адресу)block_account()/unblock_account()- блокировка/разблокировка аккаунтаblock_connection()/unblock_connection()- блокировка/разблокировка подключенияsend_message()- отправка push-уведомлений (принимает словари или ID)send_message_to_abonent()- упрощенная отправка сообщения по ID абонентаget_abonent_messages()- получение сообщений абонента- Kafka методы:
set_kafka_message_handler()- установка обработчика входящих Kafka сообщенийstart_kafka_consumer()- запуск потребления сообщений из Kafkastop_kafka_consumer()- остановка потребления сообщенийsend_kafka_message()- отправка сообщения через Kafkasend_kafka_message_to_multiple()- групповая отправка через Kafka
Особенности:
- Подробные docstring с примерами использования для каждого метода
- Автоматическое логирование операций через loguru
- Обработка ошибок HTTP запросов
- Импорт моделей из отдельного файла models.py
- Интегрированный Kafka клиент для real-time сообщений
- Контекстный менеджер для автоматического закрытия соединений
Назначение: Клиент для работы с Kafka сообщениями РосДомофон
Содержит:
- Класс RosDomofonKafkaClient с методами:
set_message_handler()- установка обработчика входящих сообщенийstart_consuming()- запуск потребления в отдельном потокеstop_consuming()- остановка потребленияsend_message()- отправка сообщения одному абонентуsend_message_to_multiple()- отправка группового сообщенияclose()- закрытие всех соединений
from rosdomofon import RosDomofonAPI
api = RosDomofonAPI(
username="user",
password="pass",
)
api.authenticate()
account = api.get_account_by_phone(79308325215)
print(account)
print(account.owner.id) # abonent_id
print(account.id) # account_idmessages = api.get_abonent_messages(abonent_id, channel='support', page=0, size=10)
print(messages)api.send_message_to_abonent(abonent_id, 'support', f'вы написали {messages.content[0].message}')# Получить все квартиры абонента
flats = api.get_abonent_flats(1574870)
print(f"Всего квартир: {len(flats)}")
for flat in flats:
print(f"ID квартиры: {flat.id}")
print(f"Квартира {flat.address.flat}, подъезд {flat.address.entrance.number}")
print(f"Адрес: {flat.address.city}, {flat.address.street.name} {flat.address.house.number}")
print(f"Виртуальная: {flat.virtual}")
print(f"Владелец: {flat.owner.id}")
print("---")# Получить все подъезды компании
entrances = api.get_entrances()
print(f"Всего подъездов: {entrances.total_elements}")
# Поиск подъездов по адресу с пагинацией
entrances = api.get_entrances(address="Москва, Ленина", page=0, size=10)
for entrance in entrances.content:
print(f"Подъезд {entrance.id}: {entrance.address_string}")
for service in entrance.services:
print(f" - Услуга: {service.name} ({service.type})")
print(f" Камеры: {len(service.cameras)}")
print(f" RDA устройства: {len(service.rdas)}")
print(f" Тариф: {service.tariff}")from rosdomofon.rosdomofon import RosDomofonAPI
api = RosDomofonAPI(
username="user", password="pass",
kafka_bootstrap_servers="kafka.example.com:9092",
company_short_name="SK_SB"
)def handle_message(message: KafkaIncomingMessage):
print(f"Сообщение от {message.from_abonent.phone}: {message.message}")
api.set_kafka_message_handler(handle_message)
api.start_kafka_consumer()api.send_kafka_message(1574870, 79308312233, "Ответ через Kafka")для получения short name company нужно получить все аккаунты и найти short name company https://rdba.rosdomofon.com/abonents-service/api/v1/accounts
accounts = api.get_accounts()
for account in accounts:
print(account.company.short_name)для получения company id нужно получить все аккаунты и найти company id