Personalizar archivos JSON para los bot
¿Que es un archivo JSON?
JSON es un formato de texto que forma parte del sistema de JavaScript y que se deriva de su sintaxis, pero no tiene como objetivo la creación de programas, sino el acceso, almacenamiento e intercambio de datos. Usualmente es conocido como una alternativa al lenguaje XML.
La sintaxis de JSON funciona de modo similar a JavaScript. Por ejemplo:
- El arreglo de información se hace mediante claves (keys).
- La información se separa por comas.
- Las llaves agrupan objetos.
- Los corchetes agrupan arreglos de datos.
Sin embargo, JSON se distingue de JavaScript porque sus claves tienen que ser strings (o secuencias de caracteres), mientras que sus valores deben ser strings, números, objetos, arreglos, boleados o null.
{
"clave" : "Valor",
"clave" : "Valor",
"clave" : "Valor",
}
¿Para qué sirve un archivo JSON?
Un archivo JSON es un documento digital creado en este lenguaje que almacena información organizada, con el fin de hacer más simple su búsqueda y acceso. La ventaja de este formato es que permite obtener código legible para las personas con nombres y valores que funcionan como indicadores de la información que contienen.
Estructura JSON para los bots
El archivo para importar un bot tiene la siguiente estructura:
[
{
"id": 1,
"id_parent": 0,
"label": "Nombre rama",
"header": "",
"footer": ",
}
]
- "id": Es un identificador numérico para asociarlo con otras ramas.
- "id_parent": Es el identificador con el que se le asocia una rama padre, es decir que esta rama pertenece a otra, si se envía en 0 significa que es una rama principal.
- "label": Es el nombre de la rama.
- "footer": Es el mensaje final que se envía apenas se terminen las acciones.
- "header": Es un JSON parseado como string con las acciones a realizar en esta rama, ejemplo:
[
{
"tipo": "",
"contenido": "",
"name": "",
"action": "",
"id_etiqueta": "",
"url": "",
"secret": "",
"input": "",
"inputResponse": "",
"fallbackResponse": "",
"inputRequired": "",
"id_usuario": "",
"nombre": "",
"id_flowintent": "",
"varname": "",
"varvalue": "",
"gptKey": "",
"temas": "",
"profession": "",
"tone": "",
"style": "",
"emojis": "",
}
]
- "tipo": Tipo de acción a realizar pueden ser ´imagen´, ´archivo´,´texto´,´callback´
- "contenido": Es el mensaje a enviar al chat, si es tipo archivo o imagen se debe enviar aca la url del archivo
- "name": Nombre para identificar la acción
- "action": Si es una Acción Automatizada se envía este campo con el tipo de acción que pueden ser las siguientes:
- ´addTag´: Agregar etiqueta a la conversación.
- ´input´: Captura de datos de usuario.
- ´userDelegate´ : Transferir conversación a un usuario.
- ´teamDelegate´ : Transferir conversación a un equipo.
- ´intentRedirect´ : Redirigir a una opción del bot.
- ´webhook´: Enviar notificación HTTP (Webhook).
- ´callback´: Callback HTTP (Webhook + Response) .
- ´addVar´: Establecer variable.
- ´exit´: Terminar ejecución del menú.
- ´dialogflow´: Responder con Dialogflow.
- ´chatgpt´: Responder con ChatGPT.
- ´endChat´ Finalizar chat.
- "id_etiqueta": Si la acción es ´addTag´ enviar el id de la etiqueta a agregar.
- "url": La url donde se enviará el callback o webhook.
- "secret": Token para conectarse al callback o webhook.
- "input": Tipo de input a mostrar puede ser alguno de estos:
- ´nombre´: Nombres y Apellidos.
- ´email´: Correo Electrónico.
- ´celular´: Número Telefónico / Celular.
- ´ciudad´: Ciudad o Dirección.
- ´fechacumple´: Fecha de Cumpleaños.
- ´texto´: Capturar Texto.
- ´numero´: Capturar Número.
- ´fecha´: Capturar Fecha/Hora.
- "inputResponse": Pregunta de captura de datos.
- "fallbackResponse": Respuesta en caso de error.
- "inputRequired": En este caso se pedirá al usuario que ingrese la información solicitada sin importar si la ha ingresado previamente o si esta guardada en el sistema.
- "id_usuario": Id del usuario al que se quiera delegar la conversación.
- "nombre": Nombre del usuario al que se le va a delegar la conversación.
- "id_flowintent": Id de la rama del bot a la que quieres enviar.
- "varname": Nombre de la variable al establecer una variable.
- "varvalue": Valor de la variable a establecer.
- "gptKey": Llave de chatGPT para enlazar al bot.
- "temas": Base de conocimiento de chatGPT en un array de objetos, ejemplo:
[
{
"titulo": "",
"detalles": "",
}
]
- "profession": Opción de ChatGPT puede ser alguna de las siguientes:
- ´asesor´: Asesor de Servicio al Cliente.
- ´vendedor´: Vendedor Estrella.
- ´gerente´: Gerente de Empresa.
- ´financiero´: Especialista en Finanzas.
- ´secretaria´: Secretaria / Asistente.
- ´creativo´: Creativo / Innovador.
- "tone": Opción de ChatGPT puede ser alguna de las siguientes:
- ´Formal´: Formal.
- ´Authoritative´: Autoritario
- ´Clinical´: Clínico.
- ´Cold´: Frío.
- ´Confident´: Confidente.
- ´Cynical´: Cínico.
- ´Emotional´: Emocional.
- ´Empathetic´: Empático.
- ´Friendly´: Amigable.
- ´Humorous´: Jocoso.
- ´Informal´: Informal.
- ´Ironic´: Irónico.
- ´Optimistic´: Optimista.
- ´Pessimistic´: Pesimista.
- ´Playful´: Juguetón.
- ´Sarcastic´: Sarcástico.
- ´Serious´: Serio.
- ´Sympathetic´: Compasivo.
- ´Tentative´: Tentativo.
- ´Warm´: Cálido.
- "style": Opción de ChatGPT puede ser alguna de las siguientes:
- ´Formal´: Formal.
- ´Academic´: Académico.
- ´Analytical´: Analítico.
- ´Argumentative´: Argumentativo.
- ´Conversational´: Conversacional.
- ´Creative´: Creativo.
- ´Critical´: Crítico.
- ´Descriptive´: Descriptivo.
- ´Epigrammatic´: Epigramático.
- ´Epistolary´: Epistolar.
- ´Expository´: Expositivo.
- ´Informative´: Informativo.
- ´Instructive´: Instructivo.
- ´Journalistic´: Periodístico.
- ´Metaphorical´: Metafórico.
- ´Narrative´: Narrativo.
- ´Persuasive´: Persuasivo.
- ´Poetic´: Poético.
- ´Satirical´: Satírico.
- ´Technical´: Técnico.
- "emojis": Incluir emojis en las respuestas.