{
  "id": "flujo_soporte_v1",
  "version": 1,
  "nombre": "Soporte tecnico",
  "intent_principal": "prompt_soporte",
  "settings": {
    "entry_step": "pedir_dni"
  },
  "slots": {
    "dni_cuit": {
      "type": "text",
      "required": true,
      "label": "DNI o CUIT",
      "description": "Documento informado por el cliente para validar la cuenta"
    },
    "tipo_problema": {
      "type": "enum",
      "required": true,
      "label": "Tipo de problema",
      "description": "Tipo de inconveniente tecnico",
      "values": ["sin_servicio", "lentitud_cortes", "otro"]
    },
    "alcance_problema": {
      "type": "enum",
      "required": true,
      "label": "Alcance del problema",
      "description": "Si ocurre en un solo dispositivo o en todos",
      "values": ["un_dispositivo", "todos_los_dispositivos", "__NO_DISPONIBLE__"]
    },
    "inicio_falla": {
      "type": "text",
      "required": false,
      "label": "Inicio de la falla",
      "description": "Desde cuando ocurre el problema"
    },
    "horarios_afectados": {
      "type": "text",
      "required": false,
      "label": "Horarios afectados",
      "description": "Si ocurre en un horario especifico"
    },
    "prueba_realizada": {
      "type": "enum",
      "required": false,
      "label": "Prueba realizada",
      "description": "Prueba basica hecha segun el alcance del problema",
      "values": [
        "reinicio_dispositivo",
        "prueba_otra_red",
        "reinicio_modem",
        "__NO_DISPONIBLE__"
      ]
    },
    "resultado_final": {
      "type": "enum",
      "required": false,
      "label": "Resultado final",
      "description": "Estado luego de la prueba basica",
      "values": ["resuelto", "no_resuelto", "__NO_DISPONIBLE__"]
    }
  },
  "backend_facts": {
    "cliente_verificado": {
      "type": "boolean",
      "label": "Cliente verificado"
    },
    "estado_administrativo": {
      "type": "enum",
      "label": "Estado administrativo",
      "values": ["activo", "cortado_falta_pago", "suspendido", "desconocido"]
    }
  },
  "steps": [
    {
      "id": "pedir_dni",
      "type": "question",
      "slot": "dni_cuit",
      "message": "Pedir DNI o CUIT para verificar la cuenta antes de iniciar el soporte tecnico.",
      "next_step": "validar_cliente"
    },
    {
      "id": "validar_cliente",
      "type": "action",
      "action": "buscar_cliente",
      "requires": ["dni_cuit"],
      "on_success": "evaluar_estado_admin",
      "on_failure": "cliente_no_encontrado"
    },
    {
      "id": "cliente_no_encontrado",
      "type": "message",
      "message": "No pude encontrar tu cuenta con ese DNI o CUIT. Pasame otro documento para volver a validarla.",
      "next_step": "pedir_dni"
    },
    {
      "id": "evaluar_estado_admin",
      "type": "branch",
      "branches": [
        {
          "when": {
            "fact": "estado_administrativo",
            "equals": "cortado_falta_pago"
          },
          "go_to": "derivar_cobranza_corte"
        },
        {
          "when": {
            "fact": "estado_administrativo",
            "equals": "suspendido"
          },
          "go_to": "derivar_cobranza_suspendido"
        },
        {
          "when": {
            "fact": "estado_administrativo",
            "equals": "activo"
          },
          "go_to": "pedir_tipo_problema"
        }
      ],
      "default_next": "pedir_tipo_problema"
    },
    {
      "id": "derivar_cobranza_corte",
      "type": "action",
      "action": "transferir_operador",
      "params": {
        "area": "cobranza",
        "motivo": "El servicio figura cortado por falta de pago"
      },
      "on_success": "fin",
      "on_failure": "fin"
    },
    {
      "id": "derivar_cobranza_suspendido",
      "type": "action",
      "action": "transferir_operador",
      "params": {
        "area": "cobranza",
        "motivo": "El servicio figura suspendido administrativamente"
      },
      "on_success": "fin",
      "on_failure": "fin"
    },
    {
      "id": "pedir_tipo_problema",
      "type": "question",
      "slot": "tipo_problema",
      "message": "Preguntar si el problema es sin servicio, lentitud/cortes u otro inconveniente tecnico.",
      "next_step": "pedir_alcance_problema"
    },
    {
      "id": "pedir_alcance_problema",
      "type": "question",
      "slot": "alcance_problema",
      "message": "Preguntar si el problema ocurre en un solo dispositivo o en todos los dispositivos.",
      "next_step": "pedir_inicio_falla"
    },
    {
      "id": "pedir_inicio_falla",
      "type": "question",
      "slot": "inicio_falla",
      "message": "Preguntar desde cuando ocurre la falla.",
      "next_step": "pedir_horarios_afectados"
    },
    {
      "id": "pedir_horarios_afectados",
      "type": "question",
      "slot": "horarios_afectados",
      "message": "Preguntar si el problema ocurre en algun horario especifico.",
      "next_step": "resolver_prueba"
    },
    {
      "id": "resolver_prueba",
      "type": "branch",
      "branches": [
        {
          "when": {
            "slot": "alcance_problema",
            "equals": "un_dispositivo"
          },
          "go_to": "sugerir_prueba_un_dispositivo"
        },
        {
          "when": {
            "slot": "alcance_problema",
            "equals": "todos_los_dispositivos"
          },
          "go_to": "sugerir_prueba_todos_dispositivos"
        }
      ],
      "default_next": "sugerir_prueba_todos_dispositivos"
    },
    {
      "id": "sugerir_prueba_un_dispositivo",
      "type": "question",
      "slot": "prueba_realizada",
      "message": "Indicar probar el dispositivo en red movil u otra red WiFi, o reiniciar solo ese dispositivo.",
      "next_step": "pedir_resultado_final"
    },
    {
      "id": "sugerir_prueba_todos_dispositivos",
      "type": "question",
      "slot": "prueba_realizada",
      "message": "Indicar desenchufar el modem 15 segundos, volver a enchufarlo, esperar 5 minutos y probar nuevamente.",
      "next_step": "pedir_resultado_final"
    },
    {
      "id": "pedir_resultado_final",
      "type": "question",
      "slot": "resultado_final",
      "message": "Preguntar si luego de la prueba el problema se resolvio o sigue igual.",
      "next_step": "resolver_resultado_final"
    },
    {
      "id": "resolver_resultado_final",
      "type": "branch",
      "branches": [
        {
          "when": {
            "slot": "resultado_final",
            "equals": "resuelto"
          },
          "go_to": "cerrar_resuelto"
        },
        {
          "when": {
            "slot": "resultado_final",
            "equals": "no_resuelto"
          },
          "go_to": "derivar_no_resuelto"
        },
        {
          "when": {
            "slot": "resultado_final",
            "equals": "__NO_DISPONIBLE__"
          },
          "go_to": "derivar_prueba_no_disponible"
        }
      ],
      "default_next": "derivar_prueba_no_disponible"
    },
    {
      "id": "cerrar_resuelto",
      "type": "message",
      "message": "Confirmar que el inconveniente fue resuelto con el diagnostico inicial y cerrar la conversacion.",
      "next_step": "fin"
    },
    {
      "id": "derivar_no_resuelto",
      "type": "action",
      "action": "transferir_operador",
      "params": {
        "area": "tecnico",
        "motivo": "Diagnostico inicial realizado sin resolucion"
      },
      "on_success": "fin",
      "on_failure": "fin"
    },
    {
      "id": "derivar_prueba_no_disponible",
      "type": "action",
      "action": "transferir_operador",
      "params": {
        "area": "tecnico",
        "motivo": "No fue posible completar las pruebas basicas de diagnostico"
      },
      "on_success": "fin",
      "on_failure": "fin"
    },
    {
      "id": "fin",
      "type": "end"
    }
  ]
}
