ChatMember


La pertenencia de una Account a una ChatRoom. En los chats directos, chat_target apunta a la contraparte (la otra cuenta o entidad). is_admin marca a los moderadores; is_restricted, a quien no puede escribir; is_joined, a quien sigue dentro de la sala (salir es un soft-leave, no un borrado).

Estado de lectura

last_delivered_message_id y last_read_message_id son los punteros de entrega y de lectura del miembro. message_ranges está reservado y no está implementado.

Notas y gotchas

  • chat_target_type / chat_target_id y message_ranges están en $hidden; la contraparte se expone como target_type.

Estructura de Datos

Atributo Tipo Descripción
id int
created_at datetime\|null
updated_at datetime\|null
account_id int {@link Account} del miembro
room_id int {@link ChatRoom} a la que pertenece el miembro
last_delivered_message_id int\|null Id del último mensaje entregado a este miembro
last_read_message_id int\|null Id del último mensaje leído por este miembro
message_ranges Collection Rangos de mensajes visibles (reservado; sin implementar)
chat_target_type string Tipo de la contraparte del chat directo (oculto; ver target_type)
chat_target_id int Id de la contraparte (oculto)
is_admin bool Si el miembro es administrador/moderador de la sala
is_restricted bool Si el miembro tiene restringido escribir
is_joined bool Si el miembro sigue dentro de la sala
account Account {@link Account} del miembro
allLogs ApiLog>
channel string Canal de websocket de la sala del miembro
chatTarget Model\|Eloquent Contraparte del chat directo (Account, Company, Order…)
logs ApiLog>
members Collection<int, ChatMember> Miembros de la misma sala
messages ChatMessage> Mensajes de la sala del miembro
room ChatRoom {@link ChatRoom} a la que pertenece el miembro
target_type string\|null Nombre legible del tipo de la contraparte
{
    "id": 1,
    "created_at": "2022-07-14 16:38:51",
    "updated_at": "2022-07-21 21:25:30",
    "account_id": 753,
    "room_id": 1,
    "last_delivered_message_id": 981,
    "last_read_message_id": 981,
    "is_admin": false,
    "is_restricted": false,
    "is_joined": true,
    "target_type": null,
    "channel": "private-ch-1"
}

Endpoints

Listar ChatMember

{info} Soporta: Paginación Filters Carga dinámica

Listar membresías de chat

Devuelve las ChatMember de la cuenta autenticada (o la de user_id), cada una con su ChatRoom y su contraparte (chatTarget).

Método URI Cabeceras
GET /companies/{companyId}/chat-members Authorization

Mostrar ChatMember

{info} Soporta: Carga dinámica

Mostrar membresía de chat

Devuelve la ChatMember por su id, con su ChatRoom, su contraparte y los demás miembros de la sala.

Método URI Cabeceras
GET /companies/{companyId}/chat-members/{chatRoomId} Authorization

Acciones de ChatMember

Mostrar mi membresía por mensaje

{info} Soporta: Carga dinámica

Dada la id de un ChatMessage, devuelve la ChatMember de la cuenta autenticada en la sala de ese mensaje.

Método URI Cabeceras
GET /companies/{companyId}/chat-messages/{chatMessageId}/member Authorization

Relaciones