# Mapeo De Workflows Freshchat

Notas tomadas de los exports JSON ubicados en `C:\Users\cvela\Downloads`.

## Archivos Revisados

- `Bienvenida incluyendo MBIA y anti SPAM.json`
- `MBBot.json`
- `MBIABot.json`
- `Encuesta de servicio.json`
- `Despedida MBIA.json`

## Reemplazos Recomendados

### MBBot

Workflow anterior:

- Pregunta principal guardaba `OpcionPrincipal`.
- Opciones: `Emergencia de Cobro`, `Soporte`, `Implementación`, `Ventas`, `Administración`.
- Luego Freshchat hacía branches por texto exacto.

API nueva:

- Usar `POST /freshchat/workflow/start` para devolver menú.
- Guardar la selección del usuario en Freshchat.
- Usar `POST /freshchat/workflow/handle-option` con `selected_option` o `selected_option_id`.

Body sugerido:

```json
{
  "cliente": "{{contact.id}}",
  "selected_option": "{{workflow.OpcionPrincipal}}",
  "canal": "whatsapp",
  "supports_interactive": true
}
```

La API acepta texto o ID normalizado, por ejemplo:

- `Emergencia de Cobro` -> `emergencia_cobro`
- `Soporte` -> `soporte`
- `Implementación` -> `implementacion`
- `Ventas` -> `ventas`
- `Administración` -> `administracion`
- `MBIA` -> `mbia`

### MBIABot

Workflow anterior:

- Validaba si `contact.email` existía.
- Llamaba un endpoint externo de login.
- Llamaba un endpoint externo de bot.
- Los pasos HTTP estaban configurados como `GET` con body.

API nueva:

- Usar `POST /freshchat/mbia/login`.
- Usar `POST /freshchat/mbia/bot`.
- Mapear `$.error` y `$.mensaje`.

Response map recomendado para login:

```text
errorLogin   -> $.error
mensajeLogin -> $.mensaje
validado     -> $.data.validado
```

Response map recomendado para bot:

```text
error      -> $.error
mensaje    -> $.mensaje
intent     -> $.data.intent
confidence -> $.data.confidence
```

Body para login:

```json
{
  "cliente": "{{contact.id}}",
  "nombreCompleto": "{{contact.name}}",
  "nombre": "{{contact.firstname}}",
  "telefono": "{{contact.phone}}",
  "email": "{{contact.email}}"
}
```

Body para bot:

```json
{
  "cliente": "{{contact.id}}",
  "nombreCompleto": "{{contact.name}}",
  "nombre": "{{contact.firstname}}",
  "telefono": "{{contact.phone}}",
  "email": "{{contact.email}}",
  "peticion": "{{contact.last_incoming_message}}"
}
```

### Encuesta De Servicio

Workflow anterior:

- Se dispara al cerrar conversación, excepto categoría `Cierre MBIA`.
- Pregunta Sí/No.
- Guarda variables `rapidez`, `amabilidad`, `resolucion`.
- Escribe en Google Sheets.

API nueva:

- Usar `POST /freshchat/encuesta/start`.
- Usar `POST /freshchat/encuesta/question` con `step`.
- Usar `POST /freshchat/encuesta/save`.

Steps soportados:

```text
rapidez
amabilidad
resolucion
```

Response map recomendado al guardar:

```text
error    -> $.error
mensaje  -> $.mensaje
promedio -> $.data.promedio
```

Body para guardar:

```json
{
  "nombre": "{{contact.name}}",
  "empresa": "{{contact.empresa_lista}}",
  "agente_id": "{{assignee.id}}",
  "agente": "{{assignee.firstname}} {{assignee.lastname}} {{assignee.email}}",
  "rapidez": "{{workflow.rapidez}}",
  "amabilidad": "{{workflow.amabilidad}}",
  "resolucion": "{{workflow.resolucion}}",
  "fecha_hora_conversacion_abierta": "{{conversation.opened_timestamp}}"
}
```

Nota: en el export antiguo, las columnas `Agente id` y `Agente` aparecen en un orden, pero los valores enviados a Google Sheets parecen estar invertidos. En esta API quedan separados como `agente_id` y `agente`.

### Bienvenida Incluyendo MBIA Y Anti Spam

Workflow anterior:

- Detecta conversaciones abiertas.
- Envía a MBBot o MBIABot según condiciones de mensaje inicial.

Uso recomendado con API nueva:

- Mantener el workflow de bienvenida si sirve como enrutador.
- Para menú general, llamar `POST /freshchat/workflow/start`.
- Para MBIA, llamar `POST /freshchat/mbia/login` y luego `POST /freshchat/mbia/bot`.

### Despedida MBIA

Workflow anterior:

- Se dispara al cerrar conversación con categoría `Cierre MBIA`.
- Envía mensaje de despedida.

Este workflow puede mantenerse en Freshchat. La API no necesita reemplazarlo salvo que luego se quiera centralizar el texto de cierre.

## Headers Freshchat API Library

```http
Content-Type: application/json
Authorization: Bearer <FRESHCHAT_API_TOKEN>
```

## Regla Importante

Configurar todos los HTTP Request nuevos como `POST`. Los exports antiguos tienen requests tipo `GET` con body para MBIA; eso debe corregirse al migrar.

