Skip to content

Inicialización de Soporte Técnico - support-v1-init

Información del Servicio

Endpoint:  /api/support/v1/init
Método:  POST
Versión:  v1
Categoría: Soporte / Atención al cliente

1. Documentación del Servicio

Descripción general

El servicio support-v1-init permite inicializar una solicitud de soporte de primer nivel para un cliente, validando la información de origen, auditando la petición y retornando información relevante sobre posibles fallas masivas asociadas al número de conexión o cuenta de servicio. Pertenece a la categoría de atención y soporte técnico, y es utilizado principalmente para:

  • Iniciar procesos de soporte técnico automatizado.
  • Consultar si existen fallas masivas que afecten al cliente.
  • Auditar y registrar la solicitud para trazabilidad.
  • Determinar la tipología de atención según el origen y estado del servicio.

Casos de uso principales

  • Un canal digital (web, app, WhatsApp) inicia soporte para un cliente.
  • Se requiere saber si el cliente está afectado por una falla masiva antes de escalar el caso.
  • Auditoría y control de solicitudes de soporte.

Especificación técnica

  • Endpoint: /api/support/v1/init
  • Método HTTP: POST
  • Controlador: SupportController (BotApp/Controllers/SupportController.cs)
  • Método: Init(BaseRequestInit _BaseRequest)
  • Lógica de negocio: SupportBusiness.GetInstance.Init(BaseRequest, request_name)
  • Acceso a datos y utilidades: Utiliza utilidades de auditoría, configuración y modelos de negocio para validar origen, registrar auditoría y consultar tipologías y fallas masivas.

Flujo de procesamiento

  1. Recepción de la solicitud en el controlador con el body BaseRequestInit.
  2. Conversión y validación de datos, incluyendo auditoría y validación de origen.
  3. Consulta de tipologías y verificación de si el endpoint está habilitado.
  4. Consulta de fallas masivas asociadas al cliente.
  5. Auditoría de la solicitud y generación de la respuesta.
  6. Retorno de la respuesta con información de cabecera y cuerpo (incluyendo posibles fallas masivas).

Dependencias principales

  • BaseRequestInit, InitRequest, Audit (request)
  • BaseResponseInit, InitResponse, MassiveFailureModel (response)
  • Utilidades: AuditUtil, ConfigurationUtil
  • Modelos: RequestModel, ResultModel, ConfigurationModel

Seguridad y autenticación

  • Autenticación: [Authorize] en el controlador, requiere autenticación previa.
  • Validaciones: Validación de origen, canal y datos obligatorios.
  • Auditoría: Registro de todas las solicitudes y respuestas.
  • Errores: Manejo de errores y tipologías configurables.

Parámetros de entrada (Request)

Headers

CampoTipoObligatorioDescripción
SystemObjeto (ver tabla abajo)Información del sistema que realiza la petición
PropertyArray de objetosNo*Propiedades adicionales para la petición

System

CampoTipoObligatorioDescripción
NamestringNombre del sistema que consume el servicio
CorrelationIDstringIdentificador único de la petición
ProcessingServerstringServidor que procesa la petición

Property

CampoTipoObligatorioDescripción
NamestringNombre de la propiedad
ValuestringValor de la propiedad

Body

CampoTipoObligatorioDescripción
AuditObjetoInformación de auditoría de la petición
PhonestringNo*Número de conexión del cliente
Service_AccountstringNo*Cuenta de servicio del cliente

*Al menos uno de los campos Phone o Service_Account debe estar presente.

Audit

CampoTipoObligatorioDescripción
CanalstringCanal desde el que se realiza la petición
Id_DevicestringNoIdentificador del dispositivo
SOstringNoSistema operativo del dispositivo
IP_AddressstringNoDirección IP desde donde se realiza la petición
WhatsApp_Phone_NumberstringNoNúmero de WhatsApp desde donde se realiza la petición

Respuesta esperada (Response)

Headers

CampoTipoDescripción
SystemObjeto (ver tabla abajo)Información del sistema que responde
ServiceObjeto (ver tabla abajo)Estado y detalles de la ejecución
PropertyArray de objetosPropiedades adicionales de la respuesta

System

CampoTipoDescripción
NamestringNombre del sistema que responde
CorrelationIDstringIdentificador único de la petición
ProcessingServerstringServidor que procesó la petición

Service

CampoTipoDescripción
StatusstringEstado de la ejecución (OK/Error)
ResponseDatedatetimeFecha y hora de la respuesta
ProcessingServerstringServidor que procesó la petición
StatusDetailarrayDetalles de estado y errores

Property

CampoTipoDescripción
NamestringNombre de la propiedad
ValuestringValor de la propiedad

Body

CampoTipoDescripción
MassiveFailureObjetoInformación de falla masiva asociada (si aplica)

MassiveFailure

CampoTipoDescripción
AffectationstringAfectación de la falla masiva
CUNstringCUN asociado a la falla
DescriptionstringDescripción general de la falla
Description_UserstringDescripción para el usuario
Description_TechnicalstringDescripción técnica de la falla
End_DateDateModelFecha estimada de cierre
IdstringId de la PQR asociada
IncidentstringId del incidente en remedy
Priorityint?Prioridad (1 Crítica, 2 Alta, 3 Media, 4 Baja)
ProductstringProducto afectado
Start_DateDateModelFecha de inicio de la falla
TESint?Tiempo estimado de solución

DateModel

CampoTipoDescripción
DatedatetimeFecha sin formato
Format_1stringFormato dd/MM
Format_2stringFormato dd/MM/yyyy
Format_3stringFormato dd/MM/yyyy HH:mm:ss
Format_4stringFormato dd/MM/yyyy hh:mm:ss tt

Manejo de errores

CódigoDescripciónEjemplo
ERROR_03Error de validación de origenOrigen no válido o no encontrado
ERROR_04Error de datos obligatoriosFalta Phone y Service_Account
ERROREndpoint deshabilitado o error generalServicio temporalmente fuera de línea

2. Análisis de Componentes

Modelos y componentes

  • Modelos base: BaseRequestInit, InitRequest, Audit, BaseResponseInit, InitResponse, MassiveFailureModel, DateModel
  • Utilidades: AuditUtil (auditoría), ConfigurationUtil (validación de origen y tipologías)
  • Patrones: Singleton para lógica de negocio (SupportBusiness.GetInstance)
  • Reutilización: Modelos de cabecera y auditoría son usados en otros servicios de la plataforma.
  • Referencias cruzadas: El endpoint es invocado desde otros procesos de soporte y validación de fallas.

Ejemplos de Request/Response

Solicitud (request)

json
{
  "WSRequestHeader": {
    "System": {
      "Name": "CanalWeb",
      "CorrelationID": "123456789",
      "ProcessingServer": "web01"
    },
    "Property": [
      { "Name": "SessionId", "Value": "abc-123" }
    ]
  },
  "WSRequestBody": {
    "Audit": {
      "Canal": "WEB",
      "Id_Device": "device-001",
      "SO": "Android",
      "IP_Address": "192.168.1.10",
      "WhatsApp_Phone_Number": null
    },
    "Phone": "3001234567",
    "Service_Account": null
  }
}

Respuesta exitosa

json
{
  "WSResponseHeader": {
    "System": {
      "Name": "BotServices",
      "CorrelationID": "123456789",
      "ProcessingServer": "web01"
    },
    "Service": {
      "Status": "OK",
      "ResponseDate": "2024-06-01T12:34:56Z",
      "ProcessingServer": "web01",
      "StatusDetail": []
    },
    "Property": []
  },
  "WSResponseBody": {
    "MassiveFailure": {
      "Affectation": "Internet",
      "CUN": "CUN12345",
      "Description": "Falla masiva en la zona norte",
      "Description_User": "Estamos trabajando para restablecer el servicio.",
      "Description_Technical": "Corte de fibra óptica",
      "End_Date": {
        "Date": "2024-06-01T18:00:00Z",
        "Format_1": "01/06",
        "Format_2": "01/06/2024",
        "Format_3": "01/06/2024 18:00:00",
        "Format_4": "01/06/2024 06:00:00 PM"
      },
      "Id": "PQR98765",
      "Incident": "INC123456",
      "Priority": 1,
      "Product": "INTERNET",
      "Start_Date": {
        "Date": "2024-06-01T10:00:00Z",
        "Format_1": "01/06",
        "Format_2": "01/06/2024",
        "Format_3": "01/06/2024 10:00:00",
        "Format_4": "01/06/2024 10:00:00 AM"
      },
      "TES": 120
    }
  }
}

Respuesta de error

json
{
  "WSResponseHeader": {
    "System": {
      "Name": "BotServices",
      "CorrelationID": "123456789",
      "ProcessingServer": "web01"
    },
    "Service": {
      "Status": "Error",
      "ResponseDate": "2024-06-01T12:35:00Z",
      "ProcessingServer": "web01",
      "StatusDetail": [
        {
          "ErrorCode": "ERROR_04",
          "ErrorMessage": "Faltan datos obligatorios: Phone o Service_Account",
          "ErrorMessageUser": "Por favor ingrese un número de conexión o cuenta de servicio."
        }
      ]
    },
    "Property": []
  },
  "WSResponseBody": {
    "MassiveFailure": null
  }
}

3. Diagramas Técnicos

3.1 Flujo de datos

mermaid
graph TD
  A[Recepción de la solicitud] --> B[SupportController]
  B --> C[SupportBusiness]
  C --> D[Validación de origen y auditoría]
  D --> E[Consulta de tipologías y fallas masivas]
  E --> F[Generación de respuesta]
  F --> G[Retorno al cliente]

3.2 Arquitectura de clases

mermaid
classDiagram
  BaseRequestInit --> BotBaseRequestHeader
  BaseRequestInit --> InitRequest
  InitRequest --> Audit
  BaseResponseInit --> BotBaseResponseHeader
  BaseResponseInit --> InitResponse
  InitResponse --> MassiveFailureModel
  MassiveFailureModel --> DateModel
  BotBaseRequestHeader --> BotBaseRequestSystem
  BotBaseRequestHeader --> BotBaseRequestProperty
  BotBaseResponseHeader --> BotBaseResponseSystem
  BotBaseResponseHeader --> BotBaseResponseService
  BotBaseResponseHeader --> BotBaseResponseProperty

3.3 Secuencia de ejecución

mermaid
sequenceDiagram
  participant Cliente
  participant API as SupportController
  participant Negocio as SupportBusiness
  participant Util as ConfigurationUtil/AuditUtil

  Cliente->>API: POST /api/support/v1/init (BaseRequestInit)
  API->>Negocio: Init(BaseRequest, request_name)
  Negocio->>Util: Validar origen y auditar solicitud
  Negocio->>Util: Consultar tipologías y fallas masivas
  Negocio-->>API: BaseResponseInit (con MassiveFailure)
  API-->>Cliente: Respuesta HTTP 200/400

4. Políticas y Consideraciones

Políticas de seguridad

  • Autenticación: Requiere autenticación previa ([Authorize]).
  • Validación de datos: Se valida la presencia de Phone o Service_Account y el origen de la solicitud.
  • Auditoría: Todas las solicitudes y respuestas son auditadas.
  • Errores: Se retornan códigos y mensajes claros en caso de error.
  • Rate limits: No explícitos en el código, pero recomendados para exponer públicamente.

Recomendaciones y mejores prácticas

  • Validar exhaustivamente los datos de entrada antes de procesar la solicitud.
  • Centralizar la gestión de errores y mensajes para facilitar el mantenimiento.
  • Implementar rate limiting si el endpoint se expone a canales públicos.
  • Actualizar y documentar las tipologías y códigos de error para mantener la trazabilidad.
  • Revisar y auditar periódicamente los logs de auditoría para detectar patrones anómalos.
  • Asegurar la actualización de la información de fallas masivas y su integración con sistemas externos.