Skip to main content

ChatLabs Django Support

Зависимости

Установка

Установите пакет через pip:

pip install chatlabs-django-support

...или через Poetry:

poetry add chatlabs-django-support

Быстрый старт

  1. Добавьте модель Telegram пользователя в любое ваше приложение:

    # my_users/models.py
    
    class MyTelegramUser(models.Model):
        telegram_id = models.BigIntegerField(
            primary_key=True,
            unique=True,
        )
    
  2. Добавьте daphne, channels, support и приложение с вашей моделью Telegram пользователя в INSTALLED_APPS:

    # settings.py
    
    INSTALLED_APPS = [
        'daphne',
        'channels',
        ...,
        'my_users',
        'support',
    ]
    
  3. Укажите модель Telegram пользователя в настройках:

    # settings.py
    
    SUPPORT_TELEGRAM_USER_MODEL = 'my_users.MyTelegramUser'
    
  4. Также необходимо настроить слои для channels:

    # settings.py
    
    CHANNEL_LAYERS = {
        'default': {
            'BACKEND': 'channels.layers.InMemoryChannelLayer',
        },
    }
    
  5. Настройте ASGI-приложение:

    # asgi.py
    
    import os
    
    from support import get_asgi_application
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'example.settings')
    
    application = get_asgi_application()
    
    # settings.py
    
    ASGI_APPLICATION = 'example.asgi.application'
    
  6. Обновите urls.py:

    from django.urls import path, include
    
    urlpatterns = [
        ...
        path('support/', include('support.urls')),
    ]
    
  7. Создайте и выполните миграции:

    python manage.py makemigrations
    
    python manage.py migrate
    

API


GET "/support/tickets/"

Получить список тикетов

Query params:

  • user_id (number) - ID Пользователя (создателя тикета)
  • resolved (bool) - true - тикет решен, false - тикет не решен
  • manager (number) - ID менеджера, на которого назначены тикеты
  • manager__isnull (bool) - true - менеджер не назначен, false - менеджер назначен

Response:

[
    {
        "id": 2,
        "user": {
            "telegram_id": 123
        },
        "support_manager": null,
        "created_at": "2025-01-31T12:24:25.716425Z",
        "title": "I've founded some bug",
        "resolved": false
    }
]

GET "/support/tickets/ticket_id/"

Получить тикет

Response:

{
    "id": 1,
    "user": {
        "telegram_id": 123
    },
    "support_manager": {
        "id": 1,
        "first_name": "",
        "last_name": ""
    } || null,
    "created_at": "2025-01-22T12:11:40.273325Z",
    "title": "I've founded some bug",
    "resolved": true
}

GET "/support/tickets/ticket_id/messages/"

Получить список сообщений в тикете

Response:

[
    {
        "id": 3,
        "created_at": "2025-01-31T12:18:03.929086Z",
        "sender": "user" || "supp",
        "text": "some text of message",
        "viewed": false,
        "ticket": 1
    }
]

WebSocket API - Отправляемые сообщения


Принять тикет в работу:

{
    "type": "ticket.assign",
    "ticket_id": 16 // ID тикета
}

Отправить сообщение:

{
    "type": "ticket.message.new",
    "ticket_id": 16, // ID тикета
    "text": "The is some text" // текст сообщения
}

WebSocket API - Получаемые сообщения


Создан новый тикет:

{
    "type": "ticket.created",
    "ticket": {
        "id": 21, // ID тикета
        "user": { // Информация о пользователе
            "telegram_id": 4 // telegram_id пользователя
        },
        "support_manager": null, // назначенный менеджер
        "created_at": "2024-12-29T16:10:38.620768Z", // дата создания
        "title": "have a prob" // заголовок тикета
    }
}

Тикет назначен:

{
    "type": "ticket.assigned",
    "id": 16, // ID тикета
    "support_manager": 1, // ID менеджера
}

Новое сообщение:

{
    "type": "ticket.message.new",
    "message": {
        "id": 31, // ID сообщения
        "created_at": "2024-12-29T16:08:04.267002Z", // дата создания
        "sender": "supp", // отправитель, "user" - пользователь, "supp" - менеджер
        "text": "some_text", // текст сообщения
        "viewed": true, // сообщение просмотрено
        "ticket": 16 // ID тикета
    }
}

Metadata

Release files for chatlabs-django-support 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for chatlabs-django-support 1.2.0
File Size Uploaded
chatlabs_django_support-1.2.0.tar.gz 15.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for chatlabs-django-support 1.2.0
File Interpreter ABI Platform
chatlabs_django_support-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 40.0 kB

Release files / chatlabs_django_support-1.2.0.tar.gz

Download URL chatlabs_django_support-1.2.0.tar.gz
Size 15.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f6c2e4bd3372fa1e82d0d27d4b3b5f1b5e960a4e8ffb9395c48de127a7189ed1
BLAKE2b-256 checksum
How to use checksums
d1ffa514f87b1a9420378ef1bf144585e052777698cc0b4a190cb85bfbdc598e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.13.7 Linux/6.11.0-1018-azure

Release files / chatlabs_django_support-1.2.0-py3-none-any.whl

Download URL chatlabs_django_support-1.2.0-py3-none-any.whl
Size 24.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a24a457cb70fa140d2e9ebd779aac9d873e9c0d7350e8190bd7d3519ad1b79c9
BLAKE2b-256 checksum
How to use checksums
6521dab1d56eb7ccc27c1aab0a23c0132661d556c1253b717588cc51cb0781b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.13.7 Linux/6.11.0-1018-azure

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.1

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page