🤖 Guía Completa de ZampiBot

📝 Manual de Usuario


🚀 Instalación y Requisitos


Para integrar el chat, acceda a https://chatbot.zampisoft.com/account/?tab=installation, copie el código de inserción y péguelo dentro de las etiquetas <head></head> o <footer></footer> de cada página donde desee mostrar el chat.

Ejemplo de implementación:

<script id="chat-init" src="https://chatbot.zampisoft.com/account/js/init.js?id=842421972"></script>

image.png


#users-info

 

Configuración óptima

ZampiBot es una herramienta potente, pero su gran cantidad de funciones puede dificultar su configuración rápida. Para agilizar el proceso, proporcionamos una lista de las funciones más utilizadas que recomendamos configurar. Al incorporar todas estas funciones, tendrá acceso a las más esenciales y beneficiosas.

  1. Activar notificaciones por correo electrónico desde Configuración > Notificaciones Asegúrese de activar las siguientes opciones: Notificaciones por correo electrónico del agente, Administrador de sonidos > Conversaciones y mensajes entrantes, y Notificaciones push. Para obtener más información sobre cómo funcionan las notificaciones.

    image.png

  2. Configurar el servidor SMTP en Configuración > Notificaciones > SMTP Para más detalles, consulta la sección de  notificaciones por correo electrónico . Si usas la versión en la nube , el SMTP ya está activado, pero puedes usar el tuyo de todas formas.

    image.png

  3. Navega a Configuración > Mensajes y formularios y configura el mensaje de seguimiento y el mensaje fuera de línea.

    image.png

  4. Pusher ya está activado.
  5. Optimizar el rendimiento del sistema .
  6. En caso de que estés utilizando el chatbot, asegúrate de consultar la configuración óptima aquí .
  7. Si tiene dificultades para sincronizar servicios como Google o WhatsApp, nuestro equipo puede ayudarle a configurarlos. Al usar sus cuentas personales, como las de Google o Facebook, podrá disfrutar de créditos y cuotas gratuitas, y costos significativamente más bajos que con otros servicios de chat. Además, tendrá control total y transparencia sobre sus datos y gastos.

¿Tienes problemas?

Si tiene algún problema, contacte con nuestro equipo de soporte a través del chat a la derecha de esta página. Antes de contactarnos, asegúrese de que su servidor cumpla con todos los requisitos mencionados anteriormente.

403 Forbidden Error

El error 403 Prohibido es estrictamente un problema del servidor relacionado con los permisos de archivo o una regla de firewall que bloquea el acceso al recurso. No podemos ayudarle porque no está relacionado con nuestro producto. Envíe este mensaje y la URL del recurso bloqueado al soporte técnico de su servidor para que resuelvan el problema. A continuación, encontrará las causas más comunes del error 403 Prohibido.


Bloquear el zoom en dispositivos iOS

Al usar el chat en iPhones, el área de texto se amplía automáticamente cuando el usuario comienza a escribir un mensaje nuevo. Para detener el zoom, introduzca el código a continuación.<head>área de todas las páginas que incluyen el chat.

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no" />

El widget de chat no se muestra

Es posible que el chat no se muestre debido a los siguientes motivos:


Las conversaciones no son visibles para los administradores o agentes.

Es posible que las conversaciones no se muestren debido a los siguientes motivos.

  1. Al agente se le ha asignado un departamento , pero las conversaciones no se han asignado a ese departamento específico.
  2. Se han activado una o más de las siguientes configuraciones:
    • Misceláneas > Enrutamiento
    • Misceláneas > Cola
    • Misceláneas > Ocultar conversaciones de otros agentes
  3. Estás utilizando el chatbot y la función de toma de control humana está activada.

    image.png

Para los casos 1 y 2, asegúrese de iniciar sesión con el administrador/agente correcto o revise su perfil para comprobar que no haya departamentos asignados. En el caso 3, revise las conversaciones archivadas.


CONVERSACIONES


Gestionar conversaciones

Las conversaciones tienen un total de cuatro estados diferentes: marcar como leído, archivoborrar y restaurar. Puedes administrar el estado de una conversación abriéndola en el área de conversaciones y luego haciendo clic en cualquiera de los botones de ícono correspondientes en la parte superior derecha de la ventana de conversación.

Buscar conversaciones

Puede buscar conversaciones por ID de departamento, ID de agente asignado, título de la conversación, ID de la conversación, texto del mensaje, nombre de los archivos adjuntos, nombre del usuario, apellido del usuario y correo electrónico del usuario. Si busca un texto de mensaje específico, la conversación que lo contiene se mostrará en la posición correcta y se resaltará.

Información


Responder a un mensaje

Puedes responder a un mensaje abriendo el menú del mensaje y haciendo clic en Responder a. La función de respuesta solo es compatible con los siguientes servicios de mensajería:WhatsAppTelegrama,Facebook Messenger.


Funciones editor de texto y mensajes automatizado

El editor de texto del área de administración y los mensajes automatizados (ejemplo: mensajes de bienvenida y suscripción) se pueden utilizar para crear mensajes estilizados:

  1. Formato de enlacesTodos los enlaces de texto se convierten automáticamente en hipervínculos clicables. Para establecer el nombre del enlace, añada la siguiente cadena a la URL:#sb-ejemplo. Reemplazar ejemplo con el nombre del enlace deseado y espacios en blanco con--.
  2. Formato de textoEl editor también admite la sintaxis de formato de texto: 
        • Negrita:*texto*

        • Cursiva:__texto__

        • Tachado:~texto~

        • Código:`texto`

        • Bloque de código:```texto```


Fusionar campos 

Los campos de combinación son cadenas que se reemplazan por valores externos cuando se usan. Pueden usarse en cualquier mensaje o mensaje automatizado, incluidos los mensajes de chatbot.


Código Descripción
{user_name}
Nombre completo del usuario activo.
{user_email}
Correo electrónico del usuario activo.
{agent_name}
Nombre completo del agente activo.
{agent_email}
Correo electrónico del agente activo.

Mensajes enriquecidos

Los mensajes enriquecidos son mensajes especiales con funciones interactivas como botones, menús desplegables o entradas. Permiten que un agente solicite información al usuario mediante un formulario de entrada o muestre contenido interactivo. Se pueden insertar en un mensaje de chat mediante códigos cortos. Estos códigos aceptan diversos parámetros, como el título y la descripción. Los mensajes enriquecidos disponibles se enumeran a continuación.

image.png


Nombre Código Corto (Shortcode) Descripción
Email [email name="true" last-name="true" phone="true" placeholder=""] Formulario para recopilar correo y teléfono.

⚠️ Notas Importantes


Parámetros globales

Todos los mensajes enriquecidos admiten los siguientes parámetros:


Parameters Description
id="123"
El ID del mensaje enriquecido (utilizado también para guardar los datos JSON).
title="ABC"
El título del mensaje enriquecido.
message="ABC"
La descripción enriquecida del mensaje que aparece debajo del título.
success="ABC"
El mensaje que aparece cuando el usuario completa y envía el mensaje enriquecido. La entrada del usuario se adjunta a este mensaje.
settings="ABC"
Campo adicional para valores extra opcionales.

Utilice mensajes enriquecidos en el chatbot

Debes crear un chatbot de Dialogflow y luego simplemente ingresar el código corto del mensaje enriquecido en el respuesta de texto del Intención.


Respuesta de mensaje enriquecido

Cuando un usuario completa un mensaje enriquecido, los datos de respuesta se guardan en formato JSON en la base de datos en la tabla mensajes_sb y columnacarga útil. Ejemplo:

{"rich-messages":{"4Voyu":{"type":"email","result":{"email":["example@email.com","Your email..."]}}}}

Traducciones de mensajes enriquecidos

Para traducir una cadena de mensaje enriquecido, el texto original del mensaje enriquecido debe estar en inglés; agregue el texto exacto en inglés y sus traducciones en Configuración > Traducciones > Interfaz.


Mostrar un mensaje enriquecido al inicializar el chat

Para mostrar un mensaje enriquecido, como una lista de botones, cuando un usuario inicia un chat por primera vez, inserte el código corto del mensaje enriquecido en el mensaje de bienvenida .


Mensajes enriquecidos personalizados

Puede crear mensajes enriquecidos personalizados con su propio contenido personalizado yendo a Configuración > VariosActualmente, los mensajes enriquecidos personalizados son estáticos y no ofrecen opciones interactivas como los códigos cortos. Sin embargo, puedes insertar códigos HTML personalizados.


Códigos HTML

Al crear un mensaje enriquecido personalizado, puede utilizar los siguientes códigos:

Code Description
<a href="https://www.google.com" target="_blank" class="sb-rich-btn sb-btn">Click here</a> 
Link with button design.
<a href="https://www.google.com" target="_blank" class="sb-rich-btn sb-btn-text">Click here</a> 
Link.
<div class="sb-image"><img src="https://via.placeholder.com/1500x600" class="sb-image" /></div> 
Image that zoom on click.

#welcome-message

 

Mensajes integrados

Los mensajes integrados son mensajes preprogramados que envía automáticamente en ZampiBot. Puedes encontrarlos en Configuración > Mensajes.

Mensaje de bienvenida

Envía un mensaje a los nuevos usuarios cuando visitan el sitio web por primera vez.

image.png


#follow-up-message

 

Mensaje de seguimiento

Si ningún agente responde dentro del intervalo de tiempo especificado, se enviará un mensaje para solicitar los detalles del usuario, como su correo electrónico.

image.png


#rating

 

Calificación

Muestra el formulario de comentarios para calificar la conversación cuando esté archivada.

image.png



#offline-message

 

Mensaje fuera de línea

Notificar al usuario cuando su mensaje se envía fuera del horario de oficina programado o todos los agentes están fuera de línea.

image.png


#privacy-message

 

Mensaje de privacidad

Presenta un mensaje de privacidad con los botones "Aceptar" y "Rechazar". Se requiere la aprobación del usuario al hacer clic en el botón "Aceptar" para comenzar a usar el chat. Esta función garantiza el cumplimiento de la política de privacidad y el RGPD.

image.png


#pop-up-message

 

Mensaje emergente

Mostrar una notificación emergente a todos los usuarios.

image.png


Archivos adjuntos

Aquí podrás acceder a información sobre la carga de archivos y los adjuntos de los mensajes.


Información

Aquí puede acceder a información sobre una variedad de funciones asociadas con las conversaciones.

#tags

 

Etiquetas

Las etiquetas permiten una organización y agrupación más eficiente de las conversaciones. Consulte la información a continuación para obtener más detalles.

image.png

#notes

 

Notas

Las notas permiten a los agentes y administradores agregar comentarios a las conversaciones.

#transcript

 

Transcripción

El agente o administrador puede enviar la conversación completa al usuario como un archivo de transcripción.

Misceláneas


USUARIOS

Administrar usuarios

Administrar usuarios desde el Área de usuariosen el menú izquierdo del área de administración.

Importar usuarios

image.png

Puedes importar usuarios desde Configuración > Usuarios > Importar usuarios Solo se admiten archivos CSV. Puede descargar un archivo CSV de ejemplo aquí . En el archivo de ejemplo, la primera fila es el encabezado y las columnas...Altura y Color de pelo ¿Se agregan campos de usuario personalizados desde? Configuración > Usuarios > Campos personalizados.

Buscar usuarios

Puede buscar usuarios por nombre, apellido, correo electrónico y campos personalizados.

Eliminar usuarios

Puedes eliminar un usuario abriendo la opción de edición de usuarioy luego hacer clic Eliminar usuario. Para eliminar varios usuarios a la vez, seleccione los usuarios que desea eliminar de la tabla Usuarios y luego haga clic en la esquina superior derecha. Eliminar icono.

Fusionar usuarios

Puede fusionar dos usuarios en una misma tabla de usuarios. Seleccione dos usuarios y haga clic en el botón Fusionar usuarios botón en la parte superior.

image.png

#user-table-extra-columns

 

Columnas adicionales de la tabla de usuarios

Para mostrar columnas adicionales en la tabla de usuario, vaya a Configuración > Administración> Columnas adicionales de la tabla de Usuarios y agregue las nuevas columnas. El valor de cada columna es el slug del detalle del usuario o del detalle adicional que desea mostrar. El slug está en minúsculas y los espacios se reemplazan por el carácter-Por ejemplo, el slug del detalle adicional de usuario "Fecha de nacimiento" es "fecha-de-nacimiento".

Tipos de usuarios

Tipo Descripción
usuario
Un "usuario" es cualquier usuario con un correo electrónico.
Lead
Un "lead" es cualquier usuario sin detalles de usuario, que se registra automáticamente y con al menos una conversación.
visitante
Un "visitante" es cualquier usuario que no haya iniciado una conversación. Nota: Los visitantes se eliminan automáticamente cada 24 horas.
manual-de-usuario#agents

 

Administrar agentes y administradores

Administrar, crear y eliminar agentes y administradores desde Área de usuarios.

image.png


Recopilar detalles del usuario

Puede recopilar detalles del usuario, como su nombre y correo electrónico, a través de varios métodos:


#registration

 

Registro

El formulario de registro es una herramienta previa al chat que requiere que el usuario ingrese información específica antes de iniciar la conversación. Es ideal para solicitar datos clave, como el nombre y el correo electrónico, asegurando que cada contacto esté debidamente identificado.

Configuración y Activación

Para gestionar las opciones de registro, diríjase a: Configuración > Usuarios


Funcionamiento del Formulario

Gestión de Usuarios Existentes (OTP)

Si un usuario intenta registrarse utilizando un correo electrónico que ya se encuentra en su base de datos, Zampibot enviará automáticamente una OTP (Contraseña de un solo uso) a su email para permitirle autenticarse e iniciar sesión de forma segura.

[!NOTE] En situaciones de uso real, los registros duplicados son poco frecuentes ya que los usuarios suelen permanecer conectados en el mismo dispositivo; esta función es especialmente útil para evitar conflictos durante las fases de prueba del sistema.


Información

Contraseña (OTP)

image.png

La función OTP verifica el correo electrónico del usuario durante el registro mediante el envío de un código de un solo uso a su dirección de correo electrónico. El usuario debe introducir este código en el formulario de registro. Habilítela desde Configuración > Usuarios > Verificación de correo electrónico, y personaliza el correo electrónico OTP desde Configuración > Usuarios > Correo electrónico de verificación de correo electrónico. El correo electrónico también utiliza la plantilla definida en Configuración > Notificaciones > Plantilla de correo electrónico. Tenga en cuenta que la OTP siempre se envía, incluso si la función está deshabilitada, cuando un usuario intenta registrarse con un correo electrónico ya registrado.

#login-verification-url #login-link

 

URL de verificación de inicio de sesión

La función de URL de verificación de inicio de sesión se puede encontrar en Configuración > Usuarios > URL de verificación de inicio de sesión. En ZampiBot esta función permite autenticar un inicio de sesión externo y registrar e iniciar sesión automáticamente al usuario. ZampiBot enviará una solicitud a la URL especificada, añadiendo la dirección de correo electrónico del usuario y la contraseña ingresada en el formulario de inicio de sesión del chat como parámetros de URL. Los parámetros se denominanemailpassword Ejemplo:https://ejemplo.com/login.php?email=ejemplo@mail.com&contraseña=12345678. La respuesta esperada de la URL debe ser un objeto JSON como el siguiente:

{ "first_name": "John", "last_name": "Doe", "email": "johon@example.com", "profile_image": "https://zampisoft.com/user.svg", "department": null, "password": "", "details": { "location": [ "Location", "New York, United States" ], "country_code": [ "Country code", "America/New_York" ] } }

El valor first_name es requerido.


Enlace de inicio de sesión y contraseña olvidada

Si un usuario olvida su contraseña, puede hacer clic en Has olvidado tu contraseña y se enviará un correo electrónico con un enlace de inicio de sesión a la dirección de correo electrónico registrada. Al hacer clic en el enlace, el usuario iniciará sesión automáticamente. Puede personalizar el correo electrónico que se envía a los usuarios desde Configuración > Usuarios > Correo electrónico del enlace de inicio de sesión. El correo electrónico utiliza la plantilla definida en Configuración > Notificaciones > Plantilla de correo electrónico. Esta función solo está disponible si en Requerir registro está configurado para Formulario de registro e inicio de sesión o Formulario de inicio de sesión.


Misceláneas

#office-hours

 

AJUSTES

Horario de oficina

Puede configurar el horario de oficina desdeConfiguración > Varios > Horario de oficina El horario de oficina se utiliza para:

image.png

Más información


Artículos

Los artículos de la base de conocimientos ofrecen respuestas instantáneas a los clientes para ayudar a reducir el volumen de atención al cliente. Puede acceder a los artículos desde el menú izquierdo de ZampiBot.

image.png

Cómo visualizar el área de artículos

Sigue estos pasos para mostrar los artículos en una página de tu dominio y sitio web. Puedes mostrarlos de tres maneras:

Método API REST

Inserta el código a continuación en tu página. Reemplazar [URL DE ZAMPIBOT] con la URL de la instalación de su ZampiBot y[TU-TOKEN] con cualquier token de administrador. Si usa la versión en la nube , la URL es https://chatbot.zampisoft.com/script/include/api.php. Para obtener el token, haga clic aquí . Además, elimine los dos primeros scripts. Incluya la etiqueta nojquery => true. Si ya tienes jQuery incluido en tu página, incluye el atributonojs => true. Si ya tienes el código de inserción de chat incluido en tu página.

<div id="sb-articles"> <script src="[URL ZAMPIBOT]/js/min/jquery.min.js"></script> <script id="sbinit" src="[URL ZAMPIBOT]/js/main.js"></script> <?php $ch = curl_init('[URL ZAMPIBOT]/include/api.php?articles=true&' . (empty($_GET['category']) ? (empty($_GET['article_id']) ? (empty($_GET['search']) ? '' : '&search=' . urlencode($_GET['search'])) : '&article_id=' . $_GET['article_id']) : '&category=' . $_GET['category']) . (empty($_GET['lang']) ? '' : '&lang=' . $_GET['lang'])); $parameters = [ CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_USERAGENT => 'ZampiBot', CURLOPT_POST => true, CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_POSTFIELDS => http_build_query([ 'token'=> '[YOUR-TOKEN]', 'function' => 'init-articles' ]) ]; curl_setopt_array($ch, $parameters); $response = curl_exec($ch); curl_close($ch); echo $response; ?> </div>

Método JAVA SCRIPT

Inserta el código a continuación en tu página. Este método no se recomienda para SEO, ya que los artículos se cargan de forma asincrónica y es posible que los motores de búsqueda no indexen la página.  Si está utilizando la versión en la nube , la URL https://chatbot.zampisoft.com/script

<script src="[ZAMPIBOT-URL]/js/min/jquery.min.js"></script> <script id="sbinit" src="[ZAMPIBOT-URL]/js/main.js"></script> <script>var SB_ARTICLES_PAGE = true;</script> <div id="sb-articles" class="sb-loading"></div>

Navegación de una página

La navegación de una página del artículo aparece automáticamente en todos los artículos. Se genera a partir de la página del artículo. h2 y h3 bloques de encabezado.

#articles-url-rewrite

 

Reescritura de URL

Puede habilitar la reescritura de URL desde Configuración Artículos > Reescritura de URL. Las URL predeterminadas de ZampiBot no son intuitivas e incluyen parámetros. Puedes reescribirlas mediante un archivo de .htaccess. El código a continuación reescribe las URL de las categorías y las páginas de artículos. La URL de las categorías cambia de articles.php?categories=ID a articles/category/ID. La URL del artículo cambia dearticles.php?article_id=ID a articles/ID.

<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^articles?$ articles.php [L] RewriteRule ^articles/category/(.*)$/?$ articles.php?category=$1 [L,QSA] RewriteRule ^articles/(.*)$/?$ articles.php?article_id=$1 [L,QSA] </IfModule>

Cambiar articles con el nombre de su página de artículos y configure la URL de la página de artículos en: Configuración > Artículos > URL de la página de artículos.


#article-language

 

Idioma

More information

Idioma y traducciones

ZampiBot es totalmente multilingüe y ofrece potentes funciones para detectar el idioma del usuario sobre la marcha.

Idioma del chat

ZampiBot ya está traducido a más de 45 idiomas. Hay muchas opciones disponibles para configurar el idioma:

Por ejemplo: https://chatbot.zampisoft.com/account/js/init.js?id=123456&lang=es.
Esta función obligará al chat a usar siempre el mismo idioma y Configuración > Chat > ​​Idioma ignorará esta opción. Visite wikipedia.org/wiki/List_of_ISO_639-1_codes para ver la lista completa de códigos de idiomas (véase la columna 639-1). Para chino tradicional zt, para uso en chino simplificado zh, para uso en portugués brasileño pt.

#multilingual-admin

 

Idioma de administración

Para traducir el área de administración siga los pasos a continuación:

Para configurar el idioma del área de administración siga los pasos a continuación:

Chatbot y traducciones de mensajes

Para traducir automáticamente los mensajes del chatbot y otros textos, utilice la aplicación de Inteligencia Artificial y siga los pasos que se describen aquí .

Editar y agregar nuevas traducciones

Puedes traducir prácticamente cualquier contenido personalizado, como mensajes enriquecidos , mensajes integrados , departamentos , encabezados de chat y más. Para añadir una nueva traducción o editar una existente, sigue estos pasos:

Información


#departments

 

Departamentos

Los departamentos le permiten distribuir conversaciones y asignar agentes a departamentos específicos. Por ejemplo, puede crear un departamento llamado "Ventas" y asignarle conversaciones específicas. Para empezar a usar los departamentos, siga estos pasos:

image.png

Ajustes

Cómo funciona

Cómo asignar un departamento a una conversación

Puedes asignar un departamento a una conversación de varias maneras:


queue-routing

 

Cola y Enrutamiento

El sistema de Cola y Enrutamiento de Zampibot permite que el tablero de soporte asigne automáticamente las conversaciones a los agentes disponibles de forma proporcional y equitativa.

image.png

Configuración y Activación

Para habilitar estas funciones, acceda a:

Una vez activo, el sistema distribuirá las conversaciones de los usuarios entre todos los agentes disponibles de manera automática.


Reglas de Asignación Automática

El sistema gestiona la carga de trabajo basándose en la disponibilidad real:


#manual-routing

 

Guía para el Agente

Gestión de Estado: Los agentes pueden alternar entre en línea y fuera de línea pasando el cursor sobre su imagen de perfil y haciendo clic en la etiqueta de la ventana emergente (esquina inferior izquierda del área de administración).

Flujo de Trabajo:

Configuraciones de Visibilidad: Para permitir que los agentes vean conversaciones no asignadas, active: Configuración > Misceláneas > Ocultar conversaciones de otros agentes y Ver conversaciones no asignadas.


Información Detallada: Solo Cola

Cuando la cola está activa, los usuarios entran en ella automáticamente al alcanzarse el límite de chats de un agente.


Información Detallada: Solo Enrutamiento


Menú de Agentes

El Menú de Agentes permite asignar conversaciones manualmente a personas específicas. Aparece en el lado derecho del área de conversaciones y se habilita automáticamente con la cola o el enrutamiento.

Formas de asignar un agente:

  1. Mediante la función Q&A set data.

  2. A través de acciones en los Flows (flujos).

  3. Mediante las funciones de Cola o Enrutamiento.

  4. Activando Configuración > Chat > Menú de Agentes (el usuario elige al agente antes de empezar).

  5. A través de Configuración > Automatizaciones > Más.

  6. Vía JavaScript usando la variable var SB_DEFAULT_AGENT = ID;.

  7. A través de la API.


Cómo probar la cola

  1. Abra el chat en diferentes navegadores (Chrome, Firefox, etc.) o en modo incógnito para simular múltiples usuarios.

  2. Para resetear una sesión y empezar como usuario nuevo, abra la consola del navegador (F12), escriba SBF.reset() y presione Enter.


#email-piping

 

Email Piping (Sincronización de Correo)

El Email piping le permite sincronizar múltiples direcciones de correo electrónico para recibir mensajes directamente en Zampibot. También permite que usted, sus agentes y los usuarios respondan a los mensajes del chat a través del correo electrónico.

image.png

Activación

Para poner en marcha esta función, siga estos pasos:

  1. Vaya a Configuración > Notificaciones > Email piping e ingrese la información de su servidor de correo POP3/IMAP.

  2. Vaya a Configuración > Notificaciones > SMTP e ingrese la información de su servidor de correo SMTP.

  3. Importante: La dirección de correo debe coincidir con la que se conecta el servidor de email piping. Zampibot enviará todos los correos desde esta dirección.


Información y Reglas de Funcionamiento


Guía para Agentes y Administradores


Detalles Técnicos


#email-cron

 

Cron Job (Tareas Programadas)

El sistema procesa los correos cada 60 segundos mediante un cron job.

image.png


Mensajes Directos

Los mensajes directos le permiten enviar un único mensaje de chat, correo electrónico o mensaje de texto a un usuario individual o a varios usuarios a la vez. A continuación, se detalla cómo funciona esta característica:

Cómo enviar un mensaje

Características Generales


Tipos de Mensajes

1. Mensaje Directo de Chat

El mensaje se envía a la conversación activa del usuario. Si no existe una, se iniciará una nueva automáticamente.

2. Correo Electrónico Directo

3. Mensajes de Texto Directos (SMS)

4. Mensajes de Plantilla de WhatsApp Directos


Automatizaciones

Las automatizaciones permiten ejecutar tareas automáticas multilingües cuando se cumplen las condiciones específicas que usted configure.

Configuración y Control


Reglas de Fecha y Tiempo


Requisitos de Ubicación e Idioma

Para que las automatizaciones basadas en geolocalización o idioma funcionen correctamente, deben cumplirse ciertos requisitos en la configuración:


Comportamiento del Visitante


Condiciones Técnicas Especiales


Restricciones de Compatibilidad

Las automatizaciones no son compatibles con aplicaciones de mensajería externas, tales como:


#newsletter

 

Newsletter

Siga las instrucciones a continuación para completar la sincronización con su servicio de boletines (newsletter). Los usuarios se suscriben automáticamente en los siguientes casos: a través del formulario de registro, mediante el mensaje de seguimiento, con el mensaje de suscripción o al utilizar el código corto de correo electrónico.

image.png

Mailchimp

Brevo

SendGrid

Elastic Email

Campaign Monitor

HubSpot

Moosend

GetResponse

ConvertKit

ActiveCampaign

MailerLite

Mailjet

Sendy

SendFox


Mas ajustes

#saved-replies

 

Respuestas guardadas

Las respuestas guardadas, también conocidas como mensajes predefinidos, son una colección de mensajes escritos previamente que los agentes pueden utilizar de forma rápida en el editor del chat. Puede gestionarlas desde la siguiente ruta: Configuración > Administración > Respuestas guardadas.

image.png


#email

#email

Notificaciones por Email

Para comprender cómo funcionan las notificaciones y cuándo se envían, lea la siguiente información. Si cree que las notificaciones no funcionan, probablemente las esté probando incorrectamente. Lea la siguiente información antes de solicitar asistencia.

Notificaciones por correo electrónico

Tanto los agentes como los usuarios pueden recibir una notificación por correo electrónico cuando se recibe un nuevo mensaje.

image.png

Notificaciones por correo electrónico para administradores y agentes

Notificaciones por correo electrónico para los usuarios

Crear el correo electrónico

Para administrar los correos y crear los contenidos vaya aConfiguración > NotificacionesPuedes usar texto y HTML. Las nuevas líneas se convierten automáticamente a<br />Puede usar los siguientes campos de combinación en el correo electrónico. Estos campos se reemplazan automáticamente con la información actualizada.


Merge field Description
{recipient_name}
El nombre del usuario o agente que recibe el correo electrónico.
{sender_name}
El nombre del usuario o agente que envió el mensaje que activó la notificación por correo electrónico.
{sender_profile_image}
The profile image of the user or agent who was sending the message that triggered the email La imagen de perfil del usuario o agente que envió el mensaje que activó la notificación por correo electrónico..
{message}
Los enlaces a cualquier archivo adjunto que formaba parte del mensaje que activó la notificación por correo electrónico.
{attachments}
Los archivos adjuntos de los correos electrónicos.
{conversation_link}
Un enlace para abrir la conversación en el área de administración. Este campo de combinación solo está disponible para los correos electrónicos de los agentes.
{conversation_id}
El ID de la conversación.

Plantilla de correo electrónico

Todos los correos electrónicos enviados por ZampiBot utilizan la plantilla definida en la siguiente ruta: Configuración > Notificaciones > Plantilla de correo electrónico.

Es obligatorio incluir el campo de combinación {content}, el cual será reemplazado automáticamente por el cuerpo real del mensaje de correo electrónico al momento del envío.


Cron job (Trabajos programados)

Puede ejecutar un cron job para el envío de notificaciones por correo electrónico tanto a usuarios como a agentes. Al utilizar este método, las notificaciones mejoran significativamente: incluirán la conversación completa y se enviarán una sola vez.

Configuración requerida: Para utilizar esta función, debe activar la opción en: Configuración > Notificaciones > Notificaciones por correo electrónico a través del trabajo cron.

Ejecución del comando: Puede crear un cron job que ejecute la siguiente URL: [URL-DE-INSTALACION]/include/api.php?email-notifications=true.

Nota: Esta es una función avanzada relacionada con la configuración de su servidor. Nuestro equipo de soporte no ofrece asistencia directa para la gestión de servidores, pero puede contratarnos para ayudarle con esta implementación.


¿Tiene problemas?

Si las notificaciones por correo no se entregan correctamente, puede realizar una prueba de envío desde la siguiente ruta: Configuración > Notificaciones > Send an agent email notification.

Existen diversos motivos por los cuales los correos podrían no entregarse:

Razón Descripción Solución
Problemas de alojamiento (Hosting) El servidor de su proveedor de hosting no puede enviar correos o estos son detectados automáticamente como spam y eliminados. Si las opciones en Configuración > Notificaciones > SMTP no están configuradas, su servidor intentará enviar los correos de forma nativa. Contacte con su proveedor de hosting para obtener soporte o active un servidor SMTP externo en la ruta mencionada.
Problemas con SMTP El correo electrónico no se envía a pesar de haber activado la opción SMTP en el área de notificaciones. Asegúrese de que la conexión funcione enviando un correo de prueba desde Configuración > Notificaciones > Enviar una notificación por correo electrónico al usuario o Enviar una notificación por correo electrónico al agente. Si no recibe el mensaje, su servidor SMTP no funciona. Revise la consola del navegador para ver el error específico. Este problema es externo a ZampiBot; contacte a su proveedor de SMTP o use servicios como SendGrid (40,000 correos gratis el primer mes).
Google Gmail El correo no se envía al intentar utilizar el servidor SMTP de Gmail, incluso con la opción activa. Para cuentas de Gmail o Google Workspace, debe usar una Contraseña de Aplicación (consulte la guía de Google). Use smtp.gmail.com como anfitrión y el puerto 465 o 587. En Google Workspace, verifique en Consola de administración > Seguridad > Control de acceso y datos > Controles de API > Control de acceso a aplicaciones que el acceso SMTP no esté restringido.

#push

 

Notificaciones Push

Las notificaciones push se diferencian de las notificaciones de escritorio tradicionales en que son enviadas directamente desde un servidor. Esto permite que funcionen en todo momento, incluso si su dispositivo está desconectado o si ZampiBot no está abierto en el navegador. Además, son persistentes y permanecen visibles hasta que el usuario las cierra.

ZampiBot es compatible con Pusher y OneSignal, ambos servicios gratuitos para hasta 2000 usuarios o dispositivos.

Nota importante: Pusher no es compatible con dispositivos iOS; si utiliza iPhone o iPad se envia por OneSignal.

Versión Cloud

La versión en la nube de ZampiBot utiliza OneSignal por defecto y ya se encuentra preconfigurada. Para habilitarlas en el área de administración, solo debe seguir esta ruta: Configuración > Notificaciones > Notificaciones push > Activo para agentes, guarde los cambios y recargue el panel.


Activación para Usuarios

Para habilitar las notificaciones push en sus clientes, siga estos pasos:

image.png

  1. Descargue el archivo del Service Worker desde el enlace proporcionado here.

  2. Suba dicho archivo a la raíz de su sitio web en la siguiente ubicación: https://su-sitio.com/service-worker.js.

  3. Vaya a Configuración > Notificaciones > Notificaciones push > URL del Service Worker e ingrese la URL completa del archivo.


Información y Requisitos


Reglas para Administradores y Agentes

El sistema sigue una lógica inteligente para el envío de alertas:


Solución de Problemas

Si las notificaciones no funcionan correctamente, verifique los siguientes puntos:


Notificaciones de escritorio

Las notificaciones de escritorio (también conocidas como notificaciones web) permiten alertar a los usuarios y agentes de forma inmediata, con las siguientes condiciones:


Notificaciones de mensajes de texto (SMS)

Tanto los agentes como los usuarios pueden ser notificados mediante mensajes de texto cuando llega un nuevo mensaje. Este servicio es proporcionado por Twilio. Es un servicio de pago, pero cuenta con una versión de prueba gratuita para realizar tests. Además, los mensajes SMS enviados a su número de Twilio pueden recibirse dentro de ZampiBot, permitiendo una experiencia de mensajería bidireccional.

Activación

  1. Regístrese en Twilio y cree una nueva cuenta.

  2. Verifique su número de teléfono y elija la opción SMS en el formulario de configuración.

  3. Desde su panel de Twilio, haga clic en Get a Trial Number (Obtener un número de prueba).

  4. Ingrese al área de administración de ZampiBot y vaya a: Configuración > Notificaciones > Notificaciones de mensajes de texto. Pegue el SID de la cuenta, el token de autenticación y el número de prueba (o número comprado).

  5. Pruebas: Si usa la versión de prueba, solo podrá enviar notificaciones a números verificados en su panel de Twilio bajo Verified Caller IDs.

  6. Uso en vivo: Para recibir mensajes de texto en ZampiBot, debe comprar un número y configurar la URL en Twilio desde: Phone numbers > Manage > Active numbers. Obtenga el enlace necesario en ZampiBot en: Configuración > Notificaciones > Notificaciones de mensajes de texto > URL de configuración.

Información importante


#sound

 

Notificaciones de sonido

Al habilitar los sonidos en Configuración > Notificaciones > Sonidos, se reproducirá una alerta auditiva cada vez que se reciba un nuevo mensaje o conversación.

image.png


Notificaciones de Telegram

Para conocer los detalles específicos sobre cómo vincular ZampiBot con Telegram para recibir notificaciones, consulte la sección dedicada a Telegram en esta documentación.


open-ai

 

ARTIFICIAL INTELLIGENCE

Esta sección detalla el funcionamiento y la configuración de la aplicación de Inteligencia Artificial para Zampibot, diseñada para automatizar respuestas y optimizar la atención al cliente.


Instalación

Para comenzar a utilizar las funciones de IA:

  1. Diríjase a Configuración > Apps.

  2. Simplemente haga clic en Activo.


#human-takeover

 

Toma de control humana (Human Takeover)

El relevo de un chatbot a un agente humano ocurre en los siguientes casos:

Información General

Activación Manual


#smart-reply

 

Respuesta inteligente (Smart Reply)

Esta función sugiere respuestas rápidas en tiempo real durante una conversación activa con un agente.


Configuración Óptima del Chatbot

Para obtener los mejores resultados, recomendamos seguir estos pasos:

  1. Activar Dialogflow: Ideal para consultas generales, respuestas definitivas o uso de mensajes enriquecidos (botones).

  2. Entrenamiento: Entrene su chatbot de OpenAI con su propio contenido para respuestas personalizadas.

  3. Confianza de Detección: Establezca el valor de Google > Dialogflow Intent detection confidence en 0.81.

  4. Funciones de OpenAI: Active las opciones de Bot conversacional, corrección ortográfica y Reescritura de mensajes.

  5. Multilingüe: Si su sitio es internacional, active Traducción automática y Detección de idioma.


Solución de Problemas (IA)

Si las funciones de OpenAI o Google no funcionan correctamente, las razones más frecuentes se enumeran a continuación.

[!TIP] Para obtener detalles técnicos sobre un error, abra las herramientas de desarrollador de su navegador (F12 en Windows), diríjase a la pestaña Consola, envíe un mensaje a través del chat de ZampiBot y observe si aparece algún mensaje de error resaltado en rojo.


OpenAI y Google (General)


OpenAI


Google (Dialogflow)

OpenAI

Esta sección detalla los ajustes de sincronización y configuración inicial del chatbot de OpenAI para Zampibot, permitiendo que el sistema responda preguntas generales de manera inteligente.


Sincronización

Existen dos modalidades para vincular el servicio de Inteligencia Artificial con su cuenta:

1. Modo de sincronización automática

Esta característica es exclusiva de la versión en la nube de Zampibot.

2. Modo de sincronización manual

La integración con OpenAI (ChatGPT) otorga al chatbot la capacidad de responder a casi cualquier consulta general. Siga estos pasos para la configuración manual:


Chatbot

Para configurar su primer chatbot, siga esta secuencia de pasos:

  1. Complete el proceso de sincronización mencionado anteriormente.

  2. Habilite la opción en Configuración > Inteligencia Artificial > OpenAI > Chatbot y guarde los cambios.

  3. Acceso al área de pruebas: Su chatbot estará activo de inmediato. Puede acceder al área de pruebas desde la sección Chatbot, identificada con el icono de la carita sonriente🙂 en el menú de la izquierda.

Solución de problemas iniciales

Si el chatbot no responde como se espera, haga clic en el botón Configuración > Inteligencia Artificial > OpenAI > Solucionar problemas y siga las instrucciones en pantalla para diagnosticar el error.

Para perfeccionar el desempeño de su asistente, le recomendamos explorar las secciones de Entrenamiento y Toma de control humana.


Chatbot Integrations

Las siguientes integraciones están disponibles para potenciar las capacidades del chatbot de OpenAI en Zampibot. Estas herramientas son conversacionales, multilingües y compatibles con cualquier aplicación de mensajería como WhatsApp, Messenger y Telegram.


#google-calendar-integration

#google-calendar-integration

Google Calendar

Habilite esta integración para permitir que el chatbot acceda a su Google Calendar, permitiendo que los usuarios reserven y gestionen citas directamente en su calendario.

Tareas disponibles:

Configuración:

  1. Diríjase a Configuración > Inteligencia Artificial > Google Calendar integration y haga clic en Activato.

  2. Acceda a Configuración > Inteligencia Artificial > Google > Sincronizar y complete el proceso de sincronización.

  3. Establezca los horarios de reserva disponibles en Configuración > Misceláneas > Horas de oficina programadas.

Información técnica:


#tidycal-integration

 

TidyCal

Esta integración permite al chatbot de OpenAI conectarse con su cuenta de TidyCal para que los usuarios gestionen sus citas de forma automatizada.

Tareas disponibles:

Configuración:

  1. Vaya a Configuración > Inteligencia Artificial > TidyCal integration y haga clic en Activate.

  2. En su cuenta de TidyCal, acceda a Integrations > Advanced > API Keys para crear un Personal Access Token. Cópielo y péguelo en Configuración > Inteligencia Artificial > TidyCal integration > Access token.

  3. Ingrese el título del tipo de reserva que desea utilizar en Configuración > Inteligencia Artificial > TidyCal integration > Booking type title y guarde los cambios.

  4. Configure los horarios disponibles, tiempos de espera y duración de las citas directamente dentro de su cuenta de TidyCal.

Información importante:


Configuración

Consulte a continuación la información detallada sobre la mayoría de los ajustes de OpenAI para Zampibot.

Modo de Chatbot (Chatbot mode)

Esta función está vinculada a la opción Configuración > Inteligencia Artificial > OpenAI > Modo de sincronización. Le permite configurar qué información utilizará OpenAI para responder a los mensajes de los usuarios:

Conversación casual (Small talk)

Esta función habilita respuestas predefinidas para que el chatbot pueda manejar interacciones sociales y corteses, como "Hola", "¿Cómo estás?" o "Cuéntame un chiste". Esto hace que los bots se sientan más humanos y atractivos en lugar de estar enfocados únicamente en tareas técnicas.

#open-ai-assistant

 

Asistente (Assistant)

Esta característica le permite utilizar sus propios asistentes creados en https://platform.openai.com/assistants:

Chatbot

La función de chatbot de OpenAI opera de forma similar a Dialogflow, proporcionando respuestas automáticas. Seleccione el ajuste de Modo de bot coversacional para especificar qué preguntas podrá responder y utilice la función de toma de control humana (human takeover) para redirigir el chat a un agente cuando sea necesario.

Mensaje de respaldo (Fallback message)

Este mensaje se envía cuando OpenAI no logra entender la pregunta del usuario. Si el chatbot de Dialogflow está habilitado, este mensaje se desactivará y se utilizará en su lugar el mensaje de respaldo de Dialogflow.

Instrucción de comportamiento (Prompt)

El Prompt instruye a OpenAI sobre cómo debe responder, proporcionando información relevante para contestar a los usuarios.

Corrección ortográfica (Spelling correction)

Esta función corrige automáticamente cualquier error de ortografía en los mensajes enviados por el agente.

Idioma de los datos de entrenamiento

Si utiliza datos de entrenamiento y su chatbot es multilingüe, configure aquí el idioma predeterminado de dichos datos. Déjelo como default si el idioma principal de sus fuentes es el inglés.

Respuesta inteligente (Smart reply)

Permite habilitar sugerencias de respuesta rápida incluso si el chatbot no está activo. Si el chatbot está activo, esta función utilizará OpenAI de forma automática.

Corrección ortográfica de Dialogflow

Si Dialogflow no encuentra una respuesta adecuada, esta función verifica si hay errores ortográficos en el mensaje del usuario. Si existen, se vuelve a consultar a Dialogflow con el mensaje corregido. Aunque tiene mayor prioridad, puede trabajar en conjunto con la corrección ortográfica de Google Search.

Reconocimiento de voz (Speech recognition)

OpenAI permite convertir mensajes de voz en texto escrito.

Análisis de imágenes y archivos

Permite al chatbot interpretar imágenes y archivos enviados por los usuarios.

Enlaces de fuentes (Source links)

Al estar activa, la respuesta incluirá automáticamente enlaces a las fuentes y datos de entrenamiento utilizados. Para incluir artículos, primero debe configurar la ruta en Configuración > Artículos > URL de la página de artículos.

Extracción de datos en notas (Note data scraping)

Habilita un menú en el panel de Notas que permite extraer automáticamente información específica de los mensajes, como datos de inicio de sesión, URLs o un resumen de la conversación.

Parámetros de OpenAI

Zampibot permite ajustar parámetros técnicos como la temperature (creatividad) y logit_bias. No modifique estos valores si no está seguro de su funcionamiento, ya que OpenAI podría dejar de responder.

Generar preguntas de usuario

Si esta opción está activa, OpenAI generará nuevas variaciones de preguntas de usuario en tiempo real al abrir el panel de entrenamiento del chatbot.

Usar conversaciones para entrenamiento

Utiliza automáticamente las conversaciones reales para entrenar al bot mediante un cron job cada 24 horas. Solo se emplean mensajes de usuarios y agentes (se ignoran los del bot). Puede encontrar estos datos en Chatbot > Entrenamiento > Conversaciones.

Conocimiento del contexto (Context awareness)

Permite a OpenAI reconocer el contexto de la página web donde se encuentra el usuario (título meta y descripción meta). Esta opción solo es compatible con el widget de chat y no con canales de mensajería externos.

#message-rewriting

#message-rewriting

Reescritura de mensajes (Message rewriting)

Añade un botón en el campo de texto del área de conversación para profesionalizar sus mensajes.


Entrenamiento

Con esta función, su chatbot puede someterse a un proceso de aprendizaje utilizando su sitio web, textos, documentos PDF y más. Una vez completado el entrenamiento con éxito, el chatbot será capaz de responder preguntas relacionadas con sus contenidos.

Entrenamiento mediante archivos

Este proceso le permite entrenar al chatbot utilizando archivos en formato PDF y TXT.

Entrenamiento mediante un sitio web

Permite al chatbot aprender directamente de las páginas de su sitio web.

Entrenamiento mediante preguntas y respuestas (P&R)

Este método permite añadir preguntas y sus respectivas respuestas de forma individual.

Entrenamiento mediante artículos

El chatbot puede utilizar sus artículos de la base de conocimientos como fuente de aprendizaje.

Entrenamiento mediante flujos (Flows)

Utilice los flujos conversacionales diseñados para guiar las respuestas del bot.


Métodos de Mejora Continua

Entrenamiento mediante conversaciones

Permite generar datos de entrenamiento a partir de las interacciones reales entre usuarios y agentes.

Importante: Revise estos datos regularmente en Chatbot > Entrenamiento > Conversaciones, ya que las respuestas incorrectas de los agentes pueden generar datos de baja calidad.

Panel de entrenamiento del chatbot

Permite seleccionar mensajes específicos de una conversación para crear nuevas preguntas y respuestas.


Información Técnica y Límites


Entrenamiento mediante Cron Job

Puede automatizar el entrenamiento periódico de su sitio web.


Entrenamiento Multilingüe

Si sus usuarios hablan varios idiomas, puede limitar al chatbot para que recupere respuestas solo de fuentes en el idioma del usuario.


Q&A (Preguntas y Respuestas)

Esta sección se refiere al área de entrenamiento del chatbot mediante preguntas y respuestas directas. Añada pares de preguntas y respuestas para mejorar el rendimiento del bot y permitirle responder consultas específicas de los usuarios.

Configuración de una Q&A


Flujos (Flows)

La siguiente información se relaciona con el área de flujos del chatbot, disponible en la ruta: Chatbot > Flujos

Los flujos le permiten crear secuencias de conversación automatizadas de manera sencilla. Utilícelos para guiar al usuario hacia un objetivo específico mediante una serie de mensajes predefinidos.

Bloques de Flujo

Información Adicional


Llamada a Herramientas (Tools Calling)

Esta función permite conectar el chatbot con herramientas y sistemas externos para recuperar información necesaria para responder al usuario. El chatbot consultará a su servidor y devolverá la información al usuario.

[!WARNING] Esta es una función para usuarios avanzados que requiere programación en su servidor. Nuestro soporte estándar no incluye asistencia para código personalizado, pero ofrecemos servicios de contratación para implementaciones.

Parámetros de Configuración

Datos enviados a su servidor

ZampiBot enviará la siguiente información. Si usa el método POST, irá en el cuerpo JSON; si usa GET, irá en el encabezado.


{ "sb": { "user_id": "123", "conversation_id": "123", "user_language": "es" }, "arguments": {} }
numero-de-orden).

sb: Incluye los IDs para que pueda recuperar más información vía la API REST de ZampiBot.

Respuesta de su servidor

Su servidor debe devolver un array JSON con los valores requeridos. Incluya "success": truesolo cuando la solicitud sea exitosa y se devuelva la información esperada. No lo incluya si hubo un error (ej. número de orden inválido).

Ejemplo de respuesta correcta:


{ "order_status": "Entregado hace 2 horas y 25 minutos", "success": true }
Información
  • Solución de problemas: Si OpenAI no está funcionando, haga clic aquí.

  • Interacción con Dialogflow: Si Dialogflow se encuentra activo, la consulta a OpenAI se ejecuta únicamente si el chatbot no conoce la respuesta a la pregunta del usuario y si la longitud del mensaje del usuario es superior a 4 caracteres.

  • Compatibilidad de ajustes generales: Los siguientes ajustes son totalmente compatibles con OpenAI:

    • Respuesta inteligente (Smart reply).

    • Toma de control humana (Human takeover).

    • Desactivar en el área de tickets (Disable for the tickets area).

    • Desactivar durante horario de oficina (Disable during office hours).

    • Retraso en la respuesta del bot (Bot response delay).

    • Responder a correos de usuarios (Reply to user emails).

    • Responder a mensajes de texto de usuarios (Reply to user text messages).

  • Compatibilidad de ajustes de Google: Los siguientes ajustes de Google funcionan conjuntamente con OpenAI:

    • Multilingüe vía traducción (Multilingual via translation).

    • Traducción automática (Automatic translation).

    • Detección de idioma (Language detection).

  • Configuración de Idioma: Establezca el idioma del chatbot de OpenAI desde la ruta: Configuración > Chat > Idioma.

    • Seleccione la opción Multilingual (Multilingüe) si su sitio web admite varios idiomas o si sus usuarios hablan diferentes lenguas.

    • Si utiliza canales de mensajería externos como WhatsApp o Instagram, es obligatorio detectar el idioma del usuario activando la función de detección de idioma. Para más detalles, haga clic aquí.

  • Comportamiento durante la Toma de Control: Si un agente humano toma el control de la conversación, el chatbot de OpenAI se desactiva y permanece desactivado incluso si el agente se desconecta (pasa a estado offline). Por el contrario, el chatbot de Dialogflow continúa funcionando siempre que sea necesario.

  • Modelo por defecto: El modelo de IA utilizado por defecto es gpt-5-mini.

  • Mensajes consecutivos: Los mensajes enviados por el usuario de forma consecutiva (uno tras otro rápidamente) son tratados por el chatbot como un único mensaje, lo que resulta en una sola respuesta unificada en lugar de múltiples respuestas fragmentadas.



#google-sync

 

GOOGLE

Los siguientes ajustes están relacionados con la aplicación de Inteligencia Artificial.

Sincronización

Para comenzar a utilizar los servicios de IA de Google y Dialogflow, siga los pasos que se detallan a continuación.

Modo de sincronización automática

Esta función está disponible solo en la versión en la nube de ZampiBot.

  1. Haga clic en Sincronizar ahora (Synchronize now) y complete el procedimiento.

  2. Si desea activar el chatbot de Dialogflow, marque la opción en: Configuración > Inteligencia Artificial > Google > Dialogflow chatbot.

  3. Además, deberá ingresar el ID del Proyecto o el Nombre del Agente de su chatbot. Para obtener estos datos, siga los pasos descritos más abajo en la sección de Dialogflow.

  4. Nota: Necesita comprar créditos para utilizar esta opción.

Modo de sincronización manual

Siga estos pasos para configurar la integración manualmente en su propio servidor:

  1. Habilite la opción Configuración > Inteligencia Artificial > Google > Dialogflow Chatbot en ZampiBot y guarde los cambios.

  2. Vaya a console.cloud.google.com e inicie sesión.

  3. Seleccione o cree un proyecto haciendo clic en el botón Seleccionar un proyecto en la parte superior izquierda. Nombre el proyecto como desee.

  4. Active las APIs necesarias: Ingrese "Dialogflow API" en la barra de búsqueda superior, selecciónela y haga clic en Habilitar. Repita este paso para:

    • Cloud Natural Language API

    • Cloud Translation API

    • Google Calendar API

  5. Seleccione el proyecto y vaya al Menú izquierdo > API y servicios > Pantalla de consentimiento de OAuth.

    • Seleccione Externo y haga clic en Crear.

    • En Nombre de la aplicación, ingrese lo que desee.

    • En Correo electrónico de asistencia al usuario y Información de contacto del desarrollador, ingrese su correo electrónico.

    • Haga clic en Guardar y continuar.

  6. En el área de Permisos (Data access):

    • Haga clic en Agregar o quitar alcances (Add or remove scopes).

    • Desplácese hasta el fondo, al área de Agregar alcances manualmente, e ingrese las siguientes URLs separadas por comas (copie y pegue exactamente): https://www.googleapis.com/auth/dialogflow,https://www.googleapis.com/auth/cloud-language,https://www.googleapis.com/auth/cloud-translation,https://www.googleapis.com/auth/calendar

    • Haga clic en Agregar a la tabla, luego en Actualizar y finalmente en Guardar y continuar.

  7. En el área de Usuarios de prueba (Audience):

    • Haga clic en Add users (Agregar usuarios) y añada su correo electrónico de Google (el mismo con el que ha iniciado sesión).

    • Haga clic en Guardar y continuar.

    • Haga clic en PUBLICAR LA APLICACIÓN (PUBLISH APP). No es necesario completar el proceso de revisión de Google; déjelo en estado de revisión pendiente.

  8. Vaya a Menú izquierdo > API y servicios > Credenciales y haga clic en Crear credenciales.

    • Seleccione ID de cliente de OAuth.

    • En Tipo de aplicación, seleccione Aplicación web. Ingrese cualquier nombre.

    • En Orígenes de JavaScript autorizados, déjelo vacío.

    • En URI de redireccionamiento autorizados, ingrese la URL de redirección que encontrará en ZampiBot bajo: Configuración > Inteligencia Artificial > Google > Authorised redirect URI.

    • Haga clic en Crear.

  9. Copie el ID de cliente y el Secreto de cliente. Péguelos en los campos correspondientes en ZampiBot en: Configuración > Inteligencia Artificial > Dialogflow. Guarde los ajustes.

  10. Haga clic en el botón Configuración > Inteligencia Artificial > Google > Sincronizar en ZampiBot.

    • Inicie sesión con la misma cuenta de Google utilizada hasta ahora.

    • En la siguiente pantalla, haga clic en Continuar (si aparece una advertencia de seguridad, proceda indicando que confía en la aplicación ya que es suya).

    • Seleccione todos los permisos/alcances y haga clic en Continuar.

  11. Copie el Token de actualización (Refresh token) generado y péguelo en: Configuración > Inteligencia Artificial > Google > Refresh token.

  12. ¡Listo! Si desea activar el chatbot, marque la opción Dialogflow chatbot. Recuerde ingresar el ID del Proyecto o Nombre del Agente.

[!NOTE] Usuarios de Google Workspace: Vaya a https://admin.google.com/, haga clic en Control de sesiones de Google Cloud y establezca la "Política de reautenticación" en Nunca requerir reautenticación.


Dialogflow

La información a continuación es relevante para el uso de Dialogflow.

[!WARNING] ¡Advertencia! Dejaremos de dar soporte a Dialogflow a finales de 2025. Todas sus funciones estarán disponibles en ZampiBot a través de OpenAI. Por favor, utilice OpenAI en lugar de Dialogflow.

Obtener ID del Proyecto (Dialogflow ES)

  1. Inicie sesión en la consola de Dialogflow ES en dialogflow.cloud.google.com. Use la misma cuenta de Google de la sincronización.

  2. Haga clic en el icono de engranaje (ajustes) en la parte superior izquierda, junto al nombre del chatbot.

  3. Si no ha creado un chatbot, siga las instrucciones de "Crear un chatbot básico" más abajo.

  4. Copie el valor del Project ID.

  5. Importante: Asegúrese de elegir la región US / GLOBAL en la parte superior izquierda. Nuestro sistema no soporta "Mega Agents".

Obtener Nombre del Agente (Dialogflow CX)

  1. Inicie sesión en la consola de Dialogflow CX en dialogflow.cloud.google.com/cx/.

  2. Seleccione el proyecto y vaya a la página de agentes (Click en Agents > View all agents).

  3. Haga clic en el menú de opciones (tres puntos) del agente deseado y seleccione Copy name (Copiar nombre).

Ajustes Adicionales


Crear un chatbot básico

Si aún no tiene un chatbot, siga estas instrucciones. La gestión del bot se realiza enteramente en la plataforma de Dialogflow.

  1. Ingrese a la Consola de Dialogflow y cree un agente.

  2. En Google Project, seleccione el mismo proyecto que creó durante la sincronización manual.

  3. Añada una nueva Intent desde el menú izquierdo y ábrala.

  4. En el área de Frases de entrenamiento (Training phrases), añada las preguntas que el usuario podría hacer. Agregue tantas variaciones como sea posible.

    • Ejemplo: Si desea que el bot dé su dirección, añada: "¿cuál es su dirección?", "dirección", "¿dónde están ubicados?".

  5. En el área de Respuestas (Responses), añada la respuesta del bot como Text response.

  6. ¡Ha creado su primera interacción! Pruébelo desde el área de chat de ZampiBot.


Comportamiento (Acciones del Chatbot)

Las siguientes acciones permiten al chatbot interactuar con el sitio web y el sistema de forma autónoma en nombre del usuario.

Cómo configurar una acción

Para utilizar una acción, debe acceder a la consola de Dialogflow y seguir estos pasos:

  1. Edite una Intent (Intención) existente o cree una nueva.

  2. Desplácese hasta la sección de Responses (Respuestas).

  3. Añada una respuesta de tipo Custom Payload (Carga útil personalizada).

  4. Ingrese el código JSON utilizando la siguiente sintaxis general: { "NOMBRE-DE-ACCION": VALOR }


Lista de Acciones Disponibles

Copie y pegue los siguientes códigos en su Custom Payload según la función que desee activar:

Toma de control humana

Inicia el proceso de relevo a un agente humano y desactiva el chatbot para esa conversación.


{ "human-takeover": true }

Redireccionar

Redirige al navegador del usuario a la URL especificada.

  • Nueva pestaña: Añada "new-window": true para abrir el enlace en una pestaña nueva.


{ "redirect": "https://www.ejemplo.com", "new-window": true }

Abrir artículo

Abre automáticamente un artículo de la base de conocimientos. Reemplace ID con el ID numérico o slug del artículo.


{ "open-article": ID }

Transcripción

Genera la transcripción de la conversación actual como un archivo de texto y la descarga.

  • Enviar por correo: Cambie el valor a "email" para enviarla al correo del usuario.

  • Mensaje adjunto: Use el parámetro message para incluir un texto en el cuerpo del correo.


{ "transcript": "email", "message": "Aquí tienes tu copia de la conversación." }

Asignar etiquetas

Asigna una o más etiquetas a la conversación actual.


{ "tags": ["Ventas", "Urgente"] }

Cambiar departamento

Cambia o establece el departamento de la conversación y notifica a los agentes de dicho departamento. Reemplace ID con el ID del departamento.


{ "department": 1 }

Asignar agente

Asigna un agente específico a la conversación y le envía una notificación. Reemplace ID con el ID del agente.


{ "agent": 1 }

Enviar correo electrónico

Envía un correo electrónico al usuario o al agente activo.

  • Destinatario: Puede ser "active_user" (usuario) o "agents" (agentes).

  • Adjuntos: Siguen el formato ["nombre_archivo", "enlace_url"].


{ "send-email": { "recipient": "active_user", "message": "Gracias por contactarnos.", "attachments": [ ["factura.pdf", "https://sitio.com/factura.pdf"] ] } }

Actualizar interfaz de usuario

Fuerza al área de administración a actualizar los datos del usuario de la conversación activa. Se recomienda usar esto en combinación con otras acciones para ver los cambios en tiempo real (por ejemplo, tras actualizar un teléfono).


{ "update-user": true }

Archivar chat

Archiva la conversación actual y envía el mensaje de cierre (si esta función está activa en la configuración).


{ "archive-chat": true }

Actualizar detalles del usuario

Actualiza la información del perfil del usuario activo.

  • Campos estándar: Puede actualizar first_name, last_name, email, user_type, password.

  • Campos extra: Para actualizar detalles personalizados (como teléfono o dirección), use el objeto "extra". La sintaxis es "slug-del-campo": ["Valor", "Nombre visible"].

Ejemplo completo:


{ "update-user-details": { "email": "nuevo@email.com", "first_name": "Juan", "last_name": "Pérez", "extra": { "phone": ["+123456789", "Teléfono"], "city": ["Madrid", "Ciudad"] } } }

[!TIP] Para probar esto fácilmente, puede descargar un ejemplo de Intent, ir al área de Intents en Dialogflow, hacer clic en el menú de 3 puntos (arriba a la derecha) y seleccionar Upload Intent. Luego, pruebe enviando el mensaje "start" o "iniciar" al bot.

Actualizar idioma del usuario

Actualiza el idioma del perfil del usuario y del chatbot (si la función multilingüe está activa) para coincidir con el idioma detectado o solicitado en la frase del usuario.

  • Variable: El valor $language representa la entidad de idioma detectada por Dialogflow.


{ "update-user-language": "$language" }

Cumplimiento de Dialogflow

Los datos de cumplimiento enviados a la URL de su webhook son como se muestra a continuación:

{ "responseId": "4a58fc4f...", "queryResult": { "queryText": "fullfilment", "parameters": [], "allRequiredParamsPresent": true, "fulfillmentText": "Example", "fulfillmentMessages": [{ "text": { "text": ["Response"] } }], "outputContexts": [{ "name": "projects/schiocco...", "parameters": { "no-input": 0, "no-match": 0 } }], "intent": { "name": "projects/schiocco...", "displayName": "Fullfilment" }, "intentDetectionConfidence": 1, "languageCode": "en" }, "originalDetectIntentRequest": { "payload": { "support_board": { "conversation_id": "3002", "user_id": "3777" } } }, "session": "projects/example/agent/sessions/3777-3002" }

Los campos payload y session contienen el ID de usuario y el ID de conversación de ZampiBot.


Información sobre Dialogflow

Prioridad de OpenAI

Si OpenAI está habilitado, Dialogflow tiene prioridad sobre este. La API de OpenAI solo se utilizará si Dialogflow no logra encontrar una respuesta adecuada para la pregunta del usuario.

Entrenamiento y optimización del Chatbot

Lograr que su chatbot ofrezca respuestas correctas de manera consistente requiere tiempo. Para mejorar su rendimiento:

  • Entrenamiento continuo: Usted y sus agentes deben entrenar al bot incorporando nuevas variaciones de preguntas e Intents (Intenciones).

  • Edición rápida: Los agentes pueden añadir nuevos Intents o frases de entrenamiento desde el área de administración en tiempo real. Simplemente pase el cursor sobre un mensaje y haga clic en el icono de Dialogflow Intent.

  • Generación automática: Habilite Configuración > Inteligencia Artificial > OpenAI > Generar preguntas de usuario para añadir variaciones de preguntas y reescribir respuestas automáticamente.

  • Dialogflow CX: Las respuestas se añadirán al último flujo utilizado en la conversación; si no hay uno, se añadirán al flujo de inicio.

Solución de problemas de clasificación: Si el chatbot responde con Intents incorrectos:

  1. Vaya a Consola de Dialogflow > Configuración del chatbot > ML Settings.

  2. Aumente el ML CLASSIFICATION THRESHOLD a un número mayor (ej. 0.6).

  3. Verifique también la Confianza de detección de Intent.

Confianza de detección de Intent (Confidence)

Dialogflow asigna una puntuación a las posibles coincidencias (de 0.0 a 1.0).

  • Especifique un valor entre 0.1 y 1.0 en la configuración de ZampiBot.

  • Cualquier respuesta con una puntuación inferior al valor establecido será descartada.

  • Recomendación: Si utiliza Dialogflow junto con un chatbot de OpenAI entrenado con sus propios recursos, configure este valor en 0.81.

Base de Conocimientos (Knowledge Base)

Esta función está habilitada automáticamente y permite al chatbot buscar respuestas dentro de documentos (como PDF) o páginas web. Para crear su primera base de conocimientos, visite la documentación de Google Cloud.

Respuesta de Dialogflow

La respuesta completa en formato JSON de Dialogflow se guarda automáticamente en la base de datos, en la tabla sb_messages, columna payload.


Lógica Avanzada

Ignorar un Intent si faltan palabras clave

Para evitar respuestas incorrectas ante preguntas similares con sujetos diferentes, puede instruir al sistema para que ignore un Intent si no contiene palabras clave específicas:

  1. Entre en Dialogflow y edite el Intent.

  2. En las frases de entrenamiento, seleccione las palabras clave obligatorias y vincúlelas a una Entidad (nueva o existente).

  3. Bajo Actions and parameters, marque la casilla Required (Requerido).

  4. Añada un nuevo Prompt con el valor exacto: skip-intent.

  5. Guarde el Intent.

Adjuntos (Attachments)

  • Del usuario: Se envían a Dialogflow añadiendo las URLs de los archivos al mensaje.

  • Del chatbot: Para enviar adjuntos, añada una respuesta de Custom Payload con el siguiente JSON:


{ "attachments": [["nombre", "TU-ENLACE"], ["nombre", "TU-ENLACE"]]}


Mensajes Enriquecidos en Dialogflow

Para enviar mensajes enriquecidos (botones, listas, etc.):

  1. Ingrese el shortcode directamente en el campo TEXT RESPONSE.

  2. O bien, use una respuesta Custom Payload con: { "rich-message": "shortcode" }. (Nota: Si usa JSON, debe escapar las comillas dobles " con \" dentro del shortcode).

Respuestas de mensajes enriquecidos

Cuando un usuario interactúa (ej. hace clic en un botón):

  • Formato web: Se envía a Dialogflow como ID|respuesta.

    • Si el tipo es registro, email o seguimiento, los valores se envían como un array en la clave queryParams['payload'].

    • ID es el identificador del mensaje (atributo id="TU-ID"). Si no se define, se usa uno aleatorio.

  • Apps de mensajería (WhatsApp, etc.): La respuesta no contiene el ID del mensaje enriquecido. Debe utilizar Contextos en Dialogflow para saber qué Intent activar.

  • Bloquear respuesta: Para evitar que Dialogflow responda a una interacción de mensaje enriquecido, cree un Intent cuyo única "frase de entrenamiento" sea el ID del mensaje y déjelo sin respuesta definida.

Obtener datos de formularios (Registro, Email, Seguimiento)

  1. Active Configuración > Inteligencia Artificial > Google > Enviar detalles del usuario.

  2. En Dialogflow (Fulfillment), habilite Webhooks. Solo necesita la URL del archivo que recibirá los datos.

  3. Cree un Intent donde la frase de entrenamiento sea el ID del formulario:

    • Formulario de registro: registration

    • Formulario de seguimiento: sb-follow-up-form

    • Formularios de email: email

  4. Habilite el Fulfillment para ese Intent.

Encuesta Secuencial (Ejemplo)

Para encadenar preguntas, use el ID del mensaje enriquecido como la frase de entrenamiento del siguiente paso:

  1. Intent 1: Frase: ejemplo encuesta. Respuesta: [buttons id="test-encuesta-1" options="Software,Productos,Servicios" title="¿Tipo de negocio?"]

  2. Intent 2: Frase: test-encuesta-1 (El ID del anterior). Respuesta: [select id="sec-encuesta-2" options="Prioritario,Express" title="Método de envío"]

  3. Intent 3: Frase: sec-encuesta-2. Respuesta: ¡Gracias por completar la encuesta!.


Vinculación de Departamentos

Permite dirigir al usuario a un agente de Dialogflow específico según el departamento.

  • Obtenga los IDs de departamento en Configuración > Misceláneas > Departamentos.

  • Obtenga los IDs de proyecto en la configuración de sus agentes de Dialogflow.


Más Información Técnica

  • Mensajes de voz: Dialogflow soporta reconocimiento de voz. Para audios de WhatsApp y archivos .ogg, debe activar Configuración > Inteligencia Artificial > OpenAI > Reconocimiento de voz.

  • Activación vía API: Envíe un mensaje sin texto con el payload { "event": "activate-bot" }.

  • Datos enviados: ZampiBot envía conversation_id y user_id en el parámetro queryParams al detectar un intent.

  • Evento de bienvenida (CX): Cree un Event Handler e inserte Welcome como Custom Event.

  • Sincronización de artículos: Los artículos de ZampiBot se sincronizan automáticamente con la Knowledge Base de Dialogflow.

  • Cambio dinámico de agente: Use la variable JS SB_DIALOGFLOW_AGENT = "PROJECT_ID" para cambiar el agente predeterminado en el frontend.

  • Detección de bucle: Si el usuario repite el mismo mensaje y activa el mismo Intent, y OpenAI está activo, ZampiBot intentará usar OpenAI e ignorará a Dialogflow.

  • Variables en CX: Acceda al usuario y conversación en las condiciones de ruta usando $session.params.user_id y $session.params.conversation_id.


Chatbot y Traducción Multilingüe

Chatbot Multilingüe

La función ubicada en Inteligencia Artificial > Google > Multilingual verifica si existe un agente de Dialogflow configurado en el idioma del usuario y, de ser así, lo activa.

Para que esto funcione, el sistema debe conocer el idioma del usuario. Este se determina en el siguiente orden de prioridad:

  1. El detalle de idioma guardado en el perfil del usuario.

  2. El idioma del navegador del usuario. Nota: El idioma también puede ser identificado automáticamente mediante la función de Detección de idioma.


Traducción Automática (Agentes)

Esta función traduce automáticamente los mensajes del usuario al idioma del agente y los mensajes del agente al idioma del usuario en tiempo real.

Activación: Marque la opción en Configuración > Inteligencia Artificial > Traducción automática.

Requisitos:

  • Versión Cloud: Si Inteligencia Artificial > Google > Modo de sincronización está en Automático, funcionará sin configuración extra.

  • Versión Manual: Debe completar la sincronización y la configuración que se detalla a continuación.

Configuración Manual:

  1. Inicie sesión en Google Cloud Console y seleccione el proyecto de su agente.

  2. Busque y habilite la Cloud Translation API. (Servicio de pago con nivel gratuito).

  3. Habilite la facturación en Menú izquierdo > Facturación asociando un método de pago válido.

Información Adicional:

  • Los agentes ven el mensaje traducido, pero pueden ver el original haciendo clic en el menú del mensaje y seleccionando Ver mensaje original.

  • El idioma del agente se basa en su perfil o en el idioma del área de administración.

  • Las notificaciones también se traducen.

  • Excluir texto: Para evitar que una parte del texto se traduzca, enciérrela entre caracteres de acento grave (`) o triple acento grave (```).


Multilingüe vía Traducción (Chatbot)

La función en Configuración > Inteligencia Artificial > Multilingüe a través de la traducción traduce el mensaje del usuario al idioma predeterminado del chatbot (Dialogflow u OpenAI) para que este lo entienda, y luego traduce la respuesta del bot al idioma del usuario.

  • Alcance: Traduce mensajes enriquecidos, artículos, formularios de registro y notificaciones emergentes.

  • Optimización: Las traducciones se guardan en archivos para minimizar costos y mejorar la velocidad.

  • Importante: Si el inglés es uno de los idiomas soportados, el inglés debe ser el idioma predeterminado y los textos originales deben estar en inglés.

  • OpenAI: Si usa datos de entrenamiento, configure el idioma en Configuración > Inteligencia Artificial > OpenAI > Training Sources Language.


Detección de Idioma

Detecta el idioma de los mensajes del usuario y actualiza su perfil (y el agente de Dialogflow) automáticamente. Si no se soporta el idioma, muestra un mensaje de respaldo.

  • Variable: Puede usar {language_name} en el mensaje de respaldo.

  • Condiciones: El mensaje debe tener al menos 2 palabras. La detección solo se ejecuta en los primeros 2 mensajes de la conversación.

  • Con OpenAI: Si el chatbot de OpenAI está activo para preguntas generales, el mensaje de respaldo nunca se enviará, ya que OpenAI responderá en el idioma detectado.


#google-search

 

Búsqueda en Google (Google Search)

La función en Configuración > Inteligencia Artificial > Busqueda Google permite al chatbot buscar respuestas en la web en tiempo real.

Configuración

  1. Regístrese en Programmable Search Engine.

  2. Cree un motor de búsqueda.

    • Recomendación: Añada solo su sitio web y Wikipedia para evitar resultados irrelevantes. Deje desactivada la opción "Buscar en toda la web".

  3. Vaya a Edit search engine > Setup > Basic, copie el Search engine ID y péguelo en ZampiBot.

  4. Para obtener la clave API, visite Google Custom Search API y haga clic en Get a key.

Corrección Ortográfica

Si Dialogflow no encuentra una respuesta, esta función verifica si hay errores ortográficos. Si los encuentra, corrige el mensaje y vuelve a consultar a Dialogflow.

  • Tiene menor prioridad que la corrección de OpenAI, pero pueden trabajar juntas.

  • No requiere que la Búsqueda en Google esté activa para funcionar.

Entidades (Entities)

Analiza el mensaje para reconocer entidades como ciudades, eventos o fechas, ayudando a filtrar resultados inválidos de Google.

Configuración:

  1. En Google Cloud Console, seleccione su proyecto.

  2. Busque y habilite la Cloud Natural Language API.

  3. Asegúrese de que la facturación esté habilitada para el proyecto.

Información de Funcionamiento

  • La búsqueda se realiza solo si el chatbot no sabe la respuesta y el mensaje tiene más de 4 caracteres.

  • Si hay resultados, se activa el contexto de Dialogflow google-search. Este contiene el atributo link con la URL del resultado.

  • Puede crear un Intent que responda con ese enlace si el usuario dice algo como "cuéntame más" o "quiero saber más".

  • Es totalmente compatible con el chatbot de OpenAI.


TICKETS

Los siguientes ajustes están relacionados con la aplicación de Tickets. Esta aplicación permite a los usuarios crear conversaciones y enviar mensajes a través de una interfaz de usuario diferente a la del widget de chat tradicional.

Instalación

  1. Diríjase a Configuración > Apps.

  2. Simplemente haga clic en Activo.


Mostrar el área de tickets

A continuación se detalla cómo implementar la interfaz de tickets según su versión de ZampiBot.

Versión WordPress

Para mostrar los tickets, utilice el siguiente código corto (shortcode): [sb-tickets]

Puede insertar este shortcode en cualquier página, entrada (post) o tipo de publicación personalizada dentro de su sitio WordPress.

Versión Cloud

Para mostrar el área de tickets, incluya el código de inserción del chat habitual en su página y añada el atributo &mode=tickets al final de la URL del script.

Ejemplo de código:


<script id="chat-init" src="https://chatbot.zampisoft.com/account/js/init.js?id=65895623&mode=tickets"></script>
  • Método alternativo: puede mostrar el área de tickets insertando el código <script>SB_TICKETS = true;</script> en cualquier página que muestre el chat.


WHATSAPP

Los ajustes a continuación están relacionados con la integración de la aplicación de WhatsApp.

Instalación

  1. Vaya a Configuración > Apps.

  2. Simplemente haga clic en Activo.


WhatsApp Cloud API (Oficial)

Modo de sincronización automática

Disponible solo en la versión Cloud de ZampiBot.

  1. Haga clic en Sincronizar ahora y complete el procedimiento.

  2. Gestión de números: Para añadir nuevos números, visite el administrador de Facebook. Si añade números después de la sincronización inicial, deberá sincronizar nuevamente. Todos los números se cargarán automáticamente.

  3. Desactivar números: Puede eliminar números específicos desde Configuración > WhatsApp > Cloud API numbers.

Solución de problemas (Sync Auto):

  • Si al resincronizar no recibe el SMS/llamada, ingrese el último PIN recibido; debería funcionar.

  • Si no recibe mensajes en ZampiBot:

    • Haga clic en Reconectar y complete el proceso.

    • Verifique en Meta Business Suite que haya añadido un método de pago válido.

Modo de sincronización manual

Siga estos pasos para configurar la API oficial en su propio servidor:

  1. Cree una cuenta en developers.facebook.com o inicie sesión.

  2. Cree una nueva app. Seleccione Conectar con clientes a través de WhatsApp como caso de uso y elija su cuenta comercial.

  3. En ZampiBot, vaya a Configuración > WhatsApp > Cloud API > Secret key e ingrese una cadena de texto aleatoria (ej. "miclavesecreta").

  4. En Facebook Developers:

    • Vaya a Use cases > Connect with customers through WhatsApp > Customize.

    • Haga clic en Configuration.

    • En Callback URL, ingrese la URL que encontrará en ZampiBot bajo Configuración > WhatsApp > Cloud API > Configuration URL.

    • En Verify Token, ingrese la misma cadena aleatoria que puso en ZampiBot ("miclavesecreta").

    • Haga clic en Verificar y guardar.

  5. En Webhook Fields, suscríbase al evento messages.

  6. Pruebas:

    • Haga clic en API testing. Obtenga un número de prueba temporal.

    • Añada su número personal como destinatario para verificarlo.

    • Copie el Phone number ID y péguelo en ZampiBot: Configuración > WhatsApp > Cloud API numbers > Phone number ID.

    • Genere un Token de acceso temporal y péguelo en ZampiBot: Configuración > WhatsApp > Cloud API numbers > Token.

    • Envíe un mensaje de prueba desde Facebook y responda desde su WhatsApp personal; debería aparecer en ZampiBot.

Activación para producción (Token Permanente): Para que la integración funcione permanentemente sin caducar:

  1. Vaya a Configuración del Negocio de Facebook.

  2. Navegue a Usuarios > Usuarios del sistema. Cree un usuario administrador.

  3. Haga clic en Añadir Activos, seleccione su App y marque Control total.

  4. Vaya a Cuentas > Cuentas de WhatsApp, seleccione su cuenta, haga clic en Asignar personas y asigne al Usuario del Sistema con control total.

  5. Vuelva a Usuarios del sistema, seleccione el usuario creado y haga clic en Generar nuevo token.

    • Seleccione su App.

    • Establezca la caducidad en Nunca.

    • Marque los permisos: whatsapp_business_management, whatsapp_business_messaging, business_management.

  6. Copie el token generado y péguelo en ZampiBot: Configuración > WhatsApp > Cloud API numbers > Token.

[!WARNING] Si usa su número actual de WhatsApp Business en ZampiBot, dejará de funcionar en la app móvil de WhatsApp Business. Deberá completar un proceso de migración.


Configuración de Proveedores Externos

360dialog

  1. Cree una cuenta en 360dialog.

  2. En su panel, vaya a WhatsApp Accounts y genere una API key.

  3. Pegue la clave en Configuración > WhatsApp > 360dialog settings.

  4. Haga clic en Sincronizar ahora.

Twilio

  1. Cree una cuenta en Twilio.

  2. Obtenga su ACCOUNT SID y AUTH TOKEN y péguelos en Configuración > WhatsApp > Twilio settings.

  3. Configuración Sandbox:

    • Vaya a Messaging > Settings > WhatsApp sandbox settings.

    • En WHEN A MESSAGE COMES IN, pegue la URL de ZampiBot que encontrará en Configuración > WhatsApp > Twilio settings > Get configuration URL.

  4. Configuración Producción:

    • Compre un número de Twilio.

    • Cree un Messaging Service en Twilio (Messaging > Services).

    • Añada su número como remitente (Sender).

    • Copie el Service SID y péguelo en ZampiBot en el campo Sender.

[!NOTE] ZampiBot no soporta APIs no oficiales de WhatsApp. Solo funciona con Cloud API, 360dialog o Twilio.


#whatsapp-templates

 

Plantillas de Mensajes (Templates)

Según las políticas de WhatsApp, no puede enviar mensajes a usuarios que no le hayan escrito en las últimas 24 horas. Para contactarlos, debe usar una Plantilla de mensaje.

WhatsApp Cloud API

  1. Gestione sus plantillas en el Administrador de WhatsApp.

  2. En ZampiBot, vaya a Configuración > WhatsApp > Cloud API template fallback.

  3. Configuración de variables:

    • Idiomas: Ingrese los códigos de idioma soportados separados por comas (ej. es, en_US).

    • Header/Body variables: Ingrese los valores dinámicos separados por comas. Puede usar campos de combinación como {recipient_name}. El orden debe coincidir con los parámetros de su plantilla.

    • Botones: Si su plantilla tiene botones con URL dinámica, ingrese los enlaces. Si son estáticos, escriba skip_parameter.

Enviar plantilla a usuarios nuevos:

  1. Ingrese su ID de Cuenta Comercial en Configuración > WhatsApp > Cloud API numbers > Business Account ID.

  2. Vaya a la sección Usuarios de ZampiBot, seleccione los destinatarios y haga clic en el icono de WhatsApp en la esquina superior derecha.


Llamadas de WhatsApp

Permite iniciar llamadas de voz o video desde el panel de administración.

  1. Habilite las llamadas en el Administrador de WhatsApp (Settings > WhatsApp accounts > Settings).

  2. Cree una plantilla de tipo Calling permissions request (Solicitud de permiso de llamada) en Facebook.

  3. Ingrese el ID de la plantilla en Configuración > WhatsApp > Calls > Call permission template ID.

  4. Para llamar, abra el perfil de un usuario en ZampiBot y haga clic en el icono de teléfono o video.


Tienda en WhatsApp (WhatsApp Shop)

Muestre productos de su catálogo directamente en el chat.

  • Producto único:{catalog id="CATALOG_ID" product_id="PROD_ID"}

  • Múltiples productos:{catalog id="CAT_ID" product_id_1_1="P1" section_1="Titulo Sección" ...}

  • Webhook de Pedidos: Configure la URL para procesar pedidos en Configuración > WhatsApp > Order webhook.


Información Adicional

  • Ventana de 24 horas: Si intenta escribir a un usuario fuera de la ventana de 24 horas sin usar una plantilla, recibirá un error de "Re-engagement".

  • Mensajes Enriquecidos: ZampiBot soporta el envío de botones y listas a WhatsApp. Si usa menús de selección con más de 3 opciones, use el atributo whatsapp="Texto del menú" en el shortcode.

  • Chatbot: Totalmente compatible, incluyendo Toma de control humana y reconocimiento de voz (para audios de WhatsApp).

  • Limitaciones: Twilio tiene un límite de 1600 caracteres por mensaje. Se recomienda encarecidamente usar la API Oficial de Cloud API.



#messenger

 

MESSENGER

Aquí tiene la documentación completa para la integración de Messenger (Facebook e Instagram).

Instalación

  1. Vaya a Configuración > Apps.

  2. Simplemente haga clic en Activo.


Modo de sincronización automática

Recomendado para la versión Cloud.

  1. Haga clic en el botón de sincronización.

  2. Seleccione al menos 1 página de Facebook.

  3. Una vez completado, el sistema devolverá información que deberá verificar en Configuración > Messenger > Facebook pages.

¡Listo! Todos los mensajes nuevos enviados a las páginas de Facebook y cuentas de Instagram seleccionadas aparecerán en el área de administración de ZampiBot. (Nota: Solo se sincronizarán los mensajes nuevos recibidos tras la activación; los mensajes antiguos no se importarán).


Modo de sincronización manual

Siga estos pasos si necesita configurar la integración manualmente en su propio servidor:

  1. Cree una cuenta o inicie sesión en developers.facebook.com.

  2. Cree una nueva App:

    • Nombre la aplicación.

    • En Casos de uso, seleccione:

      • Manage messaging & content on Instagram (Gestionar mensajería y contenido en Instagram).

      • Engage with customers on Messenger from Meta (Interactuar con clientes en Messenger).

      • Manage everything on your Page (Gestionar todo en tu Página).

    • En la pestaña Negocio, seleccione "I don't want to connect a business portfolio yet" (No quiero conectar un portafolio de negocios todavía).

  3. Configuración de Messenger:

    • Vaya a Use cases > Engage with customers on Messenger from Meta > Customize.

    • Haga clic en Messenger API Setup.

    • En ZampiBot, establezca el Modo de sincronización en manual en Configuración > Messenger.

    • Copie la Callback URL desde Configuración > Messenger > Get configuration URL y péguela en Facebook.

    • Cree una cadena aleatoria (token) y péguela en Configuración > Messenger > Secret key. Use la misma cadena en el campo Verify Token de Facebook.

    • Campos del Webhook: Seleccione inbox_labels, message_deliveries, message_echoes, message_reactions, message_reads, messages, messaging_account_linking, messaging_handovers, messaging_optins, messaging_policy_enforcement, messaging_postbacks, messaging_referrals, feed.

  4. Generación de Tokens:

    • En la sección Generate access tokens, haga clic en Connect y seleccione las páginas a sincronizar.

    • En la columna Webhook Subscription, haga clic en Add Subscriptions y seleccione: messages, messaging_postbacks, messaging_optins, message_reads, feed, message_echoes.

    • En la columna Tokens, haga clic en Generate.

    • Copie el token y péguelo en ZampiBot: Configuración > Messenger > Facebook pages (en el campo Access Token).

    • Copie también el Page ID y Page Name de Facebook y péguelos en ZampiBot. Repita para cada página.

  5. Permisos:

    • Vaya a Use cases > Permissions and Features.

    • Añada: pages_manage_metadata, pages_messaging, pages_read_engagement, pages_show_list.

  6. Sincronización de Comentarios (Opcional):

    • Vaya a Use cases > Manage everything on your Page > Customize.

    • En Permisos, añada: pages_read_user_content, pages_manage_engagement.

  7. Sincronización de Instagram (Opcional):

    • Vaya a Use cases > Manage messaging & content on Instagram > Customize.

    • Haga clic en API setup with Instagram login.

    • Configure el Webhook con la misma URL y Token que Messenger.

    • Campos del Webhook:messages, messaging_postbacks, messaging_seen, messaging_handover, message_reactions, standby, comments.

    • Obtener Instagram ID: Use la siguiente URL en su navegador (reemplazando los datos): https://graph.facebook.com/FACEBOOK-PAGE-ID/?access_token=ACCESS-TOKEN&fields=instagram_business_account

    • Pegue el ID obtenido en Configuración > Messenger > Facebook pages > Instagram ID.

    • En Permisos, añada: instagram_basic, instagram_business_basic, instagram_manage_comments, instagram_manage_messages, instagram_business_manage_messages.

  8. Revisión: Haga clic en Publish y envíe su App a revisión para aprobar los permisos añadidos. (Nota: Nuestro soporte no cubre la asistencia para la aprobación de la App).


Vinculación de Instagram

Para vincular Instagram a su página de Facebook y ZampiBot:

  1. Vaya a la configuración de su Página de Facebook: Configuración > Cuentas vinculadas > Instagram.

  2. Haga clic en Conectar cuenta y complete el proceso.

  3. Vuelva a sincronizar Messenger con ZampiBot para actualizar los permisos.


Comentarios

Los comentarios en sus publicaciones de Facebook e Instagram aparecerán en ZampiBot y podrá responderlos como un chat normal.

  • DM for Comments: Permite enviar un mensaje directo automático a usuarios que comentan por primera vez en sus publicaciones. Deje el campo Post ID vacío para aplicarlo a todos los posts.

  • Chatbot: El chatbot funciona en comentarios, incluyendo la toma de control humana. Puede desactivarlo en Configuración > Messenger > Disable chatbot for comments.

  • Limitaciones: Los mensajes enriquecidos (imágenes, botones) no son compatibles en las respuestas a comentarios; solo texto.


ℹ️ Información Adicional y Solución de Problemas

  • No recibe mensajes de Instagram:

    • Verifique en la app móvil de Instagram: Configuración > Privacidad > Mensajes > Herramientas conectadas - Permitir acceso.

    • Su cuenta de Instagram debe ser Business (Negocios), no Creador ni Profesional estándar.

    • En Meta Business Suite, vaya a Usuarios > Personas, seleccione su cuenta de Instagram y asegúrese de tener todos los permisos activos.

  • No recibe mensajes de Facebook: Asegúrese de no tener activas respuestas automáticas nativas de Facebook (como el mensaje de bienvenida).

  • Mensajes duplicados / Bucle infinito: Si tiene dos instalaciones de ZampiBot conectadas a la misma cuenta, elimine el Instagram ID en una de ellas o use el botón Unsubscribe para desvincular el webhook.

  • Botón Unsubscribe: Elimina la suscripción del webhook de todas sus páginas. Útil para detener la recepción de mensajes.

  • Usuarios: Cada usuario de ZampiBot tiene solo 1 conversación de Facebook y 1 de Instagram.

  • Mensajes Enriquecidos: Se convierten automáticamente cuando es posible. Botones y listas solo soportan máximo 3 opciones y funcionan principalmente en la app móvil de Instagram.

  • Privacidad: Solo los mensajes privados llegan al inbox; las publicaciones en el muro no.

  • IA y Chatbot: Soportan detección de idioma, corrección ortográfica, traducción y búsqueda en Google.

  • Límites: Mensajes mayores a 1000 caracteres se truncarán. Solo se sincronizan mensajes nuevos.

Solicitud de eliminación de datos (Versión Cloud): Para eliminar sus datos de ZampiBot, haga clic en Configuración > Messenger > Unsubscribe y luego elimine su cuenta desde el panel de perfil.


TWITTER (X) 

Los siguientes ajustes están relacionados con la integración de la aplicación de Twitter.

Instalación

Siga estos pasos rigurosamente para conectar su cuenta de Twitter con ZampiBot:

  1. Registro: Regístrese en developer.twitter.com.

  2. Crear App: Cree su primera aplicación ingresando un nombre y haga clic en Get keys.

    • Copie la API Key (Consumer key) y la API Key Secret (Consumer secret).

    • Péguelas en Configuración > Twitter dentro de ZampiBot.

  3. Solicitar Acceso Elevado: Solicite el acceso "Elevated" desde este enlace. Haga clic en Apply for Elevated y complete el formulario de la siguiente manera:

    • En el área "In your words" y en "Will your app use Tweet, Retweet, Like, Follow, or Direct Message functionality?", ingrese el siguiente texto (en inglés): I need access to the Account Activity API to start receiving Twitter Direct Messages to my chat software (ZampiBot) and to reply to them directly.

    • Desactive todos los demás campos respondiendo No a preguntas como: "¿Planea analizar datos de Twitter?", "¿Planea mostrar Tweets fuera de Twitter?", "¿Su producto hará disponible información a una entidad gubernamental?".

    • Espere unos días a que Twitter revise y apruebe el acceso (recibirá un correo electrónico).

  4. Entorno de Desarrollo: Una vez tenga el acceso Elevado, entre al panel de desarrolladores.

    • Vaya a Menú izquierdo > Products > Premium > Dev environments.

    • Bajo Account Activity API / Sandbox, haga clic en Set up dev environment.

    • En Dev environment label, ingrese sb (o el mismo valor que haya ingresado en ZampiBot bajo Configuración > Twitter > Synchronization > Dev environment label).

  5. Autenticación: Ingrese a la configuración de su app desde Menú izquierdo > Projects & Apps > Su Proyecto > Su App.

    • Bajo User authentication settings, haga clic en Set up y active OAuth 1.0a.

    • En App permissions, marque la opción Read and write and Direct message (Lectura, escritura y Mensajes directos).

    • En Callback URI / Redirect URL, ingrese la URL que obtendrá en ZampiBot bajo Configuración > Twitter > Get callback URL.

    • En Website URL, ingrese la URL de su sitio web.

  6. Tokens de Acceso: Ingrese al área de claves desde Menú izquierdo > Projects & Apps > Su Proyecto > Su App > Keys and tokens.

    • Bajo Authentication Tokens, genere el Access Token and Secret.

    • Copie y pegue ambos valores en Configuración > Twitter en ZampiBot.

  7. Nombre de Usuario: Ingrese su nombre de usuario de Twitter en Configuración > Twitter > Your username.

    • Obténgalo de su perfil (el nombre que comienza con @ o la parte final de la URL, ej: https://twitter.com/ZampiBot -> ZampiBot).

  8. Suscripción: Guarde los ajustes en ZampiBot y haga clic en el botón Configuración > Twitter > Subscribe.

¡Listo! Todos los mensajes directos enviados a su cuenta de Twitter serán recibidos en ZampiBot.


Información Adicional



TELEGRAM

Los siguientes ajustes están relacionados con la aplicación de Telegram.

Instalación

  1. Desde Configuración > Apps, haga clic en Telegram e ingrese su clave de licencia para instalar y activar la aplicación. Más detalles aquí. Si tiene la versión Cloud, haga clic en Activo.

  2. Una vez instalada la aplicación, visite https://t.me/botfather.

  3. Si ya ha creado un bot de Telegram en el pasado, escriba el comando /mybots, abra su bot y haga clic en API token.

  4. Si nunca ha creado un bot de Telegram antes, escriba el comando /newbot para crear un nuevo bot. El BotFather le pedirá un nombre y un nombre de usuario; ingréselos y genere el token de autenticación. Más detalles en [suspicious link removed].

  5. Copie el token y péguelo en ZampiBot > Telegram > Token, luego haga clic en Sincronizar ahora. Su sitio web debe usar HTTPS (certificado SSL), HTTP no es compatible.

  6. Ha terminado. Todos los mensajes enviados a su bot de Telegram aparecerán en el área de administración de conversaciones de Support Board.

Más información

#telegram-notifications

 

Notificaciones

Los agentes pueden ser notificados a través de Telegram cuando llega un nuevo mensaje.

Las notificaciones se envían solo cuando es necesario, de acuerdo con los otros ajustes de notificación. Habilite Configuración > Telegram > Notificaciones > Todos los mensajes para recibir siempre notificaciones de todos los mensajes.

Activación

  1. Navegue a Configuración > Telegram > Notificaciones y haga clic en Activar.

  2. Ingrese el nombre del canal de Telegram en Configuración > Telegram > Notificaciones > Nombre del canal. El nombre debe coincidir exactamente con el nombre de su canal de Telegram. Este valor debe guardarse antes de crear el canal.

  3. Abra Telegram en su teléfono o a través de la aplicación web y cree un nuevo canal utilizando el nombre definido anteriormente.

  4. Después de crear el canal, edite su configuración y agregue el bot de Telegram sincronizado con Support Board como administrador.


VIBER

Los siguientes ajustes están relacionados con la aplicación Viber.

Instalación

  1. Desde Configuración > Apps, haga clic en Activo.

  2. Cree el bot en https://partners.viber.com/account/create-bot-account.

  3. Copie el token y péguelo en ZampiBot > Viber > Token, luego haga clic en Sincronizar ahora. Su sitio web debe usar HTTPS (certificado SSL), HTTP no es compatible.

  4. Ha terminado. Todos los mensajes enviados a su bot de Viber aparecerán en el área de administración de conversaciones de ZampiBot

Más información


SLACK

Los siguientes ajustes están relacionados con la aplicación Slack.

Instalación

  1. Desde Configuración > Apps, haga clic en Activo.

  2. Una vez instalada la aplicación, vaya a Configuración > Slack, haga clic en el botón Sincronizar ahora y siga las instrucciones.

¿Tiene problemas?

La sincronización de Slack puede no ser exitosa por varias razones; a continuación se presentan las más comunes:

Descripción del problema Solución
Puede recibir mensajes en Slack, pero no puede enviar mensajes desde Slack a ZampiBot Navegue a /zampibot/apps/slack/post.php desde su navegador. Además, en Configuración del espacio de trabajo > Permisos, debe permitir que cualquiera cree canales públicos. Si tiene más problemas, comuníquese con el equipo de soporte de Slack en https://api.slack.com/support.
La sincronización de Slack no funciona Verifique nuevamente si eligió o no un canal público de Slack cuando intentó sincronizar Slack. Si no lo hizo, intente sincronizar Slack una vez más, esta vez eligiendo un canal público en su lugar. El canal general es una buena opción.

Archivar canales manualmente

Para archivar un canal en Slack, siga estos pasos:

  1. Abra el canal de Slack que desea archivar.

  2. En la parte superior derecha, haga clic en el icono de engranaje y seleccione Opciones adicionales.

  3. Haga clic en el icono de información en el área superior derecha de la pantalla, luego haga clic en el icono Más, y luego haga clic en Opciones adicionales.... Haga clic en Archivar este canal.

Vinculación de departamentos

Si la opción Configuración > Slack > Department linking está activa, cuando una conversación en ZampiBot se asigna a un departamento, se envía un nuevo mensaje al canal de Slack vinculado, informando a los usuarios de Slack que ha comenzado una nueva conversación e invitándolos a unirse al canal de Slack dedicado al usuario. Sin embargo, solo se puede acceder a la conversación completa en el canal de Slack dedicado del usuario específico.

Campos de usuario

La opción Configuración > Slack > User fields le permite elegir qué detalles del usuario incluir en el mensaje enviado al canal principal cuando un nuevo usuario envía el primer mensaje. Puede incluir el slug de sus detalles de usuario personalizados o los siguientes slugs: browser, browser_language, location, email, user_type, token, creation_time, country_code, current_url, os, city, address, postal_code, phone, birthdate, company, timezone, website.

Información


LINE

Los siguientes ajustes están relacionados con la aplicación LINE.

Instalación

  1. Desde Configuración > Apps, haga clic en Activo.

  2. Inicie sesión en https://developers.line.biz/console/ o cree una nueva cuenta.

  3. Cree un nuevo Provider y luego un nuevo Messaging API channel, seleccione Messaging API como tipo de canal.

  4. Desde el área de Basic settings del canal, copie Channel secret y péguelo en ZampiBoot > Configuración > Line > Synchronization > Channel secret.

  5. Desde el área de Messaging API del canal, genere un Channel access token (long-lived), cópielo y péguelo en Zampibot > Configuraciones > Line > Sincronización > Access token.

  6. Ingrese su URL de Webhook en Webhook URL y haga clic en Verify. Obtenga la URL de Webhook en Zampibot > Configuaración > Line > Synchronization > Webhook URL.

  7. Habilite Use webhook.

  8. Escanee el código QR con su aplicación móvil LINE para comenzar a escribir en su canal.

  9. Desactive la configuración Auto-reply messages.

  10. Ha terminado. Todos los mensajes enviados a su cuenta de bot de LINE aparecerán en el área de administración de conversaciones de Zampibot.

Más información


WECHAT

Los siguientes ajustes están relacionados con la aplicación WeChat.

Instalación

  1. Desde Configuración > Apps, haga clic en Activo.

  2. Visite https://mp.weixin.qq.com/... y registre una Service account.

  3. Después del registro, ingrese al área de Official accounts y desde el menú de la izquierda haga clic en Settings and development > WeChat verification. Debe completar la verificación; toma algunas semanas y cuesta USD 99, o CNY 300 para entidades chinas.

  4. Desde el menú de la izquierda, haga clic en Settings and development > Basic configuration y copie Developer ID (App ID) y Developer Password (App Secret). Pegue la información en Zampibot > Configuración > WeChat.

  5. Desde el menú de la izquierda, haga clic en Settings and development > Basic configuration y complete la configuración del servidor (服务器配置(已启用)). En Server Address (URL) ingrese la URL que obtiene de Zampibot > Configuración > WeChat > Synchronization > Get configuration URL. En Token inserte cualquier valor que desee; el mismo valor debe ingresarse en Zampibot > Configuración > WeChat > Token.

  6. Ha terminado. Todos los mensajes enviados a su cuenta de WeChat aparecerán en el área de administración de conversaciones de ZampiBot.

Más información


ZALO

Los siguientes ajustes están relacionados con la aplicación Zalo.

Instalación

  1. Desde Configuración > Apps,  haga clic en Activo.

  2. Regístrese en https://developers.zalo.me/ y cree una nueva App. Ingrese la información requerida y guarde.

  3. Copie el Application ID y la Application secret key de la aplicación que acaba de crear y péguelos en Zampibot > Configuración > Synchronization > Zalo.

  4. Desde el menú de la izquierda, haga clic en Webhooks y configure la URL; obtenga la URL de Zampibot > Configuración > Zalo > Synchronization > Webhook URL.

  5. Desde el menú de la izquierda, haga clic en Webhooks, copie la OA Secret Key y péguela en Zampibot > Configuración > Zalo > Synchronization > OA secret key.

  6. Desde el menú de la izquierda, haga clic en Webhooks y habilite los siguientes eventos de webhook: user_send_location, user_send_image, user_send_link, user_send_text, user_send_sticker, user_send_gif, user_received_message, user_seen_message, oa_send_text, oa_send_image, oa_send_list, oa_send_gif, user_send_audio, user_send_video, user_send_file, user_reacted_message, user_received_message.

  7. Desde el menú de la izquierda, haga clic en Official Account > OA Management y vincule su Cuenta Oficial.

  8. Desde el menú superior, haga clic en Tools > API Explorer o vaya a https://developers.zalo.me/tools/explorer/. Como Access token type seleccione OA Access Token, haga clic en Get Access Token y seleccione su Cuenta Oficial. Copie el Refresh token y péguelo en Zampibot > Configuración > Zalo > Synchronization > Refresh token. Más detalles aquí.

  9. Desde el menú de la izquierda, haga clic en Role y agregue un usuario de prueba como administrador. Usará este usuario para enviar mensajes a su Cuenta Oficial de Zalo y probar la integración.

  10. Desde el menú de la izquierda, haga clic en Sign up to use API > Official Account API, habilite User Management y haga clic en Submit for review.

  11. Ha terminado. Todos los mensajes enviados a su cuenta oficial de Zalo aparecerán en el área de administración de conversaciones de ZampiBot.

Más información



ZENDESK

Los siguientes ajustes están relacionados con la aplicación Zendesk.

Instalación

  1. Desde Configuración > Apps, haga clic en Zendesk e ingrese su clave de licencia para instalar y activar la aplicación. Más detalles aquí. Si tiene la versión Cloud, haga clic en Activo.

  2. Obtenga el dominio de la URL de su área de administración de Zendesk; copie la primera parte de la URL: https://dominio.zendesk.com/. Por ejemplo, el dominio de https://zampibot.zendesk.com/agent/get-started/ticketing-system/ticketing-intro es zampibot.

  3. Obtenga la clave API (API key) desde Menú izquierdo > Admin > Canales > API > Configuración (Left menu > Admin > Channels > API > Settings). Haga clic en Agregar token de API (Add API token).

  4. El correo electrónico es el correo de su cuenta de Zendesk.

Más información

  • Los tickets convertidos por ZampiBot se sincronizan automáticamente cuando se envían y reciben nuevos mensajes en ZampiBot, y se vinculan a un usuario de Zendesk existente si lo hay; de lo contrario, se crea un nuevo usuario de Zendesk.

  • ZampiBot vincula a los usuarios de Zendesk con los usuarios de ZampiBot a través del correo electrónico o número de teléfono.



Créditos

Los créditos se utilizan únicamente en  ZampiBot. Los créditos son utilizados por las siguientes funciones, solo en el modo de sincronización Automático.

El modo de sincronización Manual no utiliza créditos. Si no desea utilizar créditos, puede usar el modo de sincronización Manual y sus propias claves API.

Funciones que consumen créditos:

Puede cambiar el modo de sincronización en cualquier momento desde Configuración > Inteligencia Artificial > OpenAI > Sync mode o Configuración > Inteligencia Artificial > Google > Sync mode.


Precios

Los créditos deben adquirirse desde https://chatbot.zampisoft.com/account/?tab=membership. A continuación se detallan los costos de las funciones que utilizan créditos:


Información

Aquí tiene la documentación técnica completa para ZampiBot, traducida al español y adaptada con el formato y estilo solicitados.


/manual-de-usuario#pwa

 

Progressive Web App (PWA)

El área de administración de ZampiBot es una PWA (Aplicación Web Progresiva), lo que significa que puede instalarla en su escritorio, Mac, iPhone o dispositivos móviles y utilizarla como una aplicación totalmente funcional.

[!NOTE]

Esta función está optimizada para Google Chrome y Safari. Y es compatible con todas las versiones de ZampiBot.

Instalación en Escritorio (Desktop)

  1. Ingrese a su área de administración.

  2. Haga clic en el icono + ubicado en la parte superior derecha de la barra de URL de su navegador Chrome.

Instalación Móvil (Android y Windows)

  1. Ingrese a su área de administración utilizando Google Chrome.

  2. Abra el menú de configuración del navegador.

  3. Desplácese hacia abajo y toque Agregar a la pantalla principal (Add to Home screen).

  4. Confirme tocando Agregar.

Instalación Móvil (iPhone o Mac)

  1. Ingrese a su área de administración utilizando Safari.

  2. Presione el botón Compartir y seleccione Agregar a inicio (Add to Home Screen) en el menú emergente.

  3. Toque Agregar en la esquina superior derecha para finalizar la instalación.

Personalización: Cambiar icono y nombre de la PWA

  1. Descargue el archivo manifest.json proporcionado.

  2. Edítelo reemplazando:

    • YOUR NAME: Con el nombre de su marca.

    • YOUR NAME DESCRIPTION: Con una descripción de su elección.

    • example.png: Con la URL de su icono (debe ser de 512x512px).

  3. Mueva el archivo editado a la carpeta de instalación de ZampiBot donde se encuentra el archivo admin.php.

    (Nota: Nuestro soporte no incluye asistencia para la edición de archivos; si requiere ayuda, puede contratar nuestros servicios).


Atajos de Teclado

Los atajos de teclado del área de administración están habilitados tanto en PC como en MAC:

Atajo Descripción
ENTER o ESPACIO Confirma o cierra una alerta de diálogo; equivale a hacer clic en OK.
ESC o CANCEL Rechaza una alerta de diálogo y la cierra. Cierra un lightbox.
SHIFT + ENTER o CTRL + ENTER Añade un salto de línea en un mensaje (solo editor de administración).
CANCEL En el área de conversaciones, archiva o elimina una conversación.
CTRL + FLECHA ARRIBA/ABAJO Navega entre las conversaciones de la lista.
CTRL + FLECHA DERECHA/IZQUIERDA Navega entre los usuarios en el área de usuarios.
CTRL + V Pega una imagen del portapapeles y la envía como mensaje.
CTRL + Clic izquierdo Selecciona múltiples conversaciones para realizar acciones en masa (archivar, eliminar, marcar como leído/no leído, etc.).

Parámetros de URL

Chat Front-end (Widget)

Añada estos parámetros a cualquier URL de su sitio web que muestre el chat:

Área de Administración

Añada estos parámetros a su URL de administración (ej. admin.php):


Calendly

Siga estos pasos para enviar invitaciones de reserva de Calendly a través del chat:

  1. Cree un tipo de evento en Calendly.

  2. Haga clic en Compartir y copie la URL.

  3. Utilice un mensaje enriquecido de tipo botón en el chat de ZampiBot.

  4. Incluya el atributo success para personalizar el mensaje de confirmación tras la reserva.

Ejemplo de código corto:

[button link="https://calendly.com/usuario/sb" name="Agendar reunión" success="¡Gracias! Tu reunión ha sido programada."]


Zapier

Integración Manual (Todas las versiones)

La integración se basa en los Webhooks de ZampiBot. Cada webhook actúa como un disparador (trigger) en Zapier.

  1. Crear App en Zapier:

  2. Configurar Trigger:

    • Vaya a Triggers > Add Trigger.

    • En API Configuration, elija REST Hook como tipo de disparador.

    • Guarde los cambios.

  3. Crear un Zap:

    • Vaya a sus Zaps y cree uno nuevo. Busque la app que acaba de crear.

    • Seleccione su evento de disparo.

    • Copie la Webhook URL proporcionada por Zapier.

  4. Configurar en ZampiBot:

    • Vaya a Configuración > Misceláneas > Webhooks > URL.

    • Pegue la URL de Zapier, active los webhooks y guarde.

  5. Probar y Filtrar:

    • Realice una acción en ZampiBot (enviar mensaje) para probar el disparador en Zapier.

    • Importante: Añada un paso de Filtro en Zapier. Como ZampiBot envía todos los webhooks a todos los Zaps, debe filtrar para que el Zap continúe solo si existe la variable deseada (ej. variable message para mensajes).

[!TIP] Múltiples Zaps: Para usar múltiples webhooks, añada los IDs de los Zaps separados por comas al final de la URL base en la configuración de ZampiBot. Ejemplo:https://hooks.zapier.com/hooks/catch/10352851/bbad21f,aaaa66t/


🔒 Seguridad

La seguridad es crítica aquí en ZampiBot. Trabajamos con expertos en seguridad que realizan auditorías periódicas. Implementamos continuamente las últimas tecnologías de seguridad y nos mantenemos actualizados sobre las amenazas más recientes. A continuación, encontrará algunas de las medidas de seguridad que se han implementado en ZampiBot.

Bloqueo de IP (IP Ban)

ZampiBot permite un máximo de 10 intentos fallidos de inicio de sesión dentro de una hora. En caso de que un usuario, administrador o agente exceda este límite, no podrá acceder a su cuenta ni al área de administración durante un período de 1 hora. Este mecanismo de bloqueo se basa en la dirección IP del usuario y sirve para disuadir ataques de fuerza bruta destinados a descubrir credenciales de acceso.

Si encuentra el error "Too many login attempts. Please retry again in a few hours." (Demasiados intentos de inicio de sesión. Por favor, inténtelo de nuevo en unas horas), tiene dos opciones:

  1. Esperar unas horas.

  2. Contactar al equipo de soporte de ZampiSoft.

Protección contra inyección XSS

Para prevenir ataques de inyección XSS (Cross-Site Scripting), todas las entradas de usuario sensibles se someten a un proceso de sanitización (limpieza de código malicioso).

Protección contra CSRF

Para prevenir ataques de falsificación de solicitudes entre sitios (Cross-Site Request Forgery o CSRF), todas las solicitudes se validan verificando la cookie de inicio de sesión y la cadena de inicio de sesión del lado del cliente.

Terminación de sesiones activas al actualizar usuario

Cada vez que se cambia la contraseña o los detalles de un administrador o agente, todas las sesiones activas se cierran automáticamente cuando se ejecutan operaciones sensibles o después de 1 hora.

Cifrado AES de 256 bits

Utilizamos cifrado AES de 256 bits para encriptar datos sensibles, como los datos de inicio de sesión de sesiones activas.

Protección de contraseña por nombre de archivo

ZampiBot asegura que todos los archivos subidos sean renombrados con una cadena alfanumérica aleatoria antepuesta al nombre original del archivo. Esto evita el descubrimiento de la URL y la descarga no autorizada de los archivos subidos. Nota: Para que esta función funcione correctamente, su servidor debe prohibir el listado de directorios (directory listing).

Conexiones cifradas MySQL

Para configurar ZampiBot y MySQL para usar conexiones cifradas, edite el archivo config.php de ZampiBot y agregue las siguientes constantes: SB_DB_CERTIFICATE_PATH, SB_DB_CERTIFICATE_CLIENT_KEY, SB_DB_CERTIFICATE_CLIENT, SB_DB_CERTIFICATE_CA. Ingrese los valores apropiados para cada constante.


#performance

 

🚀 Rendimiento

ZampiBot es uno de los sistemas de soporte más rápidos del mercado. El tamaño de sus archivos JavaScript y CSS es significativamente menor que el de la mayoría de los competidores, lo que garantiza tiempos de carga más rápidos. El rendimiento del lado del servidor es igualmente impresionante. El sistema es extremadamente ligero, construido sin frameworks ni código innecesario. Es modular, minimalista y totalmente optimizado para el máximo rendimiento.

Sin embargo, puede mejorar aún más el rendimiento desde: Configuración > Misceláneas > Optimización de rendimiento.

A continuación se describe cada ajuste de optimización disponible:


Personalización

Puede personalizarla utilizando la API de JavaScript y la Web API, o mediante JavaScript y CSS personalizados. El widget de chat no utiliza un iframe, por lo que puede personalizarlo fácilmente con JavaScript y CSS directos.


🤝 Contrátenos

Si desea que personalicemos ZampiBot para usted, por favor contáctenos y envíenos sus requisitos. Le proporcionaremos un presupuesto basado en la complejidad del trabajo.

Uso de Apis

Uso de Apis

WEB API

Configuración y uso

La Web API proporciona una colección de métodos HTTP que sustentan la mayoría de las funciones de ZampiBot. Para comenzar a usar la Web API, siga el tutorial a continuación.

Uso usuario

Realice una llamada POST al archivo include/api.php de su instalación de ZampiBot. Puede utilizar el siguiente código para realizar las llamadas:

PHP

function zampibot_api($query) {
    $ch = curl_init('YOUR-DOMAIN/chatbot.zampisoft.com/include/api.php');
    $parameters = [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_USERAGENT => 'Support Board',
            CURLOPT_POST => true,
            CURLOPT_CONNECTTIMEOUT => 5,
            CURLOPT_POSTFIELDS => http_build_query(array_merge(['token' => 'YOUR-TOKEN'], $query))
    ];
    curl_setopt_array($ch, $parameters); 
    $response = curl_exec($ch);
    curl_close($ch);
    return json_decode($response, true);
}

Ejemplo de uso: zampibot_api(['function' => 'get-user', 'user_id' => 123]);

La variable $response contendrá la respuesta en formato JSON. Puede añadir nuevos argumentos en el array de la consulta: ['token' => '', 'function' => '', 'argument-name' => 'value', ...].

Reemplace las siguientes cadenas con los valores correctos:

Información


👥 WEB API: Usuarios

Métodos para gestionar usuarios, agentes y administradores.

get-user

Devuelve los detalles de un usuario.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": {
        "id": "123456",
        "first_name": "John",
        "last_name": "Doe",
        "email": "johon@example.com",
        "profile_image": "https://chatbot.zampisoft.com/user.svg",
        "user_type": "visitor",
        "creation_time": "2020-05-12 14:28:57",
        "last_activity": "2020-05-12 14:28:57",
        "department": null,
        "token": "a521773c5a566a251c3fb00e93162b20ff955b12",
        "password": "",
        "details": [
            {
                "slug": "location",
                "name": "Location",
                "value": "New York, United States"
            },
            ...
        ]
    }
}

Devuelve {"success":true, "response":false} si no se encuentra el usuario.


get-user-by

Busca un usuario con los detalles especificados y lo devuelve.

Argumentos

Respuesta

JSON

{
    "id": "881",
    "first_name": "Don",
    "last_name": "John",
    "email": "example@example.com",
    "user_type": "visitor",
    "department": null
 }

Devuelve {"success":true, "response":false} si no se encuentra el usuario.


get-user-extra

Devuelve los detalles adicionales de un usuario.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [
        {
            "slug": "browser",
            "name": "Browser",
            "value": "Chrome"
        },
        ...
    ]
}

Devuelve {"success":true, "response":[]} si no se encuentra el usuario.


get-user-language

Devuelve el código de idioma activo utilizado por el usuario. Por defecto, es el idioma del navegador del usuario.

Argumentos

Respuesta El código de idioma. Ejemplos: es, it. Devuelve false si el código es en o no se encuentra.


get-users

Devuelve los detalles de todos los usuarios.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [
        {
            "id": "880",
            "first_name": "User",
            "last_name": "#29938",
            "email": null,
            "profile_image": "https://chatbot.zampisoft.com/user.svg",
            "user_type": "visitor",
            "creation_time": "2020-05-13 08:58:18",
            "last_activity": "2020-05-13 09:07:39",
            "department": null,
            "token": "6d969f64f5ed6263714b9b39f3d3700b66f16820"
        },
        {
            "id": "879",
            "first_name": "User",
            "last_name": "#86773",
            "email": null,
            "profile_image": "https://chatbot.zampisoft.com/user.svg",
            "user_type": "visitor",
            "creation_time": "2020-05-13 08:38:41",
            "last_activity": "2020-05-13 08:58:12",
            "department": null,
            "token": "2e5064670707d06b661d04353f4a462ec927f19a"
        }
        ...
    ]
}

get-new-users

Devuelve los usuarios creados después de la fecha o ID proporcionado.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [
        {
            "id": "880",
            "first_name": "User",
            "last_name": "#29938",
            "email": null,
            "profile_image": "https://chatbot.zampisoft.com/user.svg",
            "user_type": "visitor",
            "creation_time": "2020-05-13 08:58:18",
            "last_activity": "2020-05-13 09:07:39",
            "department": null,
            "token": "6d969f64f5ed6263714b9b39f3d3700b66f16820"
        },
        {
            "id": "879",
            "first_name": "User",
            "last_name": "#86773",
            "email": null,
            "profile_image": "https://chatbot.zampisoft.com/user.svg",
            "user_type": "visitor",
            "creation_time": "2020-05-13 08:38:41",
            "last_activity": "2020-05-13 08:58:12",
            "department": null,
            "token": "2e5064670707d06b661d04353f4a462ec927f19a"
        }
        ...
    ]
}

get-online-users

Devuelve los usuarios en línea, incluyendo agentes.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [
        {
            "id": "881",
            "first_name": "Don",
            "last_name": "John",
            "email": null,
            "profile_image": "https://chatbot.zampisoft.com/user.svg",
            "user_type": "visitor",
            "creation_time": "2020-05-13 09:18:59",
            "last_activity": "2020-05-13 09:32:34",
            "department": null,
            "token": "e435a5c67f4276cdb9c6fc19b7c015990ffc3268"
        },
        {
            "id": "880",
            "first_name": "User",
            "last_name": "#29938",
            "email": null,
            "profile_image": "https://chatbot.zampisoft.com/user.svg",
            "user_type": "visitor",
            "creation_time": "2020-05-13 08:58:18",
            "last_activity": "2020-05-13 09:32:28",
            "department": null,
            "token": "6d969f64f5ed6263714b9b39f3d3700b66f16820"
        }
        ...
    ]
}

get-users-with-details

Devuelve un array con los IDs y detalles de los usuarios que tienen los detalles solicitados.

Argumentos

Respuesta

JSON

{
    "email": [
        {
            "id": 4561,
            "value": "albert@example.com"
        },
        {
            "id": 98436,
            "value": "jessica@example.com"
        },
        ...
    ],
    "phone": [
        {
            "id": 12563,
            "value": "+4462367136"
        },
        {
            "id": 778956,
            "value": "+4462999345"
        },
        ...
    ],
    ...
}

get-agent

Devuelve los detalles de un agente o administrador.

Argumentos

Respuesta

JSON

{
   "success": true,
   "response": {
       "id": "123456",
       "first_name": "John",
       "last_name": "Doe",
       "email": "johon@example.com",
       "profile_image": "https://chatbot.zampisoft.com/user.svg",
       "user_type": "agent",
       "creation_time": "2020-05-12 14:28:57",
       "last_activity": "2020-05-12 14:28:57",
       "department": null,
       "token": "a521773c5a566a251c3fb00e93162b20ff955b12",
       "password": "",
       "details": [
           {
               "slug": "location",
               "name": "Location",
               "value": "New York, United States"
           },
           {
               "slug": "country_code",
               "name": "Country code",
               "value": "America/New_York"
           }
           ...
       ]
   }
                                }

get-agents-ids

Devuelve un array con los IDs de los Agentes.

Argumentos

Respuesta [881, 153, ...]


get-user-from-conversation

Devuelve el ID y correo electrónico del usuario, o del último agente, de la conversación dada.

Argumentos

Respuesta

JSON

{
  "id": "123456",
  "email": "email@example.com"
}

agents-online

Verifica si al menos un agente o administrador está en línea.

Respuesta

JSON

{
    "success": true,
    "response": true
}

Devuelve true si hay agentes o admins en línea, o false si todos están desconectados.


search-users

Devuelve los usuarios que coinciden con la búsqueda.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [
        {
            "id": "881",
            "first_name": "Don",
            "last_name": "John",
            "email": null,
            "profile_image": "https://board.support/user.svg",
            "user_type": "visitor",
            "creation_time": "2020-05-13 09:18:59",
            "last_activity": "2020-05-13 09:32:34",
            "department": null,
            "token": "e435a5c67f4276cdb9c6fc19b7c015990ffc3268"
        },
        {
            "id": "880",
            "first_name": "User",
            "last_name": "#29938",
            "email": null,
            "profile_image": "https://board.support/user.svg",
            "user_type": "visitor",
            "creation_time": "2020-05-13 08:58:18",
            "last_activity": "2020-05-13 09:32:28",
            "department": null,
            "token": "6d969f64f5ed6263714b9b39f3d3700b66f16820"
        }
        ...
    ]
}

Devuelve {"success":true, "response":[]} si no se encuentran usuarios.


add-user

Crea un nuevo usuario.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": 123456
}

Otras respuestas posibles: duplicate-email, invalid-user-type, MySQL error message.


update-user

Actualiza los detalles de un usuario existente.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

Other possible responses: duplicate-emailinvalid-user-typeMySQL error message.


delete-user

Elimina un usuario y todas las conversaciones y mensajes vinculados.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

delete-users

Elimina múltiples usuarios y sus datos vinculados.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

is-online

Verifica si un usuario está en línea.

Argumentos

Respuesta true si está en línea, false si está desconectado.


current-url

Obtiene o establece la URL actual de un usuario o la última visitada.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": "https://charbot.zampisoft.com"
}

Returns {"success":true,"response":false} if the URL is not found. Returns {"success":true,"response":true} if the url argument is set.


count-users

Devuelve el conteo total de usuarios agrupados por tipo.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": {
        "all": "335",
        "lead": "288",
        ...
    }
}

update-user-to-lead

Cambia el tipo de usuario a "lead" (cliente potencial).

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

get-avatar

Genera la imagen de perfil usando la inicial del nombre y apellido, la guarda y devuelve la URL.

Argumentos

Respuesta https://chatbot.zampisoft.com/uploads/13-04-21/9455859.png

get-bot-id

Devuelve el ID del bot de ZampiBot.

Respuesta 123


is-typing

Verifica si un usuario o agente está escribiendo en una conversación. (No funciona si Pusher está activo).

Parámetros

Respuesta Devuelve true si está escribiendo, de lo contrario false.


is-agent-typing

Verifica si un agente está escribiendo y devuelve sus detalles. (No funciona si Pusher está activo).

Argumentos

{
  "id": "",
  "first_name": "",
  "last_name": ""
}

Respuesta Devuelve false si nadie escribe, o un objeto con detalles del agente.


set-typing

Asigna el estado "escribiendo" a un usuario o agente en una conversación.

Parámetros

Respuesta

JSON

{
    "success": true,
    "response": true
}

login

Inicia sesión de un usuario o agente. Puede hacerse vía email/contraseña o ID/token.

Parámetros

Respuesta

JSON

{
    "success": true,
    "response": [
        {
            "id": "913",
            "profile_image": "https://board.support/user.svg",
            "first_name": "User",
            "last_name": "#29902",
            "email": null,
            "user_type": "visitor",
            "token": "9b25351047ee758aa97ee4868d130cc15eb8decf"
        },
        "YXNkWGNSeTdtRTdDYVkxVG8wckN4YWF6V2s0Tk1mczBSVHdQbHBpOWdmejVUTTdOUUxEUENhdUVoYmROWn..."
    ]
}

El segundo valor son los datos de sesión encriptados. Use SBF.loginCookie(response[1]); para guardarlo. Devuelve false si falla.


logout

Cierra la sesión del usuario conectado.

Parámetros

Respuesta

JSON

{
    "success": true,
    "response": true
}

También debe borrarse la cookie sb-login del navegador.


update-login

Actualiza los detalles del usuario conectado. Si un detalle no se establece, se eliminará de la base de datos.

Parámetros

Respuesta

YXNkWGNSeTdtRTdDYVkxVG8wckN4YWF6V2s0Tk1mczBSVHdQbHBpOWdmejVUTTdOUUxEUENhdUVoYmROWn...

Cadena encriptada que debe guardarse en la cookie sb-login.


delete-leads

Elimina todos los leads (clientes potenciales), incluyendo conversaciones y mensajes vinculados.

Parámetros

Respuesta

JSON

{
    "success": true,
    "response": true
}

update-bot

Actualiza los detalles del perfil del bot. Si no existe, se crea uno.

Argumentos

Respuesta true en caso de éxito, false en caso contrario.


csv-users

Exporta todos los usuarios a un archivo CSV y devuelve la URL.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": "https://board.support/uploads/users.csv"
}

WEB API: Conversaciones

Métodos para gestionar conversaciones y mensajes.

get-conversation

Devuelve una conversación y sus mensajes.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": {
        "messages": [
            {
                "id": "2044",
                "user_id": "802",
                "message": "Hello!",
                "creation_time": "2020-05-0410:06:30",
                "attachments": "",
                "status_code": "0",
                "payload": "",
                "conversation_id": "946",
                "first_name": "Don",
                "last_name": "John",
                "profile_image": "https://chatbot.zampisoft.com/user.svg",
                "user_type": "lead"
            },
            {
                "id": "2045",
                "user_id": "377",
                "message": "Hello,howcanIhelp?",
                "creation_time": "2020-05-0410:06:33",
                "attachments": "",
                "status_code": "0",
                "payload": "",
                "conversation_id": "946",
                "first_name": "Bruce",
                "last_name": "Peterson",
                "profile_image": "https://chatbot.zampisoft.com/agent.svg",
                "user_type": "agent"
            }
            ...
        ],
        "details": {
            "user_id": "802",
            "first_name": "Don",
            "last_name": "John",
            "profile_image": "https://chatbot.zampisoft.com/user.svg",
            "user_type": "lead",
            "id": "946",
            "title": "",
            "conversation_time": "2020-05-0410:06:30",
            "conversation_status_code": "3",
            "department": null
        }
    }
}

Devuelve {"success":true,"response":{"messages":[],"details":""}} si no se encuentra.


get-conversations

Devuelve todas las conversaciones. Cada una incluye el último mensaje.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [
        {
            "message": "Hello World!",
            "message_id": "7351",
            "attachments": "",
            "payload": "",
            "message_status_code": "2",
            "last_update_time": "2023-10-02 16:00:06",
            "message_user_id": "377",
            "message_first_name": "Smart Assistant",
            "message_last_name": "",
            "message_profile_image": "https://example.com/image.jpg",
            "message_user_type": "bot",
            "conversation_id": "4084",
            "conversation_user_id": "4446",
            "conversation_status_code": "3",
            "conversation_creation_time": "2023-10-02 15:59:59",
            "department": "1",
            "agent_id": null,
            "title": "",
            "source": "tk",
            "extra": null,
            "tags": null,
            "conversation_first_name": "User",
            "conversation_last_name": "#26147",
            "conversation_profile_image": "https://example.com/image.jpg",
            "conversation_user_type": "lead"
        },
        ...
    ]
}

get-new-conversations

Devuelve conversaciones creadas después de la fecha/ID dada o con mensajes nuevos.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [
        {
            "message": "Hello World!",
            "message_id": "7351",
            "attachments": "",
            "payload": "",
            "message_status_code": "2",
            "last_update_time": "2023-10-02 16:00:06",
            "message_user_id": "377",
            "message_first_name": "Smart Assistant",
            "message_last_name": "",
            "message_profile_image": "https://example.com/image.jpg",
            "message_user_type": "bot",
            "conversation_id": "4084",
            "conversation_user_id": "4446",
            "conversation_status_code": "3",
            "conversation_creation_time": "2023-10-02 15:59:59",
            "department": "1",
            "agent_id": null,
            "title": "",
            "source": "tk",
            "extra": null,
            "tags": null,
            "conversation_first_name": "User",
            "conversation_last_name": "#26147",
            "conversation_profile_image": "https://example.com/image.jpg",
            "conversation_user_type": "lead"
        },
        ...
    ]
}

Return {"success":true, "response":[]} if no conversations are found.


get-user-conversations

Devuelve las conversaciones de un usuario.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [
        {
            "message": "Hello World!",
            "message_id": "7351",
            "attachments": "",
            "payload": "",
            "message_status_code": "2",
            "last_update_time": "2023-10-02 16:00:06",
            "message_user_id": "377",
            "message_first_name": "Smart Assistant",
            "message_last_name": "",
            "message_profile_image": "https://example.com/image.jpg",
            "message_user_type": "bot",
            "conversation_id": "4084",
            "conversation_user_id": "4446",
            "conversation_status_code": "3",
            "conversation_creation_time": "2023-10-02 15:59:59",
            "department": "1",
            "agent_id": null,
            "title": "",
            "source": "tk",
            "extra": null,
            "tags": null
        },
        ...
    ]
}

Return {"success":true, "response":[]} if no conversations are found.


get-new-user-conversations

Devuelve conversaciones de usuario actualizadas después de la fecha dada.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [
       {
            "message": "Hello World!",
            "message_id": "7351",
            "attachments": "",
            "payload": "",
            "message_status_code": "2",
            "last_update_time": "2023-10-02 16:00:06",
            "message_user_id": "377",
            "message_first_name": "Smart Assistant",
            "message_last_name": "",
            "message_profile_image": "https://example.com/image.jpg",
            "message_user_type": "bot",
            "conversation_id": "4084",
            "conversation_user_id": "4446",
            "conversation_status_code": "3",
            "conversation_creation_time": "2023-10-02 15:59:59",
            "department": "1",
            "agent_id": null,
            "title": "",
            "source": "tk",
            "extra": null,
            "tags": null
        },
        ...
    ]
}

Return {"success":true, "response":[]} if no conversations are found.


search-conversations

Devuelve conversaciones que coinciden con la búsqueda.

Argumentos

Respuesta

JSON

{
  "success": true,
  "response": [
        {
            "message": "Hello World!",
            "message_id": "7351",
            "attachments": "",
            "payload": "",
            "message_status_code": "2",
            "last_update_time": "2023-10-02 16:00:06",
            "message_user_id": "377",
            "message_first_name": "Smart Assistant",
            "message_last_name": "",
            "message_profile_image": "https://example.com/image.jpg",
            "message_user_type": "bot",
            "conversation_id": "4084",
            "conversation_user_id": "4446",
            "conversation_status_code": "3",
            "conversation_creation_time": "2023-10-02 15:59:59",
            "department": "1",
            "agent_id": null,
            "title": "",
            "source": "tk",
            "extra": null,
            "tags": null,
            "conversation_first_name": "User",
            "conversation_last_name": "#26147",
            "conversation_profile_image": "https://example.com/image.jpg",
            "conversation_user_type": "lead"
        },
        ...
  ]
}

Return {"success":true, "response":[]} if no conversations are found.


search-user-conversations

Busca en las conversaciones de un usuario específico.

Argumentos

Respuesta

JSON

{
  "exito": true,
  "respuesta": [
    {
      "id_mensaje": "7351",
      "mensaje": "¡Hola mundo!",
      "archivos_adjuntos": "",
      "carga_util": "",
      "codigo_estado_mensaje": "2",
      "hora_ultima_actualizacion": "2023-10-02 16:00:06",

      "id_usuario_mensaje": "377",
      "nombre_mensaje": "Asistente Inteligente",
      "apellido_mensaje": "",
      "imagen_perfil_mensaje": "https://example.com/image.jpg",
      "tipo_usuario_mensaje": "bot",

      "id_conversacion": "4084",
      "id_usuario_conversacion": "4446",
      "codigo_estado_conversacion": "3",
      "hora_creacion_conversacion": "2023-10-02 15:59:59",

      "departamento": "1",
      "id_agente": null,

      "titulo": "",
      "fuente": "tk",
      "extra": null,
      "etiquetas": null
    }
  ]
}

Returns {"success":true, "response":[]} if no conversations are found.


new-conversation

Crea una nueva conversación.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": {
        "messages": [],
        "details": {
            "user_id": "882",
            "first_name": "Don",
            "last_name": "John",
            "profile_image": "https://chatbot.zampisoft.com/user.svg",
            "user_type": "lead",
            "id": "1007",
            "title": "",
            "conversation_time": "2020-05-15 12:51:39",
            "conversation_status_code": "0",
            "department": null
        }
    }
}

Other possible responses: Conversation details array on success, otherwise user-not-foundMySQL error message.


update-conversation-status

Actualiza el código de estado de una conversación.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

update-conversation-department

Actualiza el departamento de una conversación.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

update-conversation-agent

Asigna o actualiza el agente de una conversación.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

set-rating

Asigna una calificación a una conversación.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

get-rating

Obtiene las calificaciones asignadas a un agente.

Argumentos

Respuesta {"success": true, "response": [4,2]} (4 positivas, 2 negativas).

The response array: [count of positive ratings, count of negative ratings]. In the example above there are 4 positive ratings and 2 negative ratings.


get-new-messages

Devuelve los mensajes de una conversación creados después de la fecha/ID dada.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [
        {
            "id": "2319",
            "user_id": "377",
            "message": "Welcome to our support chat!",
            "creation_time": "2020-05-12 18:04:50",
            "attachments": "",
            "status_code": "0",
            "payload": "",
            "conversation_id": "1004",
            "first_name": "Virtual",
            "last_name": "Agent",
            "profile_image": "https://chatbot.zampisoft.com/bot.svg",
            "user_type": "bot"
        },
        {
            "id": "2320",
            "user_id": "877",
            "message": "Thank you! I need help.",
            "creation_time": "2020-05-12 18:04:51",
            "attachments": "",
            "status_code": "0",
            "payload": "",
            "conversation_id": "1004",
            "first_name": "Don",
            "last_name": "John",
            "profile_image": "https:/chatbot.zammpisoft.com/user.svg",
            "user_type": "lead"
        },
        ...
    ]
}

Return {"success":true, "response":[]} if no conversations are found.


get-last-message

Devuelve el último mensaje de una conversación.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": {
        "message": "Welcome to our support chat!",
        "attachments": "",
        "payload": ""
    }
}

send-message

Añade un nuevo mensaje a una conversación existente.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": {
        "status": "success",
        "message-id": 123456,
        "queue": false,
        "notifications": ["sms", "email"],
        "message": "Text of the message"
    }
}

Other possible responses: invalid-status-codeMySQL error message. The notifications response include the notifications sent to the user or agents.


update-message

Actualiza un mensaje existente.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

delete-message

Elimina un mensaje existente.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

delete-attachments

Elimina todos los adjuntos de una conversación o mensaje (incluyendo AWS S3).

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

update-messages-status

Actualiza el estado de múltiples mensajes a "leído".

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

get-agents-in-conversation

Devuelve un array con todos los agentes que tienen al menos un mensaje en la conversación.

Argumentos

Respuesta

JSON

{
     "success": true,
     "response": {
         "1546": [
             {
                 "id": 5463,
                 "first_name": "Don",
                 "last_name": "John",
                 "profile_image": "https://chatbot.zampisoft.com/user.svg",
                 "conversation_id": 1546
             },
             {
                 "id": 6413,
                 "first_name": "Steven",
                 "last_name": "Travolta",
                 "profile_image": "https://chatbot.zampisoft.com/user.svg",
                 "conversation_id": 1546
             },
             ...
         ]
     }
 }

transcript

Exporta una conversación a CSV o TXT y devuelve la URL.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": "https://chatbot.zampisoft.com/uploads/conversation-1021.csv"
}

Return {"success":true, "response":false} if the conversation is not found.


direct-message

Envía un mensaje de chat directo.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

messaging-platforms-send-message

Envía un mensaje a la plataforma de mensajería vinculada (Facebook, WhatsApp, etc.).

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": true
}

count-conversations

Cuenta el número de conversaciones.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": 123456
}

check-conversations-assignment

Verifica si una lista de conversaciones está asignada a un departamento o agente.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": [1234, 5, ...]
}

get-last-agent-in-conversation

Devuelve el último agente que respondió a una conversación.

Argumentos

Respuesta

JSON


{
     "success": true,
     "response": {
        "id": 123,
        "first_name": "Don",
        "last_name": "John",
        "email": "email@example.com",
        "password": "$P$BcCpYeU21wYnXKW2LpJj/F9xRdSmLM/"
     }
 }

Devuelve false si la conversación no tiene respuestas de agentes.


execute-bot-message

Envía un mensaje del bot y devuelve su contenido.

Argumentos

Respuesta

JSON

{
    "success": true,
    "response": {
       "message": "Lorem ipsum dolor",
       "attachments": [],
       "id": 123,
       "settings": {
          "active": true,
          "title": "",
          "message": ""
       }
    }
}

ID es el ID del mensaje que se acaba de crear.


⚙️ WEB API: Configuración (Settings)

Funciones relacionadas con la configuración, artículos, traducciones y más.

get-setting

Devuelve una configuración guardada en el área de Configuración.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "option": "value",
        "option": "value",
        ...
    }
}

get-multi-setting

Devuelve una sub-configuración de otra configuración.

Argumentos

Respuesta Devuelve el valor de la sub-configuración si está disponible; de lo contrario, devuelve el valor por defecto.


get-external-setting

Devuelve una configuración externa. Las configuraciones externas se guardan en una fila dedicada de la base de datos.

Argumentos

Respuesta Devuelve el valor de la configuración si está disponible; de lo contrario, devuelve el valor por defecto.


get-settings

Devuelve un array con todas las configuraciones.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "chat-manual-init": [
            false,
            "checkbox"
        ],
        "chat-login-init": [
            false,
            "checkbox"
        ],
        "init-dashboard": [
            true,
            "checkbox"
        ],
        "chat-timetable-disable": [
            false,
            "checkbox"
        ],
        "rtl": [
            false,
            "checkbox"
        ],
        "front-auto-translations": [
            true,
            "checkbox"
        ],
        ...
    }
}

save-settings

Guarda todas las configuraciones.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

save-external-setting

Guarda una configuración externa. Las configuraciones externas se guardan en una fila dedicada de la base de datos.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

export-settings

Exporta todas las configuraciones de ZampiBot a un archivo JSON y devuelve la URL del archivo.

Parámetros

Respuesta

JSON


{
    "success": true,
    "response": "http://example.com/chatbot.zampisoft.com/uploads/settings_855776223.json"
}

Devuelve la URL del archivo JSON que contiene las configuraciones.


import-settings

Importa las configuraciones de ZampiBot desde un archivo JSON generado a través de la función export-settings.

Parámetros

Respuesta

JSON


{
    "success": true,
    "response": true
}

get-departments

Devuelve los departamentos de ZampiBot.

Parámetros

Respuesta

{
    "1": {
        "name": "Ejemplo",
        "color": "yellow",
        "image": "https://example.com/image.png"
    },
    "2": {
        "name": "Ejemplo",
        "color": "red",
        "image": "https://example.com/image.png"
    },
    ...
}

saved-replies

Devuelve un array con todas las respuestas guardadas.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": [
        {
            "reply-name": "hola",
            "reply-text": "¡Hola! ¿Cómo puedo ayudarte?"
        },
        {
            "reply-name": "email",
            "reply-text": "Nuestro correo electrónico es soporte@ejemplo.com."
        },
        ...
    ]
}

get-translation

Devuelve las traducciones en el idioma dado.

Parámetros

Respuesta

JSON


{
    "name": "Arabic",
    "front": {
        "Activities": "أنشطة",
        "All": "الكل",
        "All articles": "جميع المقالات",
        "All fields are required.": "جميع الحقول مطلوبة",
        ...
    },
    "admin": {
        "A conversation was started by": "",
        "Activate": "",
        "Activation complete! Page reload in progress...": "",
        "Add a saved reply": "",
        ...
    }
}

get-translations

Devuelve las traducciones del back-end y del front-end, para todos los idiomas disponibles.

Parámetros

Respuesta

JSON


{
    "ar": {
        "name": "Arabic",
        "front": {
            "Activities": "أنشطة",
            "All": "الكل",
            "All articles": "جميع المقالات",
            "All fields are required.": "جميع الحقول مطلوبة",
            ...
        },
        "admin": {
            "A conversation was started by": "",
            "Activate": "",
            "Activation complete! Page reload in progress...": "",
            "Add a saved reply": "",
            ...
        }
    },
    "da": {
        "name": "Danish",
        "front": {
            "Activities": "Aktiviteter",
            "All": "Alle",
            "All articles": "Alle artikler",
            "All fields are required.": "Alle felter skal udfyldes.",
            ...
        },
        "admin": {
            "A conversation was started by": "",
            "Activate": "",
            "Activation complete! Page reload in progress...": "",
            "Add a saved reply": "",
            ...
        }
    },
    ...
}

save-translations

Guarda las traducciones y sobrescribe los archivos de traducción. ¡Advertencia! Si el array de traducciones dado está corrupto, podría corromper los archivos de traducciones. Haga primero una copia de seguridad de la carpeta de traducciones (\resources\languages\). Cada vez que se guarda una traducción, se crea una copia de seguridad automáticamente en la carpeta uploads.

Parámetros

Respuesta

JSON


{
    "success": true,
    "response": true
}

translate-string

Traduce una cadena al idioma del código de idioma especificado. Esta función solo funciona para traducciones del front-end.

Argumentos

Respuesta Devuelve la cadena traducida si se encuentra la traducción; de lo contrario, devuelve la cadena original.


📄 WEB API: Artículos

Funciones de Artículos y Base de Conocimientos.

get-articles

Devuelve un array con todos los artículos o un solo artículo.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": [
        {
            "id": "6P2Oq",
            "title": "What's new with the API V2?",
            "content": "The API V2 is the new iteration of o ...",
            "link": "https://chatbot.zampisoft.com",
            "categories": ["K92kl"]
        },
        {
            "title": "Should I move to the new system?",
            "content": "Yes. The newest version of the Actions ...",
            "link": "https://chatbot.zampisoft.com",
            "id": "qf7kD",
            "categories": ["ols85"]
        },
        ...
    ]
}

Respuesta (Un solo artículo):

JSON


{
    "success": true,
    "response": {
        "id": "6P2Oq",
        "title": "What's new with the API V2?",
        "content": "The API V2 is the new iteration of our developer API. The new API integrates...",
        "link": "https://board.support",
        "categories": ["K92kl"]
    }
}

save-article

Guarda todos los artículos. Esta función elimina todos los artículos existentes y los reemplaza con los del array dado.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

search-articles

Devuelve los artículos que coinciden con la búsqueda.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": [
         {
             "id": "118",
             "title": "Hello world!",
             "content": "Lorem ipsum dolor sit amet...",
             "editor_js": "",
             "link": "",
             "category": "basements",
             "parent_category": "video",
             "language": "",
             "parent_id": null,
             "slug": "images-and-photos",
             "update_time": "2024-06-04"
         },
         {
             "id": "127",
             "title": "How to develop an app",
             "content": "Resitor Lorem ipsum dolor sit amet...",
             "editor_js": "",
             "link": "",
             "category": "",
             "parent_category": "",
             "language": "",
             "parent_id": null,
             "slug": null,
             "update_time": "2024-05-24"
         },
         ...
    ]
}

get-articles-categories

Devuelve un array con todas las categorías de artículos.

Argumentos

Respuesta

{
    "success": true,
    "response": [
        {
            "title": "Audio",
            "description": "Lorem ipsum dolor sit amet. ",
            "image":"https://example.com/image.jpg",
            "id": "audio",
            "parent": true,
            "languages": {
                "es": {
                    "title": "Audio",
                    "description": "Es eorem ipsum dolor sit amet. "
                }
            }
        },
        {
            "title": "Video",
            "description": "Lorem ipsum dolor.",
            "image": "https://example.com/image.jpg",
            "id": "video",
            "languages": []
        },
        ...
    ]
}

save-articles-categories

Guarda o actualiza el array de categorías de artículos.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

article-ratings

Obtiene las calificaciones de un artículo o añade una nueva calificación al mismo.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": "[-1, 1, 1, -1]"
}

Devuelve true si el argumento rating está establecido.


➕ WEB API: Más métodos

send-email

Envía un correo electrónico a un usuario existente utilizando las plantillas de correo de la sección Configuración > Notificaciones.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

Otras posibles respuestas: missing-user-id-or-message, security-error, user-email-not-found, user-or-sender-not-found.


send-custom-email

Envía un correo electrónico genérico a una dirección de correo. El correo y nombre del remitente son los configurados en Configuración > Notificaciones > Configuración de correo electrónico.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

email-piping

Ejecuta la sincronización de email piping con ZampiBot y convierte los correos electrónicos en mensajes de chat.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

send-sms

Envía un mensaje de texto (SMS) a un usuario o agente. Si el argumento template es verdadero (true), el mensaje se traduce automáticamente.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "sid": "SM1f0e8ae6ade43cb3c0ce4525424e404f",
        "date_created": "Fri, 13 Aug 2010 01:16:24 +0000",
        "date_updated": "Fri, 13 Aug 2010 01:16:24 +0000",
        "date_sent": null,
        "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "to": "+15305431221",
        "from": "+15104564545",
        "body": "A Test Message",
        "status": "queued",
        "flags": [
            "outbound"
        ],
        "api_version": "2010-04-01",
        "price": null,
        "uri": "/2010-04-01/Accounts/ACXXXX/Messages/SM1f004f.json"
    }
}

push-notification

Envía una notificación Push a un agente, un grupo de agentes o a todos los agentes. Las notificaciones Push deben estar habilitadas en el área de configuración.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "id": "8b1c4e05-5e08-4926-86b0-a56ab7817e25",
        "external_id": null,
        "errors": {}
    }
}

Devuelve false si las notificaciones Push están deshabilitadas en el área de configuración.


get-versions

Devuelve las versiones instaladas de ZampiBot y las Apps.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "sb": "3.0.4",
        "dialogflow": "1.0.2",
        "slack": "1.0.3"
    }
}

cron-jobs


Ejecuta las tareas programadas (cron jobs).

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

pusher-trigger

Dispara un evento en un canal de Pusher.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

chat-css

Devuelve el estilo CSS para los colores del chat.

Argumentos

Respuesta El código CSS.


text-formatting-to-html

Convierte el formato de texto de los mensajes de chat a los códigos HTML equivalentes y devuelve el mensaje.

Argumentos

Respuesta Lorem ipsum dolor <b>sit amet</b>, <i>consectetur adipiscing elit</i>, <code>sed</code> do eiusmod tempor incididunt.


clear-text-formatting

Elimina el formato de texto de los mensajes de chat.

Argumentos

Respuesta Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.


get-notes

Devuelve las notas internas de una conversación.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": [
        {
            "id": 98207,
            "user_id": "1538",
            "name": "Lorem ipsum dolor sit amet",
            "message": "Lorem ipsum dolor sit amet, consectetur elit, sed do eiusmod tempor incididunt."
        },
        {
            "id": 76986,
            "user_id": "1596",
            "name": "Lorem ipsum dolor",
            "message": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor."
        },
        ...
    ]
}

add-note

Añade una nueva nota a una conversación.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": 33560
}

Devuelve el ID de la nota.


delete-note

Elimina una nota de una conversación.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

automations-get

Devuelve todas las automatizaciones.

Argumentos

Respuesta

JSON


[
    {
        "emails": [
            {
                "id": "0BOaG",
                "conditions": [
                    [
                        "datetime",
                        "is-between",
                        "10/04/2021 - 13/04/2021"
                    ],
                    [
                        "include_urls",
                        "contains",
                        "https://example.com"
                    ],
                    ...
                ],
                "name": "Excepteur sint",
                "message": "Excepteur sint occaecat cupidatat non proident.",
                "subject": "Cupidatat non proident"
            },
            ...
        ],
        "sms": [
            {
                "id": "vo2sY",
                "conditions": [
                    [
                        "datetime",
                        "is-exactly",
                        "13/04/2021"
                    ]
                ],
                "name": "Excepteur sint",
                "message": "Excepteur sint occaecat cupidatat non caecat cupidatat non proident"
            },
            {
                "id": "hwkmQ",
                "name": "Excepteur sint occaecat cupidatat non proident",
                "message": "Excepteur sint occaecat cupidatat non  occaecat cupidatat non proident"
            },
            ...
        ],
        "messages": [],
        "popups": [
            {
                "id": "ckN24",
                "conditions": [
                    [
                        "user_type",
                        "is-user"
                    ],
                    [
                        "languages",
                        "en"
                    ]
                ],
                "name": "s",
                "message": "Excepteur sint occaecat cupidatat non prcaecat cupidatat non proident",
                "title": "Excepteur sint occaecat",
                "profile_image": "https://example.com/image.jpg"
            },
            ...
        ],
        "design": [
            {
                "id": "bX1qA",
                "conditions": [
                    [
                        "user_type",
                        "is-user"
                    ]
                ],
                "name": "Excepteur sint",
                "message": "Excepteur sint occaecat cupidatat caecat cupidatat non proident",
                "title": "",
                "color_1": "rgb(0, 235, 26)",
                "color_2": "rgb(255, 0, 0)",
                "color_3": "rgb(255, 0, 0)",
                "background": "https://example.com/image.jpg",
                "brand": "https://example.com/image.jpg",
                "icon": "https://example.com/image.jpg"
            },
            ...
        ]
    },
    {
        "fr": {
            "messages": [
                {
                    "id": "y6hNE",
                    "name": "XXXX",
                    "message": "XXXX"
                }
            ]
        },
        ...
    }
]

automations-save

Guarda todas las automatizaciones.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

automations-validate

Valida una automatización.

Argumentos

Respuesta

JSON


{
      "conditions": [
          [
              "user_type",
              "is-user"
          ],
          ...
      ],
      "repeat_id": ""
  }

Devuelve solo las condiciones del lado del cliente y las condiciones del servidor inválidas que pueden validarse en un momento posterior. Si no se devuelven condiciones, la automatización es válida y puede ejecutarse. Devuelve false si la automatización es inválida.


automations-run-all

Valida todas las automatizaciones, ejecuta las válidas y devuelve las automatizaciones con condiciones del lado del cliente, condiciones del servidor inválidas y automatizaciones de popup y diseño.

Argumentos

Respuesta

JSON


[
    {
        "id": "0BOaG",
        "conditions": [
            [
                "datetime",
                "is-between",
                "10/04/2021 - 13/04/2021"
            ],
            [
                "include_urls",
                "contains",
                "https://example.com"
            ],
            ...
        ],
        "name": "Excepteur sint",
        "message": "Excepteur sint occaecat cupidatat non proident.",
        "subject": "Cupidatat non proident",
        "type": "emails"
    },
    {
        "id": "bX1qA",
        "conditions": [
            [
                "user_type",
                "is-user"
            ]
        ],
        "name": "Excepteur sint",
        "message": "Excepteur sint occaecat cupidatat caecat cupidatat non proident",
        "title": "",
        "color_1": "rgb(0, 235, 26)",
        "color_2": "rgb(255, 0, 0)",
        "color_3": "rgb(255, 0, 0)",
        "background": "https://example.com/image.jpg",
        "brand": "https://example.com/image.jpg",
        "icon": "https://example.com/image.jpg",
        "type": "design"
    },
    ...
]

automations-run

Ejecuta una sola automatización y opcionalmente la valida antes de ejecutarla.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

automations-is-sent

Verifica si una automatización ya ha sido enviada a un usuario.

Argumentos

Respuesta Devuelve true si la automatización ya ha sido enviada; de lo contrario, devuelve false.


clean-data

Esta función realiza las siguientes tareas: Elimina visitantes con una antigüedad mayor a 24h, elimina mensajes en la papelera con una antigüedad mayor a 30 días, y archiva mensajes donde la última respuesta fue de un agente y tienen una antigüedad mayor a 24h.

Requisitos Esta es una función de administración y solo funciona si el usuario activo es un agente o un administrador.

Parámetros

Respuesta

JSON


{
    "success": true,
    "response": true
}

reports

Devuelve los reportes especificados.

Parámetros

Respuesta

JSON


{
   "title": "New conversations",
   "description": "Count of new conversations started by users.",
   "data": {
       "03/2021": [
           2
       ],
       "04/2021": [
           0
       ],
       "05/2021": [
           0
       ],
       ...
   },
   "table": [
       "Date",
       "Count"
   ],
   "table_inverse": true,
   "label_type": 1,
   "chart_type": "line"
}

reports-update

Añade una nueva fila a la tabla sb_reports de la base de datos.

Parámetros

Respuesta

JSON


{
    "success": true,
    "response": true
}

updates-available

Comprueba si hay actualizaciones disponibles para ZampiBot y las aplicaciones de ZampiBot.

Parámetros

Respuesta

JSON


{
    "success": true,
    "response": true
}

Devuelve true si hay al menos una actualización disponible; de lo contrario, devuelve false.


newsletter

Añade un suscriptor al servicio de boletín configurado en Configuración > Misceláneas > Newsletter. El ajuste Configuración > Misceláneas > Newsletter > Activo debe estar habilitado.

Argumentos

Respuesta Devuelve la respuesta del servicio de newsletter.


upload-path

Devuelve la ruta de subidas (uploads) de ZampiBot.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": "\var\www\htdocs\chatbot.zampisoft.com\uploads\10-03-23"
}

o

JSON


{
    "success": true,
    "response": "https://www.example.com/chatbot.zampisoft.com/uploads/10-03-23"
}

is-allowed-extension

Comprueba si está permitido subir archivos con la extensión especificada.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

Devuelve true si la extensión está permitida; de lo contrario, devuelve false.


system-requirements

Comprueba si la máquina host cumple con los requisitos del sistema de ZampiBot.

Argumentos

Respuesta

JSON


{
  "success": true,
  "response": {
      "php-version": true,
      "zip-archive": true,
      "plugin-folder": true,
      "uploads-folder": true,
      "apps-folder": true,
      "languages-folder": true,
      "ajax": true,
      "curl": true,
      "UTF8mb4": true
  }
}

logs

Añade un mensaje de registro al archivo de log.

Argumentos

Respuesta

JSON


{
  "success": true,
  "response": true
}

aws-s3

Sube un archivo a Amazon S3, o elimina un archivo de Amazon S3. Amazon S3 debe estar activo y configurado en Configuración > Misceláneas > Amazon S3.

Argumentos

Respuesta

JSON


{
  "success": true,
  "response": "https://example.s3.amazonaws.com/example.txt"
}

Devuelve la URL del archivo de Amazon S3.


🧠 WEB API: Inteligencia Artificial

La aplicación de Inteligencia Artificial es necesaria para utilizar este conjunto de APIs.

dialogflow-message

Envía un mensaje a Dialogflow y devuelve la respuesta.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "token": "ya29.a0AfH6SE4SVIeOPWSfxRVfHNcJIoR-IvRTtrEe4P9VXHa",
        "messages": [
            {
                "message": "Hi! How are you doing?",
                "attachments": []
            }
        ],
        "response": {
            "responseId": "1a5e30d0-d6d4-4f0c-83e3-2fb9e31c2a5e-e15c53b8",
            "queryResult": {
                "queryText": "Hello",
                "action": "input.welcome",
                "parameters": [],
                "allRequiredParamsPresent": true,
                "fulfillmentText": "Hi! How are you doing?",
                "fulfillmentMessages": [
                    {
                        "platform": "ACTIONS_ON_GOOGLE",
                        "simpleResponses": {"simpleResponses": [ { "textToSpeech": "Example"} ]}
                    },
                    {
                        "text": { "text": [ "Hi! How are you doing?" ]  }
                    }
                ],
                "intent": {
                    "name": "projects/api-project-657752147/agent/intents/fe27e-f39d-4db3-92c2",
                    "displayName": "Default Welcome Intent"
                },
                "intentDetectionConfidence": 1,
                "languageCode": "en"
            },
            "alternativeQueryResults": [
                {
                    "queryText": "Hello",
                    "languageCode": "en"
                }
            ]
        }
    }
}

Otras posibles respuestas: dialogflow-not-active, mensaje de error de MySQL o cURL.


dialogflow-get-intents

Devuelve la Intención (Intent) de Dialogflow especificada o todas las Intenciones.

Argumentos

Respuesta

JSON


[
  {
    "name": "projects/example/agent/intents/1655ee2c-8116-45f1-95fu-93700ff32e8d",
    "displayName": "Default Welcome Intent",
    "priority": 500000,
    "mlEnabled": true,
    "events": [ "WELCOME" ],
    "trainingPhrases": [
      {
        "name": "43ca0e72-6055-4b88-af13-b0d241",
        "type": "EXAMPLE",
        "parts": [
          {
            "text": "just going to say hi"
          }
        ]
      },
      {
        "name": "5159aabc-8524-404f-b679-f2228db1",
        "type": "EXAMPLE",
        "parts": [
          {
            "text": "Hello"
          }
        ]
      },
      ...
    ],
    "action": "input.welcome",
    "messages": [
      {
        "text": {
          "text": [ "Hi! How are you doing?", "Hello! How can I help you?" ]
        }
      }
    ]
  },
  ...
]

dialogflow-create-intent

Crea una nueva Intención (Intent) en Dialogflow. La nueva Intención se vinculará al agente sincronizado en el área de administración.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

dialogflow-update-intent

Actualiza una Intención (Intent) de Dialogflow.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

dialogflow-entity

Crea una nueva Entidad en Dialogflow. La nueva Entidad se vinculará al agente sincronizado en el área de administración.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

dialogflow-get-entity

Devuelve una Entidad de Dialogflow, o todas las Entidades del agente.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
      "name":"projects/small-talk-43da7/agent/entityTypes/t5td1425-2k13-16cc-a7bb-f119b8d94112a",
      "displayName":"woocommerce-products",
      "kind":"KIND_MAP",
      "autoExpansionMode":"AUTO_EXPANSION_MODE_DEFAULT",
      "entities":[
         {
            "value":"Abstract Print Cotton Blouse",
            "synonyms":[
               "Abstract Print Cotton Blouse"
            ]
         },
         {
            "value":"Cashmere Carpenter Beanie",
            "synonyms":[
               "Cashmere Carpenter Beanie"
            ]
         },
         ...
      ],
      "enableFuzzyExtraction":true
    }
}

google-get-token

Genera un nuevo Token de Dialogflow y lo devuelve. El token es válido por 1 hora.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": "ya27.a1AfH6SMDu9dn0TfRbNVAIEsSoeJPD1_jr1JpfL15..."
}

dialogflow-get-agent

Devuelve los detalles del agente de Dialogflow.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "parent":"projects/woocommerce-abcde",
        "displayName": "ABCDE",
        "defaultLanguageCode": "en",
        "timeZone": "Europe/Madrid",
        "enableLogging": true,
        "matchMode": "MATCH_MODE_HYBRID" ,
        "classificationThreshold": 0.6,
        "apiVersion": "API_VERSION_V2",
        "tier": "TIER_STANDARD"
    }
}

dialogflow-set-active-context

Activa un contexto de Dialogflow en la sesión del usuario activo.

Argumentos

Respuesta

JSON


{
   "success":true,
   "response": {
      "responseId":"09f2f825-3dbf-4c27-a5bb-6bd0b71e44b9-1d846bd2",
      "queryResult":{
         "queryText":"sb-trigger-context",
         "outputContexts":[
            {
               "name":"projects/abcde/agent/sessions/208/contexts/abcde",
               "lifespanCount":4,
               ...
            }
         ],
         "languageCode":"en"
      }
   }
}

dialogflow-curl

Envía datos a Dialogflow. Utilice este método para enviar consultas a Dialogflow.

Argumentos

Respuesta

JSON


{
   "success": true,
   "response": "..."
}

Devuelve la respuesta de Dialogflow.


dialogflow-human-takeover

Dispara la toma de control humana (human takeover) de Dialogflow.

Argumentos

Respuesta

JSON


{
   "success": true,
   "response": [true, true, ...]
}

dialogflow-smart-reply

Devuelve las sugerencias de respuesta inteligente (Smart Reply).

Argumentos

Respuesta

JSON


{
   "suggestions": [
	   "I would be happy to help!",
	   "What can I do for you?",
       ...
	],
	"token": "ya29.a0AVvZVsrU7gAannWzuztBR-AphpjdWr0JrPoq9au0Ai",
	"detected_language": false,
	"smart_reply": false
}

open-ai-message

Envía un mensaje a OpenAI y devuelve la respuesta, opcionalmente añade la respuesta a una conversación existente como un nuevo mensaje.

Argumentos

Respuesta

JSON


{
     "success": true,
     "response": [
         true,
         "I am an AI digital assistant. How can I help you today?",
         false,
         false
     ]
}

Devuelve un array con el primer valor establecido en true si es exitoso, false en caso de error. El segundo valor es el mensaje de OpenAI si es exitoso, o el mensaje de error si falla.


open-ai-curl

Llama a la API de OpenAI (ChatGPT) y devuelve la respuesta.

Argumentos

Respuesta

JSON


{
   "success": true,
   "response": "..."
}

Devuelve la respuesta de OpenAI.


google-translate

Traduce múltiples cadenas a través de Google Translate.

Parámetros

Respuesta

JSON


{
    "success": true,
    "response": [ "Ciao mondo", "Come stai?", ...]
}

google-language-detection-update-user

Detecta el idioma de un texto y lo asigna a un usuario.

Parámetros

Respuesta

JSON

{
   "success": true,
   "response": true
}

📱 WEB API: WhatsApp

La aplicación de WhatsApp es necesaria para utilizar este conjunto de APIs.

whatsapp-send-message

Envía un mensaje a un número de WhatsApp.

Argumentos

Respuesta

JSON


{
     "success": true,
     "response": {
         "messaging_product": "whatsapp",
         "contacts": [
             {
                 "input": "+16315551234",
                 "wa_id": "+16315551234"
             }
         ],
         "messages": [
             {
                 "id": "wamid.HBgLMTY1MDM4Nzk0MzkVAgARGBI3N0EyQUJDMjFEQzZCQUMzODMA"
             }
         ]
     }
 }

whatsapp-send-template

Envía una plantilla de WhatsApp a un número de WhatsApp.

Argumentos

Respuesta

JSON


{
     "success": true,
     "response": {
         "messaging_product": "whatsapp",
         "contacts": [ ... ],
         "messages": [
             {
                 "id": "wamid.HBgLMTY1MDM4Nzk0MzkVAgARGBI3N0EyQUJDMjFEQzZCQUMzODMA"
             }
         ]
     }
 }

💬 WEB API: Messenger

La aplicación de Messenger es necesaria para utilizar este conjunto de APIs.

messenger-send-message

Envía un mensaje a Messenger o Instagram.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "recipient_id": "89995542233",
        "message_id": "11445777889"
    }
}

✈️ WEB API: Telegram

La aplicación de Telegram es necesaria para utilizar este conjunto de APIs.

telegram-send-message

Envía un mensaje a Telegram.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "ok": true,
        "result": {
            "message_id": 2030,
            "from": {
                "id": 21202173,
                "is_bot": true,
                "first_name": "joe",
                "username": "sb_officialbot"
            },
            "chat": {
                "id": 148766722,
                "first_name": "Fede",
                "last_name": "Schio",
                "username": "fedechioc",
                "type": "private"
            },
            "date": 1699621061,
            "text": "Hello!"
        }
    }
}

🟣 WEB API: Viber

La aplicación de Viber es necesaria para utilizar este conjunto de APIs.

viber-send-message

Envía un mensaje a Viber.

Argumentos

Respuesta

JSON


{
   "status":0,
   "status_message":"ok",
   "message_token":5741311803571721087,
   "chat_hostname":"SN-CHAT-05_",
   "billing_status":1
}

🟢 WEB API: LINE

La aplicación de LINE es necesaria para utilizar este conjunto de APIs.

line-send-message

Envía un mensaje a LINE.

Argumentos

Respuesta

JSON


{
    "sentMessages": [
        {
            "id": "481156985669026149",
            "quoteToken": "fKOxH1EKOAKYFLW6fe8vFGoKl2I2UZocU6KcoZgwtVrSTQjLbXFVer3Z-..."
        }
    ]
}

🟢 WEB API: WeChat

La aplicación de WeChat es necesaria para utilizar este conjunto de APIs.

wechat-send-message

Envía un mensaje a WeChat.

Argumentos

Respuesta

JSON


[
   "{...}",
   "5741311803571721087"
]

El primer elemento del array es la respuesta, el segundo elemento es el token.


💬 WEB API: Slack

La aplicación de Slack es necesaria para utilizar este conjunto de APIs.

send-slack-message

Envía un mensaje a Slack.

Argumentos

Respuesta

JSON


{"success":true,"response":["C011JFFGSKY"]}

Otras posibles respuestas: slack-not-active, mensaje de error de MySQL o cURL.

archive-slack-channels

Archiva todos los canales de Slack. Si tiene muchos canales, esta operación puede tardar mucho tiempo en completarse y podría necesitar ejecutarla varias veces. Importante: Todos sus canales de Slack serán archivados.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": true
}

slack-users

Devuelve la información de conexión de los miembros agentes-slack.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "slack_users": [
            {
                "id": "U328T701Z",
                "name": "Support Schio"
            },
            {
                "id": "UR5F0GK7T",
                "name": "Robert Pitt"
            }
            ...
        ],
        "agents": [
            {
                "id": "2",
                "name": "Alex Smith"
            },
            {
                "id": "445",
                "name": "Federico Schiocchet"
            },
            {
                "id": "724",
                "name": "Alberto Prade"
            }
            ...
        ],
        "saved": {
            "U328T701Z": "445",
            "UR5F0GK7T": "2"
            ...
        }
    }
}

slack-presence

Comprueba si un agente de Slack está en línea, si al menos un agente está en línea, o devuelve todos los usuarios en línea.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": online
}

Devuelve online u offline para la verificación de un solo agente. Devuelve un array de IDs de usuarios para la verificación de múltiples usuarios.


slack-channels

Devuelve la lista de todos los canales de Slack, incluyendo los canales archivados.

Argumentos

Respuesta

JSON


{
    "ok": true,
    "channels": [
        {
            "id": "C012AB3CD",
            "name": "general",
            "is_channel": true,
            "is_group": false,
            "is_im": false,
            "created": 1449252889,
            "creator": "U012A3CDE",
            "is_archived": false,
            "is_general": true,
            "unlinked": 0,
            "name_normalized": "general",
            "is_shared": false,
            "is_ext_shared": false,
            "is_org_shared": false,
            "pending_shared": [],
            "is_pending_ext_shared": false,
            "is_member": true,
            "is_private": false,
            "is_mpim": false,
            "updated": 1678229664302,
            "topic": {
                "value": "Company-wide announcements and work-based matters",
                "creator": "",
                "last_set": 0
            },
            "purpose": {
                "value": "This channel is for team-wide communication and announcements. All team members are in this channel.",
                "creator": "",
                "last_set": 0
            },
            "previous_names": [],
            "num_members": 4
        },
        {
            "id": "C061EG9T2",
            "name": "random",
            "is_channel": true,
            "is_group": false,
            "is_im": false,
            "created": 1449252889,
            "creator": "U061F7AUR",
            "is_archived": false,
            "is_general": false,
            "unlinked": 0,
            "name_normalized": "random",
            "is_shared": false,
            "is_ext_shared": false,
            "is_org_shared": false,
            "pending_shared": [],
            "is_pending_ext_shared": false,
            "is_member": true,
            "is_private": false,
            "is_mpim": false,
            "updated": 1678229664302,
            "topic": {
                "value": "Non-work banter and water cooler conversation",
                "creator": "",
                "last_set": 0
            },
            "purpose": {
                "value": "A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you'd prefer to keep out of more focused work-related channels.",
                "creator": "",
                "last_set": 0
            },
            "previous_names": [],
            "num_members": 4
        }
    ],
    "response_metadata": {
        "next_cursor": "dGVhbTpDMDYxRkE1UEI="
    }
}

slack-message-sent

Webhook enviado cuando se envía un mensaje a Slack.

Respuesta

JSON

{
    "function": "slack-message-sent",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "message": "Hi! How are you doing?",
        "conversation_id": "1057",
        "slack_channel": "C028BGU6TTT"
    }
}



🪝 WEB API: Webhooks

Los Webhooks son mensajes automatizados enviados desde ZampiBot a una URL cuando ocurre algo. Contienen datos personalizados y se envían a una URL única definida por usted.

Uso

  1. Inicie sesión en el área de administración y vaya a Configuración > Misceláneas > Webhooks.
  2. URL de destino: Ingrese la URL a donde ZampiBot enviará los datos. Esta URL debe apuntar a un archivo PHP que pueda leer los datos recibidos. Puede usar el siguiente código para capturar los datos: $response = json_decode(file_get_contents('php://input'), true); La variable $response será un array.
  3. Clave secreta (Secret key): Ingrese una contraseña secreta de su elección. Esta clave se incluye en todos los Webhooks; utilícela para validar el Webhook y asegurarse de que fue enviado por ZampiBot y no por un tercero.
  4. Active los Webhooks y guarde. ZampiBot comenzará a enviar los Webhooks de la lista a continuación a su URL.

Notas:

¿Falta algún Webhook? ¿Necesita un Webhook que aún no está disponible? ¡Contáctenos y lo agregaremos!


message-sent

Webhook enviado cuando un usuario o un agente envía un nuevo mensaje.

Respuesta

{
    "function": "message-sent",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "user_id": "947",
        "conversation_user_id": "947",
        "conversation_id": "1057",
        "conversation_status_code": "2",
        "conversation_source": "wa",
        "message_id": "2574",
        "message": "Hello! How are you?",
        "attachments": [["name","https://example.com/image.png"],["name","https://example.com/file.txt"]]
    }
}

email-sent

Webhook enviado cuando se envía un correo electrónico de notificación a un usuario o a un agente.

Respuesta

{
    "function": "email-sent",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "recipient_id": "957",
        "message": "Hello! How can I help you?",
        "attachments": [["name","https://example.com/image.png"],["name","https://example.com/file.txt"]]
     }
}

sms-sent

Webhook enviado cuando un usuario o un agente envía un nuevo mensaje de texto (SMS).

Respuesta

{
    "function": "sms-sent",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "recipent_id": "947",
        "message": "Hello! How are you?",
        "Body": "Hello! How are you?",
        "From": "+15104564545",
        "To": "+15305431221",
        "response": {
            "sid": "SM1f0e8ae6ade43cb3c0ce4525424e404f",
            "date_created": "Fri, 13 Aug 2010 01:16:24 +0000",
            "date_updated": "Fri, 13 Aug 2010 01:16:24 +0000",
            "date_sent": null,
            "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            "to": "+15305431221",
            "from": "+15104564545",
            "body": "A Test Message",
            "status": "queued",
            "flags":["outbound"],
            "api_version": "2010-04-01",
            "price": null,
            "uri": "/2010-04-01/Accounts/ACXXXX/Messages/SM1f004f.json"
        }
    }
}

new-messages

Webhook enviado cuando se reciben nuevos mensajes en el widget de chat o en el área de administración. Si desea recibir mensajes enviados por usuarios desde plataformas externas como WhatsApp o Instagram, utilice message-sent en su lugar.

Respuesta

{
    "function": "new-messages",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "details": {
            "message": "Hello world!",
            "message_id": "10231",
            "attachments": "",
            "payload": "",
            "message_status_code": "0",
            "last_update_time": "2024-04-02 16:57:19",
            "message_user_id": "1964",
            "message_first_name": "Don",
            "message_last_name": "John",
            "message_profile_image": "https://example.com/image.jpg",
            "message_user_type": "admin",
            "department": null,
            "agent_id": null,
            "title": "",
            "source": null,
            "extra": null,
            "tags": null,
            "id": "4607",
            "user_id": "4747",
            "creation_time": "2024-04-02 16:57:17",
            "status_code": "1"
        },
        "messages": [
            {
                "details": {
                    "message": "Hello world!",
                    "attachments": "",
                    "payload": {},
                    "status_code": "0",
                    "id": "10231",
                    "profile_image": "https://example.com/image.jpg",
                    "first_name": "Don",
                    "last_name": "John",
                    "user_id": "1964",
                    "user_type": "admin",
                    "full_name": "Don John",
                    "creation_time": "2024-04-02 16:57:19"
                }
            }
        ]
    }
}

dialogflow-message

Webhook enviado cuando Dialogflow envía una respuesta a un mensaje de usuario.

Respuesta

{
    "function": "dialogflow-message",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "response": {
            "token": "ya29.a0Afkjh8MADFYeT4BgCy3917xqSDdVvw4mgVHrgrLDcgRk9ajWoQAgdjv5e...",
            "messages": [
                {
                    "message": "Hi! How are you doing?"
                }
            ],
            "response": {
                "responseId": "46d2c208-2a7f-4ca2-bd7d-6636982b8bee-0f0e27e1",
                "queryResult": {
                    "queryText": "hi",
                    "action": "input.welcome",
                    "allRequiredParamsPresent": "true",
                    "fulfillmentText": "Hi! How are you doing?",
                    "fulfillmentMessages": [ ... ],
                    "outputContexts": [ ... ],
                    "intent": {
                        "name": "projects/api-project-655517752147/agent/intents...",
                        "displayName": "Default Welcome Intent"
                    },
                    "intentDetectionConfidence": "1",
                    "languageCode": "en"
                },
                "alternativeQueryResults": [ ... ]
            }
        },
        "message": "Hello",
        "conversation_id": 123456
    }
}

message-deleted

Webhook enviado cuando se elimina un mensaje.

Respuesta

{
    "function": "message-deleted",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": "2595"
}

La clave data contiene el ID del mensaje eliminado.


rich-message

Webhook enviado cuando el usuario presiona el botón de envío y los valores ingresados en el Mensaje Enriquecido (Rich Message) se envían a ZampiBot. Todos los Mensajes Enriquecidos que requieren el envío de datos activan este Webhook; algunos de ellos son el formulario de correo electrónico de seguimiento, el formulario de registro y los botones.

Respuesta

{
    "function": "rich-message",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "result": true,
        "data": {
            "type": "inputs",
            "result": {
                "name": [
                    "Don Jhon",
                    "Name"
                ],
                "your-email": [
                    "example@gmail.com",
                    "Your Email"
                ],
                "site-url": [
                    "www.example.com",
                    "Site URL"
                ]
            }
        },
        "id": "example"
    }
}

new-conversation

Webhook enviado cuando se recibe una nueva conversación en el widget de chat del usuario.

Respuesta

{
    "function": "new-conversation-received",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "messages": [
            {
                "id": "10222",
                "user_id": "4746",
                "message": "Hi there!",
                "creation_time": "2024-04-02 07:26:18",
                "attachments": "",
                "status_code": "0",
                "payload": "",
                "conversation_id": "4605",
                "first_name": "User",
                "last_name": "#19332",
                "profile_image": "https://example.com/image.png",
                "user_type": "lead"
            },
            {
                "id": "10223",
                "user_id": "377",
                "message": "How are you?",
                "creation_time": "2024-04-02 07:26:22",
                "attachments": "",
                "status_code": "2",
                "payload": "{\"follow_up_message\":true,\"preview\":\"Preview text!\"]\"}",
                "conversation_id": "4605",
                "first_name": "Smart Assistant",
                "last_name": "",
                "profile_image": "https://example.com/image.png",
                "user_type": "bot"
            }
        ],
        "details": {
            "user_id": "4746",
            "first_name": "User",
            "last_name": "#19332",
            "profile_image": "https://example.com/image.png",
            "user_type": "lead",
            "id": "4605",
            "title": "",
            "status_code": "0",
            "creation_time": "2024-04-02 07:26:17",
            "department": null,
            "agent_id": null,
            "source": null,
            "extra": null,
            "extra_2": null,
            "extra_3": null,
            "tags": null,
            "busy": false
        }
    }
}

new-conversation-created

Webhook enviado cuando se crea una nueva conversación.

Respuesta

{
    "function": "new-conversation-created",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "messages": [
            {
                "id": "10222",
                "user_id": "4746",
                "message": "Hi there!",
                "creation_time": "2024-04-02 07:26:18",
                "attachments": "",
                "status_code": "0",
                "payload": "",
                "conversation_id": "4605",
                "first_name": "User",
                "last_name": "#19332",
                "profile_image": "https://example.com/image.png",
                "user_type": "lead"
            },
            {
                "id": "10223",
                "user_id": "377",
                "message": "How are you?",
                "creation_time": "2024-04-02 07:26:22",
                "attachments": "",
                "status_code": "2",
                "payload": "{\"follow_up_message\":true,\"preview\":\"Preview text!\"]\"}",
                "conversation_id": "4605",
                "first_name": "Smart Assistant",
                "last_name": "",
                "profile_image": "https://example.com/image.png",
                "user_type": "bot"
            }
        ],
        "details": {
            "user_id": "4746",
            "first_name": "User",
            "last_name": "#19332",
            "profile_image": "https://example.com/image.png",
            "user_type": "lead",
            "id": "4605",
            "title": "",
            "status_code": "0",
            "creation_time": "2024-04-02 07:26:17",
            "department": null,
            "agent_id": null,
            "source": null,
            "extra": null,
            "extra_2": null,
            "extra_3": null,
            "tags": null,
            "busy": false
        }
    }
}

conversation-status-updated

Webhook enviado cuando cambia el código de estado de una conversación.

Respuesta

{
    "function": "conversation-status-updated",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "conversation_id": "1057",
        "status_code": "0"
    }
}

Códigos de estado: activo = 0, esperando respuesta del usuario = 1, esperando respuesta del agente = 2, archivado = 3, papelera = 4.


login

Webhook enviado cuando un usuario inicia sesión correctamente desde el formulario de inicio de sesión del chat. Este Webhook se envía solo si el inicio de sesión es exitoso.

Respuesta

{
    "function": "login",
    "key": "xxxxxxxx",
    "data": {
        "details": {
            "id": "18",
            "profile_image": "https://schiocco.s3.amazonaws.com/3045506.png",
            "first_name": "Fede",
            "last_name": "",
            "email": "fede@fede.com",
            "user_type": "user",
            "token": "ec83c134e5d53be98abd0025145473eec0ff814e",
            "url": "https://sandbox.cloud.board.support\/script",
            "password": "$2y$10$vYtwWDEqOt7jMSBcCmPigOrqw06tdD8ZSFm70L6c1PLEQ8j938l2W",
            "conversation_id": "false"
        }
    },
    "sender-url": "http:\/\/localhost\/"
}

registration

Webhook enviado cuando un usuario se registra correctamente desde el formulario de registro del chat. Este Webhook se envía solo si el registro es exitoso. También se envía si el registro se actualiza a través del formulario de registro de un Mensaje Enriquecido.

Respuesta

{
    "function": "registration",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "id": "example",
        "conversation_id": "123", 
        "user": {
            "profile_image": [
                "https://board.support/user.svg",
                "Profile image"
            ],
            "first_name": [
                "Don",
                "First name"
            ],
            "last_name": [
                "John",
                "Last name"
            ],
            "email": [
                "example@email.com",
                "Email"
            ],
            "password": [
                "12345678",
                "Password"
            ],
            "password-check": [
                "12345678",
                "Repeat password"
            ],
            "user_type": [
                "user",
                ""
            ]
        },
        "extra": {
            "phone": [
                "+02123456789",
                "Phone"
            ],
            "city": [
                "London",
                "City"
            ]
        }
    }
}

user-deleted

Webhook enviado cuando se elimina un usuario.

Respuesta

{
    "function": "user-deleted",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": "951"
}

La clave data contiene el ID del usuario eliminado.


new-email-address

Webhook enviado cuando un usuario registra su correo electrónico a través de un mensaje de seguimiento, mensaje de suscripción o mensaje enriquecido de correo electrónico.

Respuesta

{
    "function": "new-email-address",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "name": "John Doe",
        "email": "email@example.com"
    }
}

Uso de Apis

JAVASCRIPT API

La API de JavaScript proporciona una colección de funciones y eventos que sustentan la mayor parte de la funcionalidad de ZampiBot. Para comenzar a usar la API de JavaScript, siga el tutorial a continuación.


⚙️ Configuración y Uso

Asegúrese de cargar el chat incluyendo el siguiente script en la página donde desea utilizar las APIs e inclúyalo antes del script del chat. Asegúrese de que los enlaces sean correctos. Si está utilizando la versión de WordPress, este paso no es necesario.

Si está utilizando la versión Cloud, incluya solo jQuery y el código de inserción (embed) desde su panel de control. Vea el ejemplo a continuación (reemplace 12345678 con su propio ID).

HTML


<script src="https://chatbot.zampisoft.com/script/js/min/jquery.min.js"></script>
<script id="chat-init" src="https://chatbot.zampisoft.com/account/js/init.js?id=12345678"></script>

Ingrese los fragmentos de código, funciones y métodos de esta documentación dentro de una de las funciones a continuación:

JavaScript

(function ($) {
    $(document).on("SBInit", function () {
        // Su código aquí
    });
}(jQuery));

Si el evento SBInit no se dispara, utilice el evento SBReady en su lugar.


Parámetros de Función

Ingrese los parámetros de la función en el mismo orden de esta documentación, por ejemplo: SBChat.sendMessage(user_id, message, attachments).


Depuración (Debug)

Verifique la consola del navegador para ver errores e información de depuración.


📦 Objetos

Los objetos de JavaScript utilizados por ZampiBot se enumeran a continuación. En algunos casos, necesitará usar estos objetos para utilizar una función.

👤 SBUser

Representa a un usuario.

Uso: new SBUser(settings, extra)

Métodos:

Variables:


✉️ SBMessage

Representa un mensaje de una conversación.

Uso: new SBMessage(details)

Métodos:

Variables:


💬 SBConversation

Representa una conversación.

Uso: new SBConversation(messages, details)

Métodos:

Variables:


🔣 Variables Globales

Las variables en la lista a continuación son accesibles públicamente vía JavaScript.

Variable

Descripción

SB_ARTICLES_PAGE

Establézcalo en true para mostrar la página de artículos en lugar del chat.

SB_LOCAL_SETTINGS

Sobrescribe las configuraciones predeterminadas del lado del cliente. El valor es un array de claves y valores (ej. { registration-required: false }). Solo afecta configuraciones del cliente.

SB_DISABLED

Establézcalo en true e insértelo en una página para prevenir que el chat o el área de tickets carguen.

SB_REGISTRATION_REQUIRED

true para deshabilitar el registro obligatorio, false para deshabilitar el registro.

SB_TICKETS

Establézcalo en true para forzar la carga del área de tickets en lugar del chat. Requiere la App de Tickets.

SB_DEFAULT_USER

Establece los detalles del usuario por defecto para nuevos visitantes. Si un usuario registrado visita y su login difiere, se cierra sesión e inicia con los nuevos detalles. Incluya email y hash de contraseña para asegurar el funcionamiento.

SB_DEFAULT_DEPARTMENT

Asigne un ID de departamento para asignar automáticamente ese departamento a nuevas conversaciones creadas desde la página.

SB_DEFAULT_AGENT

Asigne un ID de agente para asignar automáticamente ese agente a nuevas conversaciones. Úselo con la opción "Ocultar conversaciones de otros agentes".

SBChat.initialized

true si el chat está inicializado.

SBChat.conversation

Devuelve la conversación activa. false si no hay ninguna.

SBChat.is_busy

true si el chat está en modo ocupado (no se pueden enviar mensajes).

SBChat.chat_open

true si el chat está abierto.

SBChat.agent_id

ID del agente activo en la conversación. -1 si no hay.

SBChat.agent_online

true si el agente activo está en línea.

SBChat.user_online

true si el usuario está en línea.

SBChat.timetable

true si la hora actual está dentro del horario de oficina.

SBChat.dashboard

true si el panel de control está activo y visible.


⚡ Funciones

Funciones para gestionar el chat, usuarios, conversaciones y mensajes.

SBChat.submit()

Ejecuta el evento de clic del botón de envío del editor de chat, envía un mensaje con el contenido insertado por el usuario (mensaje y/o adjuntos) y limpia el editor.


SBChat.sendMessage()

Añade un nuevo mensaje a la conversación activa.

Parámetros

Información


SBChat.updateMessage()

Cambia el texto de un mensaje existente.

Parámetros

Información


SBChat.sendEmail()

Envía un correo electrónico a los usuarios o agentes devueltos por getRecipientUserID().

Parámetros


SBChat.sendSMS()

Envía un mensaje de texto (SMS) a los usuarios o agentes devueltos por getRecipientUserID().

Parámetros


SBChat.desktopNotification()

Envía una notificación de escritorio (Notificación Web) al usuario, o al agente conectado si la notificación se envía desde el área de administración.

Parámetros


SBChat.getRecipientUserID()

Determina el destinatario adecuado basándose en el contexto.


SBChat.initChat()

Inicializa el chat y muestra el botón de chat.

Información


SBChat.open()

Abre o cierra la ventana del chat. También puede añadir la clase o ID sb-open-chat a cualquier elemento (por ejemplo, un botón) para abrir o cerrar el chat cuando se haga clic en él.

Parámetros


SBChat.openConversation()

Abre una conversación y la muestra en la ventana de chat.

Parámetros


SBChat.update()

Actualiza la conversación activa y comprueba si hay nuevos mensajes. Esta función se dispara automáticamente cada 1000ms.

Información


SBChat.populateConversations()

Puebla la lista de conversaciones del usuario en el panel (dashboard) con todas las conversaciones del usuario.

Parámetros

Información


SBChat.updateConversations()

Actualiza la lista de conversaciones del usuario en el panel y comprueba si hay nuevas conversaciones. Esta función se dispara automáticamente cada 10000ms.

Información


SBChat.newConversation()

Crea una nueva conversación y opcionalmente añade el primer mensaje a ella.

Parámetros

Información


SBChat.setConversation()

Establece una conversación existente como la conversación activa.

Parámetros

Información


SBChat.startRealTime()

Inicia la comprobación en tiempo real de nuevos mensajes para la conversación activa cada 1000ms.


SBChat.stopRealTime()

Detiene la comprobación en tiempo real de nuevos mensajes.


SBChat.busy()

Muestra u oculta el icono de carga y habilita o deshabilita el modo ocupado del chat. Cuando el chat está en modo ocupado, no se pueden enviar mensajes ni adjuntos.

Parámetros

Información


SBChat.lastAgent()

Devuelve el último agente de la conversación activa.

Parámetros

Respuesta

JSON


{
    "user_id": "123456",
    "full_name": "Don John",
    "profile_image": "https://zampisoft.com/agent.svg"
}

SBChat.scrollBottom()

Desplaza el chat hacia el final (abajo).

Parámetros


SBChat.isBottom()

Comprueba si el chat está desplazado hasta el final.


SBChat.showDashboard()

Muestra el panel de control (dashboard).


SBChat.hideDashboard()

Oculta el panel de control.


SBChat.showPanel()

Muestra el área especificada dentro del widget de chat.

Parámetros


SBChat.hidePanel()

Oculta el panel activo dentro del widget de chat.


SBChat.clear()

Limpia el área de conversación del widget de chat y deshabilita la conversación activa.


SBChat.updateNotifications()

Actualiza el contador rojo de notificaciones del botón de chat que alerta al usuario de nuevos mensajes y conversaciones.

Parámetros


SBChat.setConversationStatus()

Actualiza el código de estado de una conversación.

Parámetros

Información


SBChat.typing()

Gestiona la etiqueta "escribiendo..." del encabezado del chat.

Parámetros

Información

SBChat.showArticles()

Muestra el área de artículos o un solo artículo.

Parámetros

SBChat.getArticles()

Devuelve la lista de artículos o el contenido de un solo artículo.

Parámetros

Respuesta

JSON

[
    {
        "id": "6P2Oq",
        "title": "What's new with the API V2?p",
        "content": "The API V2 is the new iteration of our developer API ...",
        "link": "https://board.support",
        "categories": ["Nv9PG"]
    },
    {
        "title": "Which API version am I currently using?",
        "content": "The API version is configured separately for each ...",
        "link": "",
        "id": "IDkft",
        "categories": []
    },
    ...
]

Si es un solo artículo, el valor devuelto es el artículo:

{ "id" : "6P2Oq" , "title" : "¿Qué novedades trae la API V2?p" , "content" : "La API V2 es la nueva versión de nuestra API para desarrolladores. Esta nueva API integra Google Cloud Spe. La API V2 es la nueva versión de nuestra API para desarrolladores." , "link" : "https://zampisoft.com" }
    

Información


SBChat.getArticleCategories()

Devuelve las categorías de artículos.

Parámetros

Respuesta

[
  {
    "id": "audio",
    "titulo": "Audio",
    "descripcion": "Lorem ipsum dolor adipiscing elit.",
    "imagen": "https://example.com/image.png",
    "parent": true,
    "idiomas": {
      "es": {
        "titulo": "Audio",
        "descripcion": "Leorem ipsum dolor consectetur adipiscing elit."
      }
    }
  },
  {
    "id": "audio_digital",
    "titulo": "Audio digital",
    "descripcion": "Lorem ipsum dolor sit amet, adipiscing.",
    "imagen": "",
    "parent": false,
    "idiomas": {}
  }
]

SBChat.searchArticles()

Muestra los artículos que coinciden con la búsqueda en la caja de artículos del panel (dashboard).

Parámetros

Información


SBChat.setArticleRating()

Establece la calificación de un artículo.

Parámetros


SBChat.categoryEmoji()

Selecciona una categoría de la caja de emojis.

Parámetros


SBChat.searchEmoji()

Busca emojis que coincidan con los términos de búsqueda y los muestra en la caja de emojis.

Parámetros


SBChat.insertText()

Inserta una cadena en el editor de chat.

Parámetros

Información


SBChat.privacy()

Muestra el mensaje de privacidad y obliga al usuario a aceptar los términos antes de iniciar el chat.


SBChat.popup()

Muestra un mensaje emergente (pop-up) o lo cierra.

Parámetros

Información


SBChat.slackMessage()

Envía un mensaje a Slack.

Parámetros

Información


SBChat.deleteMessage()

Elimina un mensaje de la base de datos y de la conversación activa si está disponible.

Parámetros

Información


SBChat.registration()

Muestra el área de registro o de inicio de sesión, o comprueba si el registro es obligatorio.

Parámetros


SBChat.addUserAndLogin()

Registra un nuevo usuario como visitante y lo conecta (login) automáticamente después del registro. Opcionalmente ejecuta una función al completar.

Parámetros

Respuesta

[
    {
        "id": "913",
        "profile_image": "https://zampisoft.com/user.svg",
        "first_name": "Don",
        "last_name": "John",
        "email": "hello@example.com",
        "user_type": "user",
        "token": "9b25351047ee758aa97ee4868d130cc1ceb8decf"
    },
    "YXNkWGNSeTdtRTdDYVkxVG8wckN4YWF6V2s0Tk1mczBSVHdQbHBpOWdmejVUTTdOUUxEUENhdUVoYmROWn..."
]

El último valor son los datos de inicio de sesión encriptados listos para ser almacenados en el Web Storage del navegador del usuario. Utilice la función SBF.loginCookie(response[1]); para almacenarlo.

Información


SBChat.getDepartmentCode()

Devuelve un código HTML con los detalles del departamento dado o de todos los departamentos. Detalles del departamento: id, color, image, name.

Parámetros

Respuesta

HTML

<div data-color="red"><img src="sales.jpg" /><div>Sales<div></div>

SBChat.offlineMessage()

Comprueba si el mensaje de fuera de línea puede enviarse y lo envía.

Información


SBChat.isInitDashboard()

Comprueba si el panel (dashboard) se muestra por defecto cuando se inicializa el widget de chat.


SBChat.closeChat()

Archiva una conversación y la oculta del widget de chat.

Parámetros


SBChat.flashNotification()

Inicia la notificación parpadeante (flash).


SBChat.playSound()

Reproduce el sonido que suena cuando se recibe un nuevo mensaje.

Parámetros


SBChat.automations.runAll()

Comprueba todas las automatizaciones y las ejecuta si las condiciones de activación se validan.


🧩 JAVASCRIPT API: Apps

Lista de funciones de las aplicaciones de ZampiBot.

SBApps.is()

Comprueba si una app está disponible.

Parámetros


SBApps.wordpress.ajax()

Realiza una llamada AJAX de WordPress.

Parámetros


SBApps.dialogflow.message()

Envía un mensaje a Dialogflow y añade la respuesta de Dialogflow a la conversación activa como un nuevo mensaje.

Parámetros

Información


SBApps.dialogflow.active()

Comprueba si Dialogflow y OpenAI están activos o los desactiva.

Parámetros

Respuesta Devuelve true si el bot de Dialogflow está activo; de lo contrario, devuelve false.


SBApps.dialogflow.welcome()

Dispara la Intención de Bienvenida (Welcome Intent) de Dialogflow y muestra el mensaje de bienvenida de Dialogflow.

Información


SBApps.dialogflow.openAI()

Envía un mensaje a OpenAI (ChatGPT), devuelve la respuesta y opcionalmente añade la respuesta como un nuevo mensaje.

Parámetros

Información


SBApps.dialogflow.typing()

Inicia la animación de "escribiendo" del widget de chat.


SBApps.dialogflow.humanTakeover()

Inicia la toma de control humana (human takeover) de Dialogflow configurada en Configuración > Inteligencia Artificial > Toma de control humana.


SBApps.dialogflow.humanTakeoverActive()

Comprueba si la toma de control humana está activa para la conversación activa.


SBApps.dialogflow.translate()

Traduce múltiples cadenas a través de Google Translate.

Parámetros


🎫 JAVASCRIPT API: Tickets

Lista de funciones de la App de Tickets.

SBTickets.showPanel()

Muestra un panel o el área de conversación.

Parámetros


SBTickets.showSidePanels()

Muestra u oculta los paneles laterales.

Parámetros


SBTickets.setAgent()

Obtiene los detalles del agente y puebla el área de perfil del agente del panel derecho.

Parámetros


SBTickets.activateConversation()

Activa y muestra una conversación.

Parámetros


SBTickets.selectConversation()

Establece el estilo de una conversación del panel izquierdo como la conversación activa.

Parámetros


SBTickets.getActiveConversation()


Devuelve el objeto HTML DOM de la conversación activa.

Parámetros


📡 JAVASCRIPT API: Pusher

Lista de funciones para Pusher. Más detalles en pusher.com.

SBPusher.init()

Inicializa Pusher y opcionalmente ejecuta una función al completar la inicialización.

Parámetros


SBPusher.start()

Inicia Pusher y las notificaciones Push. Ejecute esta función después de SBPusher.init() y después de que el usuario esté activo.


SBPusher.subscribe()

Suscribe al usuario activo a un canal de Pusher.

Parámetros

Información


SBPusher.event()

Suscribe al usuario activo a un evento de un canal de Pusher y ejecuta la función dada cuando se recibe el evento.

Parámetros

Información


SBPusher.trigger()

Dispara un evento en un canal de Pusher.

Parámetros


SBPusher.presence()

Suscribe al usuario activo al canal de presencia utilizado para el estado en línea de usuarios y administradores.

Parámetros

Información


SBPusher.presenceUnsubscribe()

Desuscribe al usuario activo del canal de presencia.


SBF.serviceWorker.pushNotification()

Envía una notificación Push al último agente de la conversación, o a todos los agentes si ningún agente ha respondido aún.

Parámetros

Información

➕ JAVASCRIPT API: Más funciones

Lista de varias funciones que realizan diferentes tareas.

SBF.translate()

Traduce una cadena al idioma del usuario activo.

Parámetros

Información


SBF.activeUser()

Devuelve el usuario activo como un objeto SBUser, devuelve false si no se encuentra el usuario activo.

Representación JSON del usuario activo:

JSON

{
    "details": {
        "id": "914",
        "profile_image": "https://zampisoft.com/user.svg",
        "first_name": "User",
        "last_name": "#23262",
        "email": null,
        "user_type": "visitor",
        "token": "bc308e274473fb685a729abe8a4bf82d3c49cd2f"
    },
    "extra": {},
    "conversations": []
}

Información


SBF.getActiveUser()

Activa el usuario conectado (logueado) y devuelve los detalles del usuario.

Parámetros

Respuesta

JSON

{
    "id": "914",
    "profile_image": "https://zampisoft.com/user.svg",
    "first_name": "Don",
    "last_name": "John",
    "email": "hello@example.com",
    "user_type": "user",
    "token": "bc308e274473fb685a729abe8a4bf82d3c49cd2f"
}

Información


SBF.cors()

Ejecuta una petición HTTP POST o GET a una URL y devuelve la respuesta.

Parámetros


SBF.null()

Comprueba si una variable existente es nula o vacía.

Parámetros

Información


SBF.deactivateAll()

Oculta todas las ventanas emergentes (pop-ups) y las ventanas. Esta función se utiliza principalmente en el área de administración.


SBF.getURL()

Busca un parámetro en la URL y devuelve su valor, o devuelve un array con todos los parámetros.

Parámetros


SBF.restoreJson()

Convierte una cadena codificada en JSON a texto normal.

Parámetros


SBF.stringToSlug()

Convierte una cadena a un slug eliminando todos los caracteres especiales, reemplazando todos los espacios con el carácter -, y convirtiendo la cadena a minúsculas.

Parámetros

Información


SBF.settingsStringToArray()

Convierte una cadena a un array de valores. Formato de la cadena: nombre:valor,nombre:valor,....

Parámetros

Respuesta

JSON

{
    "name": "value",
    "name": "value",
    ...
}

SBF.random()

Devuelve una cadena alfanumérica aleatoria.


SBF.isAgent()

Comprueba si un tipo de usuario es un agente. Devuelve true solo si el tipo de usuario es agent, admin, o bot.

Parámetros


SBF.error()

Dispara el error de JavaScript personalizado de ZampiBot.

Parámetros


SBF.errorValidation()

Comprueba si una respuesta de una llamada AJAX es un error de validación.

Parámetros

SBF.login()

Inicia sesión de un usuario o un agente. El inicio de sesión se puede completar de dos maneras: vía correo electrónico y contraseña, o vía ID de usuario y token.

Parámetros

Respuesta

JSON

[
    {
        "id": "913",
        "profile_image": "https://board.support/user.svg",
        "first_name": "Don",
        "last_name": "John",
        "email": "example@domain.com",
        "user_type": "user",
        "token": "9b25351047ee758aa97ee4868d130cc1ceb8decf"
    },
    "YXNkWGNSeTdtRTdDYVkxVG8wckN4YWF6V2s0Tk1mczBSVHdQbHBpOWdmejVUTTdOUUxEUENhdUVoYmROWn..."
]

Devuelve false si el inicio de sesión no es exitoso.


SBF.logout()

Cierra la sesión del usuario conectado y recarga la página.


SBF.loginCookie()

Crea o actualiza la cookie de inicio de sesión.

Parámetros


SBF.reset()

Cierra la sesión del usuario, elimina todos los datos almacenados de ZampiBot y recarga la página.


SBF.lightbox()

Muestra el contenido dado en una ventana modal (lightbox).

Parámetros


SBF.storage()

Gestiona el almacenamiento local (Local Storage) de ZampiBot. El almacenamiento local es una tecnología que guarda datos en el navegador de forma permanente.

Parámetros


SBF.storageTime()

Guarda una clave y la fecha y hora actual en el almacenamiento local para comprobar en el futuro si está dentro del número de horas dado o si ha expirado.

Parámetros

Respuesta Si el atributo hours está establecido, devuelve true si la suma de la fecha guardada y las horas dadas es menor que la fecha y hora actual; de lo contrario, devuelve false. Ejemplo: si la hora guardada es 5:00 pm, e inserta 3, la función devolverá true solo si la hora actual es 8:01 pm o más.


SBF.setting()

Devuelve el valor de una configuración, o le asigna un valor.

Parámetros

Configuraciones disponibles Algunas de las configuraciones disponibles y sus valores se encuentran en la lista a continuación.

JSON

{
    "registration-required": "",
    "registration-timetable": false,
    "registration-offline": false,
    "registration-link": "",
    "visitors-registration": false,
    "privacy": false,
    "popup": true,
    "popup-mobile-hidden": true,
    "welcome": false,
    "welcome-trigger": "open",
    "welcome-delay": 0,
    "follow": false,
    "follow-delay": "1000",
    "chat-manual-init": false,
    "chat-login-init": false,
    "sound": ["code": "n", "volume": 0.5, "repeat": 5],
    "header-name": true,
    "desktop-notifications": "all",
    "flash-notifications": "all",
    "push-notifications": true,
    "notifications-icon": "",
    "bot-id": "377",
    "bot-name": "Bruce Peterson",
    "bot-image": "",
    "bot-delay": 0,
    "dialogflow-office-hours": false,
    "dialogflow-active": true,
    "dialogflow-human-takeover": false,
    "slack-active": false,
    "rich-messages": [
        "email",
        "registration",
        "login",
        "timetable",
        "articles",
        "immagine",
        "video"
    ],
    "display-users-thumb": true,
    "hide-agents-thumb": true,
    "notify-user-email": true,
    "notify-agent-email": false,
    "translations": false,
    "auto-open": false,
    "office-hours": true,
    "disable-office-hours": false,
    "disable-offline": false,
    "timetable": false,
    "timetable-hide": [
        false,
        "checkbox"
    ],
    "articles": true,
    "articles-title": "",
    "init-dashboard": false,
    "wp": false,
    "wp-users-system": "sb",
    "queue": false,
    "queue-message": "",
    "queue-message-success": "",
    "queue-response-time": "",
    "routing": false,
    "webhooks": true,
    "agents-online": false,
    "timetable-message": "",
    "tickets-registration-required": true,
    "tickets-registration-redirect": "",
    "tickets-default-form": "login",
    ...
}

SBF.shortcode()

Convierte un shortcode en un array que contiene el nombre del shortcode y la configuración del mismo.

Parámetros

Respuesta

JSON

[
    "rating",
    {
        "title": "Califique su conversación",
        "message": "Cuéntenos su experiencia.",
        "success": "¡Gracias!"
    }
]

SBF.openWindow()

Abre una página web en una nueva ventana.

Parámetros


SBF.loadResource()

Incluye un archivo .js o .css en el área <head> de la página.

Parámetros


SBF.debounce()

Ejecuta la función dada solo una vez por el tiempo en milisegundos dado; el temporizador se reinicia en cada llamada.

Parámetros


SBF.translate()

Traduce una cadena utilizando las traducciones de ZampiBot.

Parámetros


SBF.escape()

Escapa una cadena (sanitización).

Parámetros


SBF.convertUTCDateToLocalDate()

Convierte una fecha a la hora local.

Parámetros

Respuesta Mon Jan 30 2023 10:45:00 GMT+0000 (Greenwich Mean Time)


SBF.getLocationTimeString()

Devuelve una cadena que contiene la ubicación y la hora local actual de la zona horaria dada.

Parámetros

Respuesta 05:15 AM in London, United Kingdom


SBF.beautifyTime()

Convierte una fecha al formato local y realiza otras optimizaciones para hacer la fecha más amigable.

Parámetros

Respuesta <span>30/01/2023</span>


SBF.dateDB()

Convierte un formato de fecha al formato de fecha de la base de datos y establece el UTC en +0.

Parámetros


SBF.UTC()

Devuelve la fecha y hora especificada en formato unix utilizando el desplazamiento UTC establecido en Configuración > Misceláneas > Zona horaria.

Parámetros

Respuesta 1675075500000


SBF.unix()

Obtiene el valor de la marca de tiempo (timestamp) unix de una cadena de fecha y hora con formato yyyy-mm-dd hh:mm:ss.

Parámetros

Respuesta 1675075500000


⚡ JAVASCRIPT API: Eventos

Los eventos le permiten interceptar las acciones de ZampiBot en tiempo real y ejecutar código JavaScript personalizado cuando se dispara una acción.

Uso

Utilice el código a continuación y reemplace EVENT-NAME con el nombre del evento. La response (respuesta) representa el valor devuelto si solo hay un atributo; de lo contrario, es un array de valores. Se requiere JQuery.

JavaScript

$(document).on("EVENT-NAME", function (e, response) {
    // Su código aquí
});

Ejemplo:

JavaScript

$(document).on("SBMessageSent", function (e, response) {
    console.log(response["user_id"]);
    console.log(response["conversation_id"]);
    console.log(response["message"]);
});

SBReady

Evento disparado al cargar la página después de que el script del chat main.js se haya cargado. Este evento también se dispara en el área de administración.


SBInit

Evento disparado al cargar la página cuando el chat ha completado la inicialización.


SBTicketsInit

Evento disparado al cargar la página cuando el área de tickets ha completado la inicialización. Este evento está disponible solo cuando la App de Tickets está activa.


SBLogout

Evento disparado cuando el usuario activo cierra sesión.


SBError

Evento disparado cuando ocurre un error en ZampiBot.

Respuesta


SBDoubleLoginError

Evento disparado en la inicialización del chat si un agente o un administrador ya ha iniciado sesión.


SBUserDeleted

Evento disparado cuando se elimina un usuario.

Respuesta El ID del usuario que ha sido eliminado.


SBMessageSent

Evento disparado cuando se ha enviado un nuevo mensaje.

Respuesta


SBBotMessage

Evento disparado cuando el chatbot responde a un mensaje.

Respuesta


SBSlackMessageSent

Evento disparado cuando se envía un mensaje a Slack.

Respuesta


SBEmailSent

Evento disparado cuando se envía un correo electrónico de notificación a un usuario o un agente.

Respuesta


SBNotificationsUpdate

Evento disparado cuando se actualiza el contador rojo de notificaciones del botón de chat que alerta al usuario de nuevos mensajes y conversaciones.

Respuesta


SBConversationOpen

Evento disparado cuando una conversación está completamente cargada y se abre en el chat.

Respuesta


SBNewMessagesReceived

Evento disparado cuando hay nuevos mensajes en la conversación activa.

Respuesta


SBMessageDeleted

Evento disparado cuando se elimina un mensaje.

Respuesta El ID del mensaje que ha sido eliminado.


SBNewConversationReceived

Evento disparado cuando se recibe una nueva conversación.

Respuesta La nueva conversación como un objeto SBConversation.


SBNewConversationCreated

Evento disparado cuando se crea una nueva conversación.

Respuesta La nueva conversación como un objeto SBConversation.


SBActiveConversationChanged

Evento disparado cuando se cambia la conversación activa.

Respuesta La nueva conversación activa como un objeto SBConversation.


SBActiveConversationStatusUpdated

Evento disparado cuando se actualiza el código de estado de la conversación activa.

Respuesta


SBPopulateConversations

Evento disparado después de que se han obtenido todas las conversaciones del usuario.

Respuesta


SBChatOpen

Evento disparado cuando se abre el chat.


SBChatClose

Evento disparado cuando se cierra el chat.


SBQueueUpdate

Evento disparado cuando se inicia la cola y cada vez que la cola se actualiza.

Respuesta La posición del usuario en la cola. Si la posición es 0, la cola ha terminado y el usuario puede iniciar el chat.


SBBusy

Evento disparado cuando cambia el estado de "ocupado" del chat. El chat está ocupado si está operando, como enviando un mensaje. Cuando el chat está ocupado, algunas funciones no se pueden disparar, como enviar un nuevo mensaje.

Respuesta Devuelve true si el chat está ocupado, de lo contrario false.


SBDashboard

Evento disparado cuando se muestra el panel de control (dashboard).


SBDashboardClosed

Evento disparado cuando se cierra el panel de control y se muestra una conversación en su lugar.


SBTyping

Evento disparado cuando un usuario o un agente está escribiendo en el editor.

Respuesta Devuelve true si el usuario o agente está escribiendo, de lo contrario devuelve false.


SBArticles

Evento disparado cuando se muestra el panel de artículos o cuando se abre un solo artículo.

Respuesta


SBPrivacy

Evento disparado en la inicialización del chat si se muestra el formulario de privacidad.


SBPopup

Evento disparado cuando se muestra un mensaje emergente (pop-up).

Respuesta El array con el contenido del pop-up: { image: "", title: "", message: "" }.


SBFollowUp

Evento disparado cuando se envía el mensaje de seguimiento.


SBWelcomeMessage

Evento disparado cuando se envía el mensaje de bienvenida.


SBLoginForm

Evento disparado cuando el usuario inicia sesión correctamente desde el formulario de inicio de sesión del chat. Este evento se dispara solo si el inicio de sesión es exitoso.

Respuesta El usuario como un objeto SBUser.


SBRegistrationForm

Evento disparado cuando el usuario se registra correctamente desde el formulario de registro del chat. Este evento se dispara solo si el registro es exitoso. También se dispara si el registro se actualiza a través del formulario de Mensaje Enriquecido.

Respuesta


SBRichMessageShown

Evento disparado cuando se muestra un Mensaje Enriquecido (Rich Message) cargado asíncronamente.

Respuesta


SBRichMessageSubmit

Evento disparado cuando se recibe la respuesta de un Mensaje Enriquecido.

Respuesta


SBAttachments

Evento disparado cuando el usuario adjunta un archivo.


SBNewEmailAddress

Evento disparado cuando un usuario registra su correo electrónico a través del mensaje de seguimiento o el formulario de registro.

Respuesta


SBPanelActive

Evento disparado cuando se abre un panel del área de Tickets. Este evento está disponible solo cuando la App de Tickets está activa.

Respuesta


SBBotPayload

Evento disparado cuando un mensaje de Dialogflow contiene un Payload de ZampiBot. Ejemplos de payload: human-takeover, redirect, woocommerce-update-cart, woocommerce-checkout.

Respuesta El nombre del payload.


SBBotAction

Evento disparado cuando un mensaje de Dialogflow contiene una acción de Dialogflow. Actualmente solo está disponible la acción end (Finalizar conversación).

Respuesta El nombre de la acción.


SBSMSSent

Evento disparado cuando se envía una notificación por mensaje de texto a un usuario o un agente.

Respuesta


SBActiveUserLoaded

Evento disparado cuando el usuario activo ha sido cargado.

Respuesta


SBOpenAIMessage

Evento disparado cuando OpenAI (ChatGPT) devuelve una respuesta.

Respuesta


SBGetUser

Evento disparado cuando los detalles de un usuario son obtenidos de la base de datos.

Respuesta El usuario como un objeto SBUser.


SBSettingsSaved

Evento disparado cuando se guardan las configuraciones del área de administración.

Respuesta


🔄 MISCELÁNEOS: AJAX

Funciones AJAX

Lista de funciones AJAX. Las funciones AJAX son similares a la WEB API: utilizan el mismo nombre de función, los mismos parámetros y devuelven las mismas respuestas.

Utilice la función a continuación para iniciar una llamada AJAX:

JavaScript

SBF.ajax({
    function: 'NOMBRE-DE-LA-FUNCION',
    parameter: value,
    parameter: value,
    ...
}, (response) => {
   // Su código va aquí
});

Reemplace NOMBRE-DE-LA-FUNCION con el nombre de una de las funciones a continuación. Reemplace la lista de parameter: value con los parámetros de la función. Los parámetros y respuestas son los mismos que en la WEB API. La respuesta está en formato JSON.

¡Advertencia! No incluya el token en los parámetros. El token debe mantenerse siempre en secreto.


Lista de Funciones Disponibles

Las funciones marcadas como "Función de Admin" requieren permisos especiales.


Más funciones AJAX

Las siguientes funciones están disponibles solo a través de AJAX.

close-message

Envía el mensaje de cierre a una conversación. Puede establecer el mensaje de cierre en el área Configuración > Chat.

Requisitos Esta es una función de administración y funciona solo si el usuario activo es un agente.

Parámetros

Respuesta

JSON

{
    "success": true,
    "response": {
        "status": "success",
        "message-id": 123456,
        "queue": false
    }
}

update-user-and-message

Actualiza los detalles de un usuario y el contenido de un mensaje.

Requisitos Si el usuario activo es un usuario, solo se puede actualizar el usuario activo y solo los mensajes vinculados a las conversaciones del usuario. Si el usuario activo es un agente o admin, la función funciona para cualquier usuario y cualquier mensaje.

Parámetros

Respuesta true


get-agent

Devuelve los detalles de un agente, administrador o bot.

Parámetros

Respuesta

JSON

{
    "id": "2",
    "first_name": "Don",
    "last_name": "John",
    "department": null,
    "flag": "gb.png",
    "country_code": "GB",
    "details": [
        {
            "slug": "city",
            "name": "City",
            "value": "London"
        },
        {
            "slug": "country",
            "name": "Country",
            "value": "United Kingdom"
        },
        {
            "slug": "sport",
            "name": "Sport",
            "value": "email@example.com"
        },
        {
            "slug": "timezone",
            "name": "Timezone",
            "value": "Europe/London"
        }
        ...
    ]
}

user-autodata

Obtiene los siguientes detalles sobre el usuario activo y actualiza los detalles del usuario: IP, ciudad, ubicación, país, zona horaria, moneda, navegador, idioma del navegador, sistema operativo.

Parámetros

Respuesta true


get-agent-department

Devuelve el departamento del agente o administrador activo.

Respuesta Devuelve el ID del departamento si está establecido; de lo contrario, devuelve false.

Uso de Apis

CASOS DE USO

📚 Casos de uso (Use cases)

Los casos de uso son ejemplos del mundo real de la API. Pueden ser una combinación de diferentes lenguajes, APIs y configuraciones. Están diseñados para completar tareas específicas.

👤 Registrar un usuario personalizado e iniciar sesión

Este caso de uso explica cómo registrar manualmente un usuario personalizado e iniciar sesión antes de iniciar el chat. Se recomiendan los métodos: VARIABLE JS, API PHP y API PHP + JS + WEB.

Método 1: VARIABLE JS

Simplemente ingrese la variable SB_DEFAULT_USER. Consulte la documentación de la API JS para más detalles sobre esta variable.


Método 2: API PHP

1. Registrar al usuario e iniciar sesión Verifique si un usuario activo ya ha iniciado sesión comprobando el correo electrónico. Si es así, inicie sesión; de lo contrario, registre un nuevo usuario.

require_once($_SERVER["DOCUMENT_ROOT"] . "/chatbot.zampisoft.com/include/functions.php");
$active_user = sb_get_active_user();

if (!$active_user || $active_user["email"] != "don.john@email.com") {
    $response = sb_add_user_and_login([ 
        "profile_image" => "https://chatbot.zampisoft.com/media/docs/user.png", 
        "first_name" => "Don", 
        "last_name" => "John", 
        "email" => "don.john@email.com", 
        "password" => "12345678"
    ], [
        "phone" => ["123456789", "Phone"], 
        "city" => ["London", "City"]
    ]);

    if ($response == "duplicate-email") {
        $response = sb_login("don.john@email.com", "12345678");
    }
}

Método 3: API PHP + JS + WEB

1. Habilitar la inicialización manual Vaya a Configuración > Chat, marque la opción Inicialización manual y guarde.

2. Imprimir el código JS para registrar e iniciar sesión Genere un código JS para insertar en todas las páginas que contienen el chat.

$existing_user_email = 'don.john@email.com';
$sb_user = supportboard_curl(['function' => 'get-user-by', 'by' => 'email', 'value' => $existing_user_email]);
$code_login_existing_user = '';

if (isset($sb_user['success']) && $sb_user['success']) {
   $sb_user = $sb_user['response']; 
   $code_login_existing_user = 'SBF.login("", "", "' . $sb_user['id'] . '", "' . $sb_user['token'] . '", () => { SBChat.initChat(); });';
}  

$code = 'jQuery(document).on("SBReady", function () {
            SBF.getActiveUser(true, () => {
                if (!SBF.activeUser() || (SBF.activeUser().email != "' . $existing_user_email . '")) {
                    SBF.ajax({
                        function: "add-user-and-login",
                        settings: { profile_image: "https://chatbot.zampisoft.com/media/docs/user.png", first_name: "Don", last_name: "John", email: "don.john@email.com" },
                        settings_extra: { phone: ["123456789", "Phone"], city: ["London", "City"] }
                    }, (response) => {
                        if (!SBF.errorValidation(response)) {
                            SBF.loginCookie(response[1]);
                            SBF.activeUser(new SBUser(response[0]));
                            SBChat.initChat();
                        } else if (response[1] == "duplicate-email") {
                           ' . $code_login_existing_user . '
                        } else {
                            SBChat.initChat();
                        }
                     });
                  }
              });
          });';
echo $code;

Método 4: API JAVASCRIPT

1. Habilitar la inicialización manual Vaya a Configuración > Chat, marque la opción Inicialización manual y guarde.

2. Registrar al usuario e iniciar sesión ¡Advertencia! Este método no es seguro, la contraseña y los detalles del usuario son visibles para todos.

jQuery(document).on("SBReady", function () {
    SBF.getActiveUser(true, () => {
        if (!SBF.activeUser() || (SBF.activeUser().email != "don.john@email.com")) {
            SBF.ajax({
                function: "add-user-and-login",
                settings: { profile_image: "https://chatbot.zampisoft.com/media/docs/user.png", first_name: "Don", last_name: "John", email: "don.john@email.com", password: "12345678" },
                settings_extra: { phone: ["123456789", "Phone"], city: ["London", "City"] }
            }, (response) => {
                if (!SBF.errorValidation(response)) {
                    SBF.loginCookie(response[1]);
                    SBF.activeUser(new SBUser(response[0]));
                    SBChat.initChat();
                } else if (response[1] == "duplicate-email") {
                    SBF.login("don.john@email.com", "12345678", "", "", () => { SBChat.initChat(); });
                } else console.log(response);
            });
        } else {
            SBChat.initChat();
        }
    });
});

📄 Mostrar el chat solo en páginas específicas

Este caso de uso explica cómo mostrar el chat solo en páginas específicas.

Este caso de uso explica cómo mostrar el chat únicamente en páginas específicas.

1. Habilitar la inicialización manual Vaya a Configuración > Chat, marque la opción Inicialización manual y guarde.

2. Inicializar el chat Inicialice el chat con la función SBChat.initChat() de la API de JavaScript. Puede utilizar la variable JS window.location.href para obtener la URL y mostrar el chat solo si la URL coincide con sus criterios. Tenga en cuenta que también puede utilizar la variable JavaScript SB_DISABLED = true para deshabilitar el chat en páginas específicas.

$(document).on("SBReady", function () {
    // Ejemplo: mostrar el chat solo en la página de contacto
    if (window.location.href.indexOf("/contact") > 0) {
        SBChat.initChat();
    }
    // Ejemplo: mostrar el chat solo en la página de inicio
    if (window.location.href == "https://example.com") {
        SBChat.initChat();
    }
});

🖱️ Abrir el chat al hacer clic

Este caso de uso explica cómo abrir el chat solo cuando el usuario hace clic en un botón. La forma más sencilla es añadir la clase o ID sb-open-chat a cualquier elemento (por ejemplo, un botón) para abrir o cerrar el chat cuando se haga clic en ese elemento.

<a class="sb-open-chat">Clic aquí</a>

También puede usar la función SBChat.open():

<a href="javascript:SBChat.open()">Clic aquí</a>

👁️ Mostrar el chat al hacer clic

Este caso de uso muestra el chat solo después de que el usuario hace clic en un botón.

1. Habilitar inicialización manual y apertura automática Habilite Configuración > Chat > Inicialización manual y Configuración > Chat > Abrir automáticamente, y guarde.

2. Mostrar el chat Use SBChat.initChat(). Para abrirlo en móviles, use también SBChat.open().

<a href="javascript:SBChat.initChat();SBChat.open()">Clic aquí</a>

🔄 Mostrar y ocultar el chat al hacer clic

El primer clic muestra el chat, el segundo lo oculta.

1. Habilitar la inicialización manual Vaya a Configuración > Chat, marque la opción Inicialización manual y guarde.

2. Añadir el código de eventos de clic Reemplace button-id con el ID de su botón.

$("body").on("click", "#button-id", function () {
    SBChat.initChat();
    $(".sb-chat-btn").show();
    setTimeout(function () {
        SBChat.open();
     }, 500);
});

$("body").on("click", ".sb-chat .sb-chat-btn", function () {
    $(this).hide();
});

🏢 Crear conversación y asignar departamento

Este caso de uso explica cómo crear una nueva conversación, asignarle un departamento y abrirla en el chat. Si desea que todas las conversaciones se asignen automáticamente a un departamento fijo, utilice la variable de JavaScript SB_DEFAULT_DEPARTMENT. Puede obtener los IDs en Configuración > Misceláneas > Departamentos.

1. Crear una nueva conversación y abrirla Cree una nueva conversación con la función SBChat.newConversation() de la API de JavaScript y pase el ID del departamento 2 en los argumentos de la función. Después de crear la conversación, esta se abre con la función SBChat.openConversation(). En el fragmento de código a continuación, la conversación se crea solo si el usuario no tiene otras conversaciones.

$(document).on("SBInit", function () {
    if (SBF.activeUser() != false && SBF.activeUser().conversations.length == 0) {
        // ID de departamento es el primer argumento (2)
        SBChat.newConversation(2, -1, "", [ ], 2, null, function (conversation) {
            SBChat.openConversation(conversation.id);
        });
    }
});

🕵️ Crear conversación y asignar agente

Este caso de uso explica cómo crear una nueva conversación, asignarle un agente existente y permitir que solo ese agente vea la conversación en el área de administración.

1. Habilitar el enrutamiento Vaya a Configuración > Misceláneas, marque la opción Enrutamiento y guarde.

2. Crear una nueva conversación y abrirla Cree una nueva conversación con la función SBChat.newConversation() de la API de JavaScript y pase el ID del agente 445 en los argumentos de la función. Después de crear la conversación, esta se abre con la función SBChat.openConversation().

$(document).on("SBInit", function () {
    if (SBF.activeUser() != false && SBF.activeUser().conversations.length == 0) {
        // ID de agente es el sexto argumento (445)
        SBChat.newConversation(2, -1, "", [], null, 445, function (conversation) {
            SBChat.openConversation(conversation.id);
        });
    }
});

📌 Forzar una conversación específica

Este caso de uso explica cómo establecer una conversación específica cuando se cumple una condición y obliga al usuario a utilizar únicamente dicha conversación mientras la condición siga siendo válida.

El siguiente código utiliza el título de la conversación para identificar cuál es la conversación correcta a utilizar: busca la conversación específica usando su título y, si la encuentra, la abre; de lo contrario, crea una nueva conversación con el título buscado. Este caso de uso se puede utilizar en diferentes escenarios, por ejemplo, si desea obligar al usuario a utilizar una conversación diferente para distintas páginas.

1. Inserte este código JavaScript en su sitio web

(function ($) {
    jQuery(document).on("SBInit", function () {
        let conversation_title = "CONVERSATION-NAME";
        let conversations = SBF.activeUser().conversations;
        if (conversations) {
            for (var i = 0; i < conversations.length; i++) {
                if (conversations[i].get("title") == conversation_title) {
                    SBChat.openConversation(conversations[i].id);
                    return;
                }
            }
        }
        SBF.ajax({
            function: "new-conversation",
            title: conversation_title
        }, (response) => {
            SBChat.setConversation(new SBConversation([], response["details"]));
        });
    });
}(jQuery));

🏢 Forzar un departamento específico

Busca una conversación con el departamento deseado, si la encuentra la abre, si no, crea una nueva. Reemplace YOUR-DEPARTMENT-ID con el ID del departamento.

(function ($) {
    jQuery(document).on("SBInit", function () {
        let active_department = "YOUR-DEPARTMENT-ID";
        let conversations = SBF.activeUser().conversations;
        SBChat.default_department = active_department;
        
        if (conversations) {
            for (var i = 0; i < conversations.length; i++) {
                if (conversations[i].get("department") == active_department) {
                    setTimeout(() => { SBChat.openConversation(conversations[i].id) }, 300);
                    return;
                }
            }
        }
        SBChat.open(false);
        SBF.ajax({
            function: "new-conversation",
            department: active_department
        }, (response) => {
            SBChat.setConversation(new SBConversation([], response["details"]));
        });
    });
}(jQuery));

🕵️ Forzar un agente específico

Busca una conversación con el agente deseado (definido en SB_DEFAULT_AGENT), si la encuentra la abre, si no, crea una nueva.

1. Insertar el código JavaScript En cada página, inserte <script>var SB_DEFAULT_AGENT = 123</script> cambiando 123 por el ID del agente.

(function ($) {
    if (typeof SB_DEFAULT_AGENT != 'undefined') {
         jQuery(document).on("SBInit", function () {
            if (!SBF.activeUser()) return;
            let conversations = SBF.activeUser().conversations;
            if (conversations) {
                for (var i = 0; i < conversations.length; i++) {
                    if (conversations[i].get("agent_id") == SB_DEFAULT_AGENT) {
                        setTimeout(() => { SBChat.openConversation(conversations[i].id) }, 300);
                        return;
                    }
                }
            }
            $('.sb-list').sbLoading(true);
            SBChat.open(false);
            SBF.ajax({
                function: "new-conversation",
                agent_id: SB_DEFAULT_AGENT
            }, (response) => {
                SBChat.clear();
                $('.sb-list').sbLoading(false);
                SBChat.setConversation(new SBConversation([], response["details"]));
            });
        });
    }
}(jQuery));

📨 Enviar mensaje y abrir chat

Este caso de uso explica cómo enviar un nuevo mensaje y abrir el chat después de que el mensaje haya sido enviado.

1. Enviar el mensaje y abrir el chat Verifique si el mismo mensaje ya existe en la conversación con el método searchMessages() de la API de JavaScript. Si el mensaje no está en la conversación, envíe un nuevo mensaje con la función SBChat.sendMessage(). Después de enviar el mensaje, abra la conversación con la función SBChat.openConversation(), verifique si el chat está abierto y, si no lo está, ábralo con la función SBChat.open().

$(document).on("SBInit", function () {
    let message = "¿Desea comprar el producto de esta página?";
    if (SBChat.conversation == false || SBChat.conversation.searchMessages(message).length == 0) {
        SBChat.sendMessage(SBF.setting("bot-id"), message, [], function (response) {
            SBChat.openConversation(response["conversation_id"]);
            if (!SBChat.chat_open) {
                SBChat.open();
            }
        });
    }
});

📜 Mostrar pop-up al hacer scroll

Este caso de uso explica cómo mostrar un mensaje emergente (pop-up) cuando el usuario desplaza la página hasta cierta posición; en este ejemplo, cuando el desplazamiento de la página alcanza los 500 px.

1. Comprobar el desplazamiento de la página y mostrar el pop-up Verifique el desplazamiento de la página mediante JavaScript y muestre el pop-up con la función popup() de la API de JavaScript.🎨 Mostrar chat en admin de WordPress

Muestra el chat dentro del área de administración de WordPress e identifica automáticamente al usuario conectado.

1. Editar functions.php Agregue el siguiente código al final del archivo functions.php de su tema.

$(document).on("SBInit", function () {
    var showed = false;
    $(window).scroll(function () {
        var scroll = $(window).scrollTop();
        if (scroll > 500 && !showed) {
            SBChat.popup(false, { title: "You reached 500 px!", message: "Insert here your message." });
            showed = true;
        }
    });
});

Si tiene configurado un dominio de cookie, añada domain=SU-VALOR a la cadena de la cookie.

📅 Actualizaciones

📅 Actualizaciones

📅 Acualizaciones Dic_2025

31/12/2025 | ZampiBot | V 3.8.8

🐛 Corrección de errores

✨ Nuevas funcionalidades

🚀 Optimizaciones


31/12/2025 | Aplicación de Inteligencia Artificial | V 1.5.9

🐛 Corrección de errores

✨ Nuevas funcionalidades


31/12/2025 | Actualizaciones de Apps de Mensajería

📱 WhatsApp App (V 1.3.3)

💬 Messenger App (V 1.2.5)

✈️ Telegram App (V 1.1.2)



📅 Actualizaciones

📅 Actualizaciones Nov_2025

13/11/2025 | ZampiBot | V 3.8.7

🐛 Corrección de errores

✨ Nuevas funcionalidades

🚀 Optimizaciones


13/11/2025 | Aplicación de Inteligencia Artificial | V 1.5.8

🐛 Corrección de errores

✨ Nuevas funcionalidades

🚀 Optimizaciones


13/11/2025 | Otras Actualizaciones de Apps

📱 WhatsApp App (V 1.3.2)

🟣 Viber App (V 1.0.2)



📅 Actualizaciones

📅 Actualizaciones Oct_2025

31/10/2025 | ZampiBot | V 3.8.6

31/10/2025 | Aplicación de Inteligencia Artificial | V 1.5.7



28/10/2025 | ZampiBot | V 3.8.5

🐛 Corrección de errores

✨ Nuevas funcionalidades

🚀 Optimizaciones


28/10/2025 | Aplicación de Inteligencia Artificial | V 1.5.6

🐛 Corrección de errores

✨ Nuevas funcionalidades


28/10/2025 | Actualizaciones Varias de Apps