{
  "id": "flujo_ventas_v2",
  "version": 2,
  "name": "Ventas y altas comerciales",
  "activation": {
    "intents": [
      "prompt_ventas"
    ]
  },
  "settings": {
    "entry_step": "resolver_tipo_consulta"
  },
  "slots": {
    "tipo_consulta": {
      "type": "enum",
      "required": false,
      "description": "Tipo de consulta comercial expresada por el interesado",
      "sources": [
        "message.text"
      ],
      "match_mode": "contains",
      "values": [
        "cine_link",
        "tv_digital",
        "venta_general"
      ],
      "aliases": {
        "cine_link": [
          "link para ver series",
          "enlace para ver series",
          "pagina para ver series",
          "plataforma para ver series",
          "link para ver peliculas",
          "enlace para ver peliculas",
          "cine pconline"
        ],
        "tv_digital": [
          "tv",
          "tv digital",
          "television",
          "televisión",
          "canales",
          "partidos"
        ],
        "venta_general": [
          "contratar internet",
          "quiero internet",
          "nuevo servicio",
          "instalacion",
          "instalación"
        ]
      }
    },
    "es_cliente_tv": {
      "type": "enum",
      "required": false,
      "description": "Indica si quien consulta por TV ya es cliente de PConline",
      "match_mode": "contains",
      "values": [
        "si",
        "no"
      ],
      "aliases": {
        "si": [
          "si",
          "sí",
          "ya soy cliente",
          "soy cliente"
        ],
        "no": [
          "no",
          "todavia no",
          "todavía no",
          "no soy cliente"
        ]
      }
    },
    "cancelacion": {
      "type": "enum",
      "required": false,
      "description": "Cancelación explícita de la solicitud comercial",
      "sources": [
        "message.text"
      ],
      "match_mode": "contains",
      "values": [
        "cancelar"
      ],
      "aliases": {
        "cancelar": [
          "no lo quiero",
          "no me sirve",
          "no gracias",
          "no, gracias",
          "no me interesa"
        ]
      }
    },
    "localidad": {
      "type": "string",
      "required": true,
      "description": "Localidad o barrio donde se solicita el servicio",
      "normalize": [
        "trim",
        "lowercase"
      ]
    },
    "destino_servicio": {
      "type": "enum",
      "required": true,
      "description": "Finalidad declarada del servicio, diferenciando uso particular o familiar de una actividad comercial o empresarial",
      "sources": [
        "message.text"
      ],
      "match_mode": "contains",
      "values": [
        "uso_particular",
        "actividad_comercial"
      ],
      "aliases": {
        "uso_particular": [
          "uso particular",
          "uso personal",
          "uso familiar",
          "para mi familia",
          "para mi hogar"
        ],
        "actividad_comercial": [
          "actividad comercial",
          "uso comercial",
          "negocio",
          "empresa",
          "corporativo",
          "comercio"
        ]
      }
    },
    "uso_servicio": {
      "type": "string",
      "required": true,
      "description": "Uso que el interesado dará al servicio",
      "normalize": [
        "trim"
      ]
    },
    "nombre_apellido": {
      "type": "string",
      "required": true,
      "description": "Nombre y apellido del interesado",
      "normalize": [
        "trim"
      ]
    },
    "dni": {
      "type": "string",
      "required": true,
      "description": "DNI del interesado",
      "sources": [
        "detected.document"
      ],
      "normalize": [
        "digits_only"
      ]
    },
    "direccion": {
      "type": "string",
      "required": true,
      "description": "Dirección donde se solicita la instalación",
      "normalize": [
        "trim"
      ]
    },
    "email": {
      "type": "string",
      "required": true,
      "description": "Correo electrónico del interesado",
      "sources": [
        "detected.email"
      ],
      "normalize": [
        "trim",
        "lowercase"
      ]
    },
    "telefono_alternativo": {
      "type": "string",
      "required": true,
      "description": "Teléfono alternativo de contacto",
      "normalize": [
        "trim"
      ]
    },
    "descripcion_frente": {
      "type": "string",
      "required": true,
      "description": "Descripción visual del frente de la casa o lugar de instalación",
      "normalize": [
        "trim"
      ]
    }
  },
  "backend_facts": {
    "transferencia_realizada": {
      "type": "boolean",
      "description": "El backend confirmó la transferencia al área de ventas"
    },
    "area_transferencia": {
      "type": "string",
      "description": "Área confirmada por el backend"
    }
  },
  "steps": [
    {
      "id": "resolver_tipo_consulta",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.tipo_consulta",
            "op": "eq",
            "value": "cine_link"
          },
          "go_to": "informar_cine"
        },
        {
          "when": {
            "ref": "slot.tipo_consulta",
            "op": "eq",
            "value": "tv_digital"
          },
          "go_to": "preguntar_cliente_tv"
        }
      ],
      "default_next": "pedir_localidad"
    },
    {
      "id": "preguntar_cliente_tv",
      "type": "question",
      "slot": "es_cliente_tv",
      "instruction": "Consultar si ya es cliente de PConline.",
      "next_step": "resolver_cliente_tv"
    },
    {
      "id": "resolver_cliente_tv",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.cancelacion",
            "op": "eq",
            "value": "cancelar"
          },
          "go_to": "cierre_cancelado"
        },
        {
          "when": {
            "ref": "slot.es_cliente_tv",
            "op": "eq",
            "value": "si"
          },
          "go_to": "informar_cine"
        }
      ],
      "default_next": "pedir_localidad"
    },
    {
      "id": "informar_cine",
      "type": "message",
      "instruction": "Indicar que puede ingresar a https://cine.pconline.com.ar/, una plataforma similar a Netflix con series y películas exclusiva para clientes de PConline, que no requiere usuario ni contraseña.",
      "next_step": "fin"
    },
    {
      "id": "pedir_localidad",
      "type": "question",
      "slot": "localidad",
      "instruction": "Consultar en qué localidad o barrio se encuentra.",
      "next_step": "resolver_localidad"
    },
    {
      "id": "resolver_localidad",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.cancelacion",
            "op": "eq",
            "value": "cancelar"
          },
          "go_to": "cierre_cancelado"
        },
        {
          "when": {
            "ref": "slot.localidad",
            "op": "in",
            "value": [
              "berdier",
              "opendoor",
              "olivera",
              "lujan",
              "luján",
              "lexica y torresuri",
              "los laureles",
              "valle verde",
              "callejon maryland",
              "callejón maryland",
              "los gallitos",
              "villa del parque",
              "lanusse",
              "univercidad",
              "universidad",
              "americano",
              "parque lasa",
              "zona vandenfild",
              "los paraisos",
              "los paraísos",
              "luna",
              "frente a arroyo dulce",
              "el quinto",
              "san juan de dios",
              "champagnat",
              "ameghino",
              "elli",
              "12 de abril",
              "santa ana"
            ]
          },
          "go_to": "informar_cobertura"
        }
      ],
      "default_next": "pedir_destino_servicio"
    },
    {
      "id": "informar_cobertura",
      "type": "message",
      "instruction": "Informar únicamente que la localidad indicada se encuentra dentro de la zona declarada de cobertura, sin ofrecer planes, precios ni tiempos.",
      "next_step": "pedir_destino_servicio"
    },
    {
      "id": "pedir_destino_servicio",
      "type": "question",
      "slot": "destino_servicio",
      "instruction": "Consultar si el servicio será para uso particular o familiar, o para una actividad comercial o empresarial. No clasificarlo únicamente por el tipo de construcción mencionado.",
      "next_step": "resolver_destino_servicio"
    },
    {
      "id": "resolver_destino_servicio",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.cancelacion",
            "op": "eq",
            "value": "cancelar"
          },
          "go_to": "cierre_cancelado"
        },
        {
          "when": {
            "ref": "slot.destino_servicio",
            "op": "eq",
            "value": "actividad_comercial"
          },
          "go_to": "transferir_empresa"
        },
        {
          "when": {
            "ref": "slot.destino_servicio",
            "op": "eq",
            "value": "uso_particular"
          },
          "go_to": "pedir_uso"
        }
      ],
      "default_next": "aclarar_destino_servicio"
    },
    {
      "id": "aclarar_destino_servicio",
      "type": "message",
      "instruction": "Aclarar que se necesita conocer la finalidad del servicio y preguntar si será para uso particular o familiar, o para una actividad comercial o empresarial.",
      "next_step": "pedir_destino_servicio"
    },
    {
      "id": "pedir_uso",
      "type": "question",
      "slot": "uso_servicio",
      "instruction": "Consultar de forma amable qué uso le dará al servicio.",
      "next_step": "verificar_cancelacion_uso"
    },
    {
      "id": "verificar_cancelacion_uso",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.cancelacion",
            "op": "eq",
            "value": "cancelar"
          },
          "go_to": "cierre_cancelado"
        }
      ],
      "default_next": "presentar_formulario"
    },
    {
      "id": "presentar_formulario",
      "type": "message",
      "instruction": "Indicar que para continuar debe completar los siguientes datos: nombre y apellido, DNI, dirección, correo electrónico, teléfono alternativo y descripción del frente de la casa.",
      "next_step": "pedir_nombre"
    },
    {
      "id": "pedir_nombre",
      "type": "question",
      "slot": "nombre_apellido",
      "instruction": "Solicitar nombre y apellido. Si ya fue informado dentro del formulario, no volver a pedirlo.",
      "next_step": "verificar_cancelacion_nombre"
    },
    {
      "id": "verificar_cancelacion_nombre",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.cancelacion",
            "op": "eq",
            "value": "cancelar"
          },
          "go_to": "cierre_cancelado"
        }
      ],
      "default_next": "pedir_dni"
    },
    {
      "id": "pedir_dni",
      "type": "question",
      "slot": "dni",
      "instruction": "Solicitar el DNI del interesado. No ejecutar buscarCliente.",
      "next_step": "verificar_cancelacion_dni"
    },
    {
      "id": "verificar_cancelacion_dni",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.cancelacion",
            "op": "eq",
            "value": "cancelar"
          },
          "go_to": "cierre_cancelado"
        }
      ],
      "default_next": "pedir_direccion"
    },
    {
      "id": "pedir_direccion",
      "type": "question",
      "slot": "direccion",
      "instruction": "Solicitar la dirección completa donde se instalaría el servicio.",
      "next_step": "verificar_cancelacion_direccion"
    },
    {
      "id": "verificar_cancelacion_direccion",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.cancelacion",
            "op": "eq",
            "value": "cancelar"
          },
          "go_to": "cierre_cancelado"
        }
      ],
      "default_next": "pedir_email"
    },
    {
      "id": "pedir_email",
      "type": "question",
      "slot": "email",
      "instruction": "Solicitar el correo electrónico del interesado.",
      "next_step": "verificar_cancelacion_email"
    },
    {
      "id": "verificar_cancelacion_email",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.cancelacion",
            "op": "eq",
            "value": "cancelar"
          },
          "go_to": "cierre_cancelado"
        }
      ],
      "default_next": "pedir_telefono"
    },
    {
      "id": "pedir_telefono",
      "type": "question",
      "slot": "telefono_alternativo",
      "instruction": "Solicitar un teléfono alternativo de contacto.",
      "next_step": "verificar_cancelacion_telefono"
    },
    {
      "id": "verificar_cancelacion_telefono",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.cancelacion",
            "op": "eq",
            "value": "cancelar"
          },
          "go_to": "cierre_cancelado"
        }
      ],
      "default_next": "pedir_descripcion_frente"
    },
    {
      "id": "pedir_descripcion_frente",
      "type": "question",
      "slot": "descripcion_frente",
      "instruction": "Solicitar una descripción breve del frente de la casa o lugar de instalación.",
      "next_step": "verificar_cancelacion_descripcion"
    },
    {
      "id": "verificar_cancelacion_descripcion",
      "type": "branch",
      "cases": [
        {
          "when": {
            "ref": "slot.cancelacion",
            "op": "eq",
            "value": "cancelar"
          },
          "go_to": "cierre_cancelado"
        }
      ],
      "default_next": "transferir_ventas"
    },
    {
      "id": "transferir_empresa",
      "type": "action",
      "action": "transferir_operador",
      "input": {
        "area": {
          "$literal": "ventas"
        },
        "motivo": {
          "$literal": "Consulta comercial de negocio o empresa"
        },
        "resumen": {
          "$template": "Localidad o barrio: {{slot.localidad}}. Finalidad declarada: {{slot.destino_servicio}}."
        }
      },
      "on_success": "fin",
      "on_failure": "transferencia_fallida"
    },
    {
      "id": "transferir_ventas",
      "type": "action",
      "action": "transferir_operador",
      "input": {
        "area": {
          "$literal": "ventas"
        },
        "motivo": {
          "$literal": "Nueva solicitud de instalación"
        },
        "resumen": {
          "$template": "Nombre y apellido: {{slot.nombre_apellido}}. DNI: {{slot.dni}}. Dirección: {{slot.direccion}}. Correo electrónico: {{slot.email}}. Teléfono alternativo: {{slot.telefono_alternativo}}. Descripción casa: {{slot.descripcion_frente}}. Localidad o barrio: {{slot.localidad}}. Uso: {{slot.uso_servicio}}. Finalidad declarada: {{slot.destino_servicio}}."
        }
      },
      "on_success": "fin",
      "on_failure": "transferencia_fallida"
    },
    {
      "id": "transferencia_fallida",
      "type": "message",
      "instruction": "Informar que no fue posible realizar la derivación en este momento, sin afirmar que la solicitud quedó transferida.",
      "next_step": "fin"
    },
    {
      "id": "cierre_cancelado",
      "type": "message",
      "instruction": "Despedirse amablemente y quedar a disposición para una consulta o contratación futura.",
      "next_step": "fin"
    },
    {
      "id": "fin",
      "type": "end"
    }
  ]
}
