Отправка глобальных сообщений

Глобальные сообщения

Структура модели и назначение полей

GlobalMessagesMessage (конкретные сообщения для пользователей)

Модель GlobalMessagesMessage — представляет конкретные сообщения, отправленные пользователям. Каждое сообщение принадлежит определенной кампании и имеет статус, отражающий его состояние.

  • id (integer) — ID сообщения

  • user_id (integer) — ID пользователя, которому адресовано сообщение

  • clinic_id (integer) — ID клиники, к которой относится сообщение (может быть NULL для общесистемных сообщений)

  • message (string) — Текст сообщения

  • campaign (string) — Название кампании, к которой относится сообщение

  • status (enum) — Статус сообщения ('pending', 'sent', 'read')

  • created_at (timestamp) — Дата создания сообщения

  • updated_at (timestamp) — Дата последнего обновления сообщения

Методы API

1. Получение анонимного списка пользователей с ролями

Описание: Возвращает список пользователей в формате user_id и role, без раскрытия персональных данных.


Эндпоинт: GET /rest/api/user/anonymousList

curl --location --request GET 'https://{DOMAIN NAME}/rest/api/user/anonymousList' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'


Ответ сервера:

{
 "success": true,
 "data": {
     "users": [
          {
               "user_id": 1,
               "role": "Администратор"
          },
          {
               "user_id": 2,
               "role": "Менеджер"
          },
          {
               "user_id": 3,
               "role": "Врач"
          }
      ]
    }
 }


2. Добавление сообщений для отдельных пользователей

Описание: Позволяет добавить сообщение для конкретных пользователей, указанных по их идентификаторам.

Эндпоинт: POST /rest/api/messages/users
curl --location --request POST 'https://{DOMAIN NAME}/rest/api/messages/users' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}' \
--data-raw '{
 "message": "Текст сообщения",
 "campaign": "Кампания 2023",
    "user_ids": [1, 2, 3]
}'


Ответ сервера:

{
  "success": true,
  "message": "Messages successfully sent to 3 users"
}


Пример ошибки:

{
    "success": false,
    "errors": ["User list cannot be empty"]
}

Замечания:

  • Поле user_ids обязательно. Содержит массив идентификаторов пользователей.

  • Если массив пустой, возвращается ошибка.


3. Добавление сообщений для всех пользователей

Описание: Позволяет добавить сообщение, которое увидят все пользователи в системе.

Эндпоинт: `POST /rest/api/messages/all`
curl --location --request POST 'https://{DOMAIN NAME}/rest/api/messages/all'
--header 'Content-Type: application/json'
--header 'X-REST-API-KEY: {REST API KEY}'
--data-raw '{ "message": "Текст сообщения", "campaign": "Кампания 2023" }'

Ответ сервера:

```json
{
    "success": true,
    "message": "Messages successfully sent to 15 users"
}

Пример ошибки:

{
    "success": false,
    "errors": ["No active users found to send messages"]
}

Замечания:

  • Сообщение автоматически сохраняется в таблице messages с clinic_id = NULL для универсальности.

4. Добавление сообщений для определенных ролей

Описание: Позволяет добавить сообщение для пользователей, относящихся к указанным ролям.

Эндпоинт: POST /rest/api/messages/roles
curl --location --request POST 'https://{DOMAIN NAME}/rest/api/messages/roles' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}' \
--data-raw '{
    "message": "Текст сообщения",
    "campaign": "Кампания 2023",
    "role_ids": [2, 3]
}'


Ответ сервера:

{
    "success": true,
    "message": "Messages successfully sent to 5 users with the specified roles"
}


Пример ошибки:

{
    "success": false,
    "errors": ["Role list cannot be empty"]
}


Пример ошибки при отсутствии пользователей с указанными ролями:

{
    "success": false,
    "errors": ["No users found with the specified roles"]
}

Замечания:

  • Поле role_ids обязательно. Содержит массив идентификаторов ролей.

  • Если массив пустой, возвращается ошибка.

  • Если такой роли в клинике не существует, то ответ успешен, но сообщения не создаются.

5. Получение отчета по одной кампании

Описание: Возвращает информацию о количестве сообщений, связанных с указанной кампанией, с разбивкой по статусам: pending (ожидающие отправки) и sent (отправленные).

Эндпоинт: GET /rest/api/messages/reports

Параметры запроса:

  • campaign (обязательный): Название кампании, для которой нужно сформировать отчет.


curl --location --request GET 'https://{DOMAIN NAME}/rest/api/messages/reports?campaign=Кампания 2023' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'

Ответ сервера:

{
    "success": true,
    "data": {
        "campaign": "Кампания 2023",
        "total": 150,
        "sent": 140,
        "pending": 10
    }
}


Пример ошибки:

{
    "success": false,
    "errors": ["Campaign name cannot be empty"]
}

Ограничения:

  • Одна кампания за запрос: Параметр campaign обязателен.

  • Если кампания не найдена, возвращается ошибка.

  • Фильтрация по датам, ролям или клиникам в этом отчете не поддерживается.

Powered by