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:
- Reemplace
YOUR-DOMAINcon la URL de su sitio web. La URL completa debe apuntar al archivoinclude/api.phpde su instalación. Debería verse así:https://TU-DOMINIO.com/chatbot.zampisoft.com/include/api.php.- Si usa la versión Cloud, ingrese
https://chatbot.zampisoft.com.support/script/include/api.php.
- Si usa la versión Cloud, ingrese
- Reemplace
YOUR-TOKENcon el token de un usuario administrador. Puede obtener el token desde el área de Usuarios abriendo el perfil de un usuarioadmin. Solo se admiten tokens de administrador y solo los administradores pueden ver los tokens.- Si utiliza la versión cloud, debe usar el token de
Account > Installation > API token. - ¡Advertencia! Este token debe mantenerse siempre en secreto.
- Si utiliza la versión cloud, debe usar el token de
- Reemplace
METHOD-NAMEcon el nombre de la función de la API que desea utilizar. Obténgalos de la lista de métodos a continuación.
Información
- Algunas funciones están protegidas por razones de seguridad. Ingrese el código
$GLOBALS['SB_FORCE_ADMIN'] = trueantes de llamar a la función para ejecutarla correctamente. Ingrese el código$GLOBALS['SB_FORCE_ADMIN'] = falseinmediatamente después de la llamada a la función por seguridad. - Algunas funciones requieren los detalles del usuario activo. Use el código
$GLOBALS['SB_LOGIN'] = ['id' => '', 'first_name' => '', 'last_name' => '', 'email' => '', 'user_type' => '', 'department' => ''];para establecer el usuario activo. - Ejemplo de Postman: El token también se puede pasar como un parámetro de CABECERA (HEADER).

👥 WEB API: Usuarios
Métodos para gestionar usuarios, agentes y administradores.
get-user
Devuelve los detalles de un usuario.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-user.user_idRequerido: El ID del usuario.extra: Establézcalo entruepara obtener detalles adicionales del usuario. Por defecto:false.
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
byRequerido: El nombre del detalle del usuario. Valores aceptados:email,first_name,last_name,phone,[extra](reemplace [extra] con cualquier nombre de detalle adicional del usuario).value: El valor del campo.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-user-extra.user_idRequerido: El ID del usuario.slug: El slug del ajuste a recuperar. Si no se establece, se devuelven todos los detalles del usuario. Por defecto:false.default: El valor por defecto a devolver si no se encuentran los detalles. Por defecto:false.
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
user_idRequerido: El ID del usuario del que desea obtener el idioma.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-users.sorting: Establece el orden de los valores devueltos. Ingrese["column", "order"]y reemplacecolumncon uno de los siguientes:first_name,last_name,email,profile_image,user_type,creation_time,last_activity,department. ReemplaceorderconASCoDESC.user_types: Array en formato JSON de tipos de usuario a incluir. Sintaxis:["", "", "", ...]. Valores aceptados:visitor,lead,user,agent,admin. Por defecto: todos.search: La cadena a buscar.pagination: Entero de 1 a N para limitar el número de resultados. Ingrese 0 para los primeros 100 resultados, 1 para 101 a 200, etc.extra: Establézcalo entruepara incluir también todos los detalles extra. O como un array de slugs para incluir solo un subconjunto. Por defecto:false.user_ids: Array de IDs. Si se establece, devuelve solo los usuarios incluidos en el array. Sintaxis:["", "", "", ...]. Por defecto:false.department: Si se establece, devuelve solo usuarios con al menos una conversación asignada al ID de departamento provisto. Por defecto:false.tag: Si se establece, devuelve solo usuarios con al menos una conversación asignada a la etiqueta provista. Por defecto:false.source: Si se establece, devuelve solo usuarios con al menos una conversación del canal provisto. Fuentes:em,tk,wa,fb,ig,tw,wc,tx,gb,ln,vb. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-new-users.datetimeRequerido: ID de usuario o fecha y hora en formato:YYYY-MM-DD HH:MM:SS. Ej.2020-05-13 13:35:59. Puede eliminar la hora y dejar solo la fecha. Las fechas en la base de datos son UTC+0.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-online-users.exclude_id: Array de IDs de usuarios en formato JSON para excluir. Sintaxis:[123, 123, 123, ...].sorting: Nombre de la tabla de base de datos usada para ordenar. Por defecto:creation_time.agents: Establézcalo entruepara devolver solo agentes y administradores. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-users-with-details.detailsRequerido: Array de detalles de usuario. Ej.[ "email", "phone" ].user_ids: Array o cadena separada por comas de IDs. Si se establece, solo se buscan estos usuarios. Useallofalsepara buscar en todos, oagentspara buscar solo agentes/admins. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-agent.agent_idRequerido: El ID del agente.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-agents-ids.admins: Establézcalo enfalsepara excluir a los administradores. Por defecto:true.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-user-from-conversation.conversation_idRequerido: El ID de la conversación.agent: Establézcalo entruepara obtener el último agente que respondió. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesearch-users.searchRequerido: La cadena a buscar. Los detalles adicionales del usuario también son compatibles.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseadd-user.first_name: Nombre del usuario. Por defecto:User.last_name: Apellido. Por defecto:#RANDOM-NUMBER.email: Email del usuario. Por defecto: vacío.profile_image: Foto de perfil.password: Contraseña. Por defecto: vacío.user_type: Tipo de usuario. Valores:visitor,lead,user,agent,admin. Por defecto:visitorsi no hay email, sinouser.extra: Array de detalles adicionales en formato JSON. Detalles integrados (IDs):phone,city,language,country,birthday,company,facebook,twitter,linkedin,website,ip,country_code,browser,currency,location,os,time_zone,current_url. Sintaxis:{"ID": ["value", "Name"], ...}.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupdate-user.user_idRequerido: El ID del usuario a actualizar.first_name,last_name,profile_image,password,user_type.email: IngreseNULLpara eliminar el correo electrónico.settings_extra: Array de detalles adicionales en formato JSON. Sintaxis: {"ID": ["value", "Name"], "ID": ["value", "Name"], ...}
Respuesta
JSON
{
"success": true,
"response": true
}
Other possible responses: duplicate-email, invalid-user-type, MySQL error message.
delete-user
Elimina un usuario y todas las conversaciones y mensajes vinculados.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedelete-user.user_idRequerido: El ID del usuario a eliminar.
Respuesta
JSON
{
"success": true,
"response": true
}
delete-users
Elimina múltiples usuarios y sus datos vinculados.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedelete-users.user_idsRequerido: Array de IDs de usuarios. Sintaxis:[123, 123, ...]
Respuesta
JSON
{
"success": true,
"response": true
}
is-online
Verifica si un usuario está en línea.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseis-online.user_idRequerido: El ID del usuario.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresecurrent-url.user_id: El ID del usuario.url: La URL para establecer como "Current URL". Si se establece, la función solo establecerá el valor y no devolverá ninguna URL.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresecount-users.
Respuesta
JSON
{
"success": true,
"response": {
"all": "335",
"lead": "288",
...
}
}
update-user-to-lead
Cambia el tipo de usuario a "lead" (cliente potencial).
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupdate-user-to-lead.user_idRequerido: El ID del usuario.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-avatar.first_nameRequerido: Nombre del usuario.last_name: Apellido del usuario
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseis-typing.user_idRequerido: ID del usuario o agente a verificar.conversation_idRequerido: ID de la conversación.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseis-agent-typing.conversation_idRequerido: ID de la conversación.
{
"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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseset-typing.user_idRequerido: ID del usuario o agente.conversation_idRequerido: ID de la conversación.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreselogin.email/password: Para login tradicional.user_id/user_token: Para login por token.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreselogout.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupdate-login.profile_image,first_name,last_name,email,department.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedelete-leads.
Respuesta
JSON
{
"success": true,
"response": true
}
update-bot
Actualiza los detalles del perfil del bot. Si no existe, se crea uno.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupdate-bot.name: Nombre del bot.profile_image: URL de imagen del bot.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresecsv-users.user_ids: Array de IDs de usuario para exportar solo específicos.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-conversation.conversation_idRequerido: El ID de la conversación.user_id: El ID del usuario vinculado.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-conversations.pagination: Entero para paginación (0 para primeros 100, 1 para siguientes 100).status_code: Códigos de estado: live =0, esperando usuario =1, esperando agente =2, archivo =3, papelera =4, all = todos.routing: Set it to true if the queue or routing is active in Settings > Miscellaneous. Default: false.routing_unassigned: Set it to true to also view the conversations not assigned to any agent. Default: false.department,source,tag: Filtros opcionales.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-new-conversations.datetimeRequerido: ID de conversación o fechaYYYY-MM-DD HH:MM:SS.routingSet it to true if the queue or routing is active in Settings > Miscellaneous. Default: false.routing_unassigned: Set it to true to also view the conversations not assigned to any agent. Default: false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-user-conversations.user_idRequerido: El ID del usuario.exclude_id: Excluir una conversación.agents:truesi el usuario es agente/admin.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-new-user-conversations.user_idRequerido: ID del usuario.datetimeRequerido: Conversation ID or date and time in the following format: YYYY-MM-DD HH:MM:SS. E.g. 2020-05-13 13:35:59. You can remove the time and leave only the date. The dates stored in the database are in UTC+0.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesearch-conversations.searchRequerido: Cadena de búsqueda (mensajes, adjuntos, emails, nombres, tags, etc.).
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesearch-user-conversations.searchRequerido: La función de búsqueda puede buscar por nombres de archivos adjuntos, mensajes, correo electrónico del usuario, nombre y apellido, etiquetas, ID del agente, ID del departamento, título de la conversación y más.user_idRequerido: ID del usuario.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresenew-conversation.user_idRequerido: ID del usuario vinculado.status_code: Por defecto1.title: Título.department: ID del departamento. Por defecto-1.agent_id: ID del agente asignado. Por defecto-1.source,extra,tags.
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-found, MySQL error message.
update-conversation-status
Actualiza el código de estado de una conversación.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupdate-conversation-status.conversation_idRequerido: ID de la conversación.status_codeRequerido:0(live),1(esperando usuario),2(esperando agente),3(archivo),4(papelera).
Respuesta
JSON
{
"success": true,
"response": true
}
update-conversation-department
Actualiza el departamento de una conversación.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupdate-conversation-department.conversation_idRequerido: ID de la conversación.departmentRequerido: ID del departamento. Usefalsepara remover.message: Mensaje para notificar a los agentes del nuevo departamento.
Respuesta
JSON
{
"success": true,
"response": true
}
update-conversation-agent
Asigna o actualiza el agente de una conversación.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupdate-conversation-agent.conversation_idRequerido: ID de la conversación.agent_idRequerido: ID del agente.falsepara remover.message: Mensaje de notificación para el agente.
Respuesta
JSON
{
"success": true,
"response": true
}
set-rating
Asigna una calificación a una conversación.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseset-rating.settingsRequerido: JSON{ "settings" : { "conversation_id": "ID", "rating": "RATING" }}.1positivo,0negativo.payload,message_id,message,user_id: Opcionales para actualizar mensaje.
Respuesta
JSON
{
"success": true,
"response": true
}
get-rating
Obtiene las calificaciones asignadas a un agente.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-rating.user_idRequerido: ID del agente.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-new-messages.user_idRequerido: ID del usuario.conversation_idRequerido: ID de la conversación.datetimeRequerido: ID o fechaYYYY-MM-DD HH:MM:SS.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-last-message.conversation_idRequerido: ID de la conversación.exclude_message: Excluir mensaje con texto específico.user_id: Verificar solo mensajes de este usuario.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesend-message.user_idRequerido: El ID del usuario que envía el mensaje. Utilice la APIget-bot-idpara obtener el ID del bot si es el sistema quien envía el mensaje.conversation_idRequerido: El ID de la conversación.message: El contenido del mensaje.attachments: Array de archivos adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del archivo adjunto yenlacecon la URL completa del archivo. - Nota: Es su responsabilidad subir los archivos adjuntos a un servidor remoto; este argumento solo acepta la URL de archivos que ya han sido subidos previamente.
- Por defecto:
[].
- Sintaxis del array:
conversation_status_code: El código de estado que se asignará a la conversación.- Códigos de estado: activo (live) =
0, esperando respuesta del usuario =1, esperando respuesta del agente =2, archivado =3, papelera =4. - Establézcalo en
skippara dejar el estado actual de la conversación sin cambios.
- Códigos de estado: activo (live) =
payload: Array en formato JSON con información adicional. Puede insertar cualquier valor.- Sintaxis del array:
{ "clave": valor, "clave": valor, ... }.
- Sintaxis del array:
queue: Establézcalo entruesi la función de Cola está activa enConfiguración > Misceláneas > Cola(Queue). Por defecto:false.recipient_id: El ID del usuario que recibe el mensaje. Utilice este atributo para que el sistema detecte y aplique el idioma correcto del usuario.
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-code, MySQL error message. The notifications response include the notifications sent to the user or agents.
update-message
Actualiza un mensaje existente.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupdate-message.message_idRequerido: El ID del mensaje.message: El contenido del mensaje.attachments: Array de archivos adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del archivo adjunto yenlacecon la URL completa del archivo adjunto. - Nota: Es su responsabilidad subir los archivos adjuntos a un servidor remoto; este argumento solo acepta la URL de los archivos que ya han sido subidos previamente.
- Por defecto:
[].
- Sintaxis del array:
payload: Array en formato JSON de información adicional.- Puede insertar cualquier valor.
- Sintaxis del array:
{ "clave": valor, "clave": valor, ... }.
Respuesta
JSON
{
"success": true,
"response": true
}
delete-message
Elimina un mensaje existente.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedelete-message.message_idRequerido: ID del mensaje.
Respuesta
JSON
{
"success": true,
"response": true
}
delete-attachments
Elimina todos los adjuntos de una conversación o mensaje (incluyendo AWS S3).
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedelete-attachments.conversation_id: El ID de la conversación que contiene los archivos adjuntos que desea eliminar. Por defecto:false.message_id: El ID del mensaje que contiene los archivos adjuntos que desea eliminar. Por defecto:false.
Respuesta
JSON
{
"success": true,
"response": true
}
update-messages-status
Actualiza el estado de múltiples mensajes a "leído".
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupdate-messages-status.message_idsRequerido: Array de IDs de mensajes[1, 212, ...].user_id: ID del usuario (requerido para Pusher).
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-agents-in-conversation.conversation_idRequerido: ID de conversación (puede ser un array).
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresetranscript.conversation_idRequerido: El ID de la conversación que desea exportar.type:- Establézcalo en
csvpara exportar la conversación como un archivo CSV. - Establézcalo en
txtpara exportar la conversación como un archivo de texto. - Establézcalo en
falsepara utilizar el tipo definido enConfiguración > Administración > Tipo de transcripción(Settings > Admin > Transcript type). - Por defecto:
false.
- Establézcalo en
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedirect-message.user_idsRequerido: Array de IDs de usuario, ej.[45, 89, 65].messageRequerido: El mensaje.subject: El asunto. Requerido solo para correos electrónicos. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresemessaging-platforms-send-message.conversation_idRequerido: El ID de la conversación.messageRequerido: El mensaje.attachmentsRequerido: Array de archivos adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del archivo adjunto yenlacecon la URL completa del archivo adjunto. - Nota: Es su responsabilidad subir los archivos adjuntos a un servidor remoto; este argumento solo acepta la URL de los archivos que ya han sido subidos previamente.
userRequerido: Array asociativo con{ "id": 123, "profile_image":source: Array asociativo con{ "source": CÓDIGO DE FUENTE }como valor.- Códigos de fuente disponibles:
em(Email),tk(Ticket),wa(WhatsApp),fb(Facebook Messenger),ig(Instagram),tw(Twitter),wc(WeChat),tx(Mensaje de texto),gb(Google Business Messages),tg(Telegram),ln(LINE),vb(Viber). - Para Telegram: La fuente también debe incluir
{ "chat_id": "123456789" }. - Para Facebook Messenger: La fuente también debe incluir
{ "page_id": "123456789" }.
Respuesta
JSON
{
"success": true,
"response": true
}
count-conversations
Cuenta el número de conversaciones.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresecount-conversations.status_code: Filtrar por código de estado.
Respuesta
JSON
{
"success": true,
"response": 123456
}
check-conversations-assignment
Verifica si una lista de conversaciones está asignada a un departamento o agente.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresecheck-conversations-assignment.conversation_idsRequerido: Array de IDs de las conversaciones a verificar, ej.[45, 565, 68].agent_id: El ID del agente. Por defecto:false.department_id: El ID del departamento. Por defecto:false.
Respuesta
JSON
{
"success": true,
"response": [1234, 5, ...]
}
get-last-agent-in-conversation
Devuelve el último agente que respondió a una conversación.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-last-agent-in-conversation.conversation_idRequerido: El ID de la conversación.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseexecute-bot-message.nameRequerido: El nombre del mensaje del bot. Valores disponibles:offline,follow_up,welcome.conversation_idRequerido: El ID de la conversación a la que enviar el mensaje.last_user_message: Úselo para mostrar diferentes extractos de texto en el área de administración y el panel de chat. Por defecto:false.check: Establézcalo enfalsepara enviar el mensaje incluso si ya se envió hace menos de 10 días. Por defecto:true.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-setting.settingRequerido: El ID de la configuración. Puede obtener los IDs de todas las configuraciones del archivoresources\json\settings.jsono con la función de la APIget-settings.
Respuesta
JSON
{
"success": true,
"response": {
"option": "value",
"option": "value",
...
}
}
get-multi-setting
Devuelve una sub-configuración de otra configuración.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-multi-setting.idRequerido: El ID de la configuración principal. Puede obtener los IDs de todas las configuraciones del archivoresources\json\settings.jsono con la función de la APIget-settings.sub_idRequerido: El ID de la sub-configuración. Puede obtener los IDs de todas las configuraciones del archivoresources\json\settings.jsono con la función de la APIget-settings.default: El valor a devolver si no se encuentra la configuración. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-external-setting.nameRequerido: El nombre de la configuración.default: El valor a devolver si no se encuentra la configuración. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-settings.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesave-settings.settingsRequerido: El array de configuraciones. Obténgalo deget-settings.external_settings: Configuraciones guardadas en una fila dedicada de la tablasb_settingsde la base de datos.external_settings_translations: Traducciones de las configuraciones externas.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesave-external-setting.nameRequerido: El nombre de la configuración.valueRequerido: El valor de la configuración.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseexport-settings.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseimport-settings.file_urlRequerido: La URL del archivo JSON que contiene las configuraciones.
Respuesta
JSON
{
"success": true,
"response": true
}
get-departments
Devuelve los departamentos de ZampiBot.
Parámetros
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-departments.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesaved-replies.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-translation.language_codeRequerido: El código de idioma de dos letras.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-translations.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesave-translations.translationsRequerido: El array de traducciones con todas las traducciones. Utilice el métodoget-translationspara obtener el array.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresetranslate-string.stringRequerido: La cadena a traducir.language_code: El código de idioma de dos letras. Establézcalo enfalsepara usar el idioma del usuario activo. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-articles.id: El ID del artículo. Para obtener los IDs de los artículos, ejecute este método nuevamente sin argumentos. Por defecto:-1.count: El número máximo de artículos devueltos. Por defecto: todos.full: Booleano. Establézcalo entruepara obtener el contenido completo de los artículos. Por defecto:false.categories:- Establézcalo en
truepara obtener el array de todas las categorías; en tal caso, la respuesta es un array doble (el primer elemento son los artículos, el segundo son las categorías). - Establézcalo en el ID de la categoría para obtener solo los artículos de la categoría dada.
- Por defecto:
false.
- Establézcalo en
articles_language: Obtiene los artículos en el idioma del código de idioma dado. Si no hay artículos en el código de idioma dado, se devuelven los artículos en el idioma por defecto. Establézcalo enallpara obtener todas las traducciones. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesave-article.articleRequerido: Array de artículos. Utilice la funciónget-articlespara obtener la estructura del artículo.
Respuesta
JSON
{
"success": true,
"response": true
}
search-articles
Devuelve los artículos que coinciden con la búsqueda.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesearch-articles.searchRequerido: La cadena a buscar. La función de búsqueda admite título y contenido.articles_language: Busca solo los artículos en el idioma del código de idioma dado. Si no hay artículos en el código de idioma dado, la búsqueda devuelve los artículos en el idioma por defecto. Establézcalo enallpara obtener todas las traducciones. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-articles-categories.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesave-articles-categories.categoriesRequerido: Array de categorías. Obtenga el array de categorías existentes con la funciónget-articles-categories.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresearticle-ratings.article_idRequerido: El ID del artículo.rating: La calificación a añadir. Ingrese1para una calificación positiva o0para una negativa. Si se establece este argumento, el método añade la calificación; de lo contrario, devuelve las calificaciones existentes. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesend-email.recipient_idRequerido: El ID del usuario al cual enviar el correo electrónico.sender_id: El ID del usuario remitente.messageRequerido: El mensaje del correo electrónico.attachments: Array de archivos adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del archivo adjunto yenlacecon la URL completa del archivo. - Nota: Es su responsabilidad subir los archivos adjuntos a un servidor remoto; este argumento solo acepta la URL de los archivos que ya han sido subidos previamente.
- Por defecto:
[].
- Sintaxis del array:
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesend-custom-email.toRequerido: La dirección de correo electrónico del destinatario.subjectRequerido: El asunto del correo.messageRequerido: El mensaje del correo.sender_suffix: Añade el texto proporcionado al nombre del remitente. Por defecto: vacío.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseemail-piping.force: Establézcalo entruepara forzar la ejecución de la sincronización; por defecto, la sincronización se ejecuta un máximo de una vez por minuto. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesend-sms.messageRequerido: El mensaje de texto.toRequerido: El número de teléfono. Incluya el código de país.template: Establézcalo enfalsepara enviar solo el mensaje sin el contenido de la plantilla. Por defecto: el mensaje se envía dentro de la plantilla configurada enConfiguración > Notificaciones SMS.conversation_id: Establézcalo si el mensaje contiene el campo de combinación{conversation_url_parameter}.attachments: Array de adjuntos. Sintaxis:[["nombre", "enlace"], ["nombre", "enlace"], ...]o["enlace", "enlace", ...].- Reemplace
nombrecon el nombre del adjunto yenlacecon la URL completa. - Es su responsabilidad subir los archivos a un servidor remoto.
- Por defecto:
false.
- Reemplace
recipient_id: El ID del usuario al cual enviar el mensaje de texto. Este argumento es requerido para que funcionen las traducciones.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresepush-notification.titleRequerido: El título de la notificación.messageRequerido: El texto del mensaje.interestsRequerido: Se aceptan los siguientes valores:- ID de Agente o usuario.
- Array de IDs de agentes o usuarios (ej.
[1, 2, 3]). - Ingrese
agentspara enviar la notificación a todos los agentes y administradores. - Ingrese
department-IDpara enviar la notificación a todos los agentes y administradores asignados al departamento dado o a aquellos sin departamento asignado. ReemplaceIDcon el ID del departamento.
conversation_id: El ID de la conversación que se abrirá cuando el usuario haga clic en la notificación.icon: La URL del icono de la notificación. Por defecto: Icono de ZampiBot o icono de notificaciones.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-versions.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresecron-jobs.
Respuesta
JSON
{
"success": true,
"response": true
}
pusher-trigger
Dispara un evento en un canal de Pusher.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresepusher-trigger.channelRequerido: El nombre del canal.eventRequerido: El nombre del evento.data: Array de valores. Sintaxis:[ "nombre" => "valor" ].
Respuesta
JSON
{
"success": true,
"response": true
}
chat-css
Devuelve el estilo CSS para los colores del chat.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresechat-css.color_1: El primer color en formato RGB o HEX. Por defecto: el primer color guardado en el área de configuración.color_2: El segundo color en formato RGB o HEX. Por defecto: el segundo color guardado en el área de configuración.color_3: El tercer color en formato RGB o HEX. Por defecto: el tercer color guardado en el área de configuración.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresetext-formatting-to-html.messageRequerido: El mensaje de texto.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseclear-text-formatting.messageRequerido: El mensaje de texto.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseget-notes.conversation_idRequerido: El ID de la conversación.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseadd-note.conversation_idRequerido: El ID de la conversación a la cual vincular la nota.user_idRequerido: El ID del agente o administrador que crea la nota.nameRequerido: El nombre de la nota.messageRequerido: El mensaje de la nota.
Respuesta
JSON
{
"success": true,
"response": 33560
}
Devuelve el ID de la nota.
delete-note
Elimina una nota de una conversación.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedelete-note.conversation_idRequerido: El ID de la conversación vinculada a la nota.note_idRequerido: El ID de la nota.
Respuesta
JSON
{
"success": true,
"response": true
}
automations-get
Devuelve todas las automatizaciones.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseautomations-get.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseautomations-save.automationsRequerido: Array de automatizaciones. Obténgalo de la funciónautomations-get.translations: Array de traducciones de automatizaciones. Obténgalo de la funciónautomations-get.
Respuesta
JSON
{
"success": true,
"response": true
}
automations-validate
Valida una automatización.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseautomations-validate.automationRequerido: La automatización.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseautomations-run-all.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseautomations-run.automationRequerido: La automatización.validate: Establézcalo entruepara validar la automatización antes de ejecutarla. Por defecto:false.
Respuesta
JSON
{
"success": true,
"response": true
}
automations-is-sent
Verifica si una automatización ya ha sido enviada a un usuario.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseautomations-is-sent.user_idRequerido: El ID del usuario a verificar.automationRequerido: La automatización. Puede ser["id" => 123]donde 123 es el ID de la automatización.repeat_id: Establézcalo solo si la automatización se puede enviar múltiples veces al usuario. Obténgalo desb_automations_validate. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseclean-data.
Respuesta
JSON
{
"success": true,
"response": true
}
reports
Devuelve los reportes especificados.
Parámetros
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresereports.nameRequerido: El nombre del reporte. Valores disponibles:conversations,missed-conversations,conversations-time,visitors,leads,users,agents-response-time,agents-conversations,agents-conversations-time,agents-ratings,countries,languages,browsers,os,subscribe,follow-up,registrations,articles-searches,articles-ratings,articles-views-single,articles-views,sms-automations,email-automations,message-automations,direct-sms,direct-emails,direct-messages.date_start: La fecha de inicio de los reportes. Formato:dd/mm/yyyyoyyyy-mm-dd. Por defecto:false.date_end: La fecha de finalización de los reportes. Formato:dd/mm/yyyyoyyyy-mm-dd. Por defecto:false.timezone: La zona horaria del usuario que llama a esta función, ej.Europe/London. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresereports-update.nameRequerido: El nombre del reporte (ver valores disponibles en la funciónreports).value: El valor de la fila. Por defecto:false.external_id: Un ID externo. Por defecto:false.extra: Un valor extra. Por defecto:false.
Respuesta
JSON
{
"success": true,
"response": true
}
updates-available
Comprueba si hay actualizaciones disponibles para ZampiBot y las aplicaciones de ZampiBot.
Parámetros
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupdates-available.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresenewsletter.emailRequerido: La dirección de correo electrónico del suscriptor.first_name: El nombre del suscriptor. Por defecto: vacío.last_name: El apellido del suscriptor. Por defecto: vacío.
Respuesta Devuelve la respuesta del servicio de newsletter.
upload-path
Devuelve la ruta de subidas (uploads) de ZampiBot.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseupload-path.url: Establézcalo entruepara obtener la URL en su lugar. Por defecto:false.date: Establézcalo entruepara obtener también la carpeta de fecha relativa a la fecha actual. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseis-allowed-extension.extensionRequerido: La extensión del archivo, ej.jpg.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesystem-requirements.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreselogs.stringRequerido: El mensaje de registro.user: Establézcalo para incluir el ID de usuario en el mensaje de registro. Este valor puede ser["id" => 123]. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseaws-s3.file_pathRequerido: La ruta al archivo para subir o la URL del archivo de Amazon S3 para eliminar.action: Establézcalo enPUTpara subir un archivo. Establézcalo enDELETEpara eliminar un archivo. Por defecto:PUT.bucket_name: El nombre del bucket. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-message.conversation_id: El ID de una conversación. Si se proporciona, la respuesta se añade a la conversación como un nuevo mensaje.message: La cadena que contiene el texto del mensaje.attachments: Array de archivos adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del archivo adjunto yenlacecon la URL completa del archivo. Dialogflow puede leer este array.
- Sintaxis del array:
language: El idioma del bot. Por defecto: el idioma principal del bot.event: Dispara un evento de Dialogflow.parameters: Array de información opcional.- Sintaxis del array:
{ "nombre": "valor", "nombre": "valor", ...}.
- Sintaxis del array:
audio: URL de un archivo de audio para el reconocimiento de voz. Por defecto:false.token: El token de acceso de Dialogflow. Por razones de rendimiento, incluya siempre este token. Obtendrá el token después de la primera llamada de esta función, dentro de la respuesta.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-get-intents.intent_name: El nombre de la intención.language: El idioma del agente. Por defecto: el idioma principal del agente.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-create-intent.expressionsRequerido: Array con las frases de entrenamiento. Sintaxis del array:["", "", ...].responseRequerido: Cadena que contiene la respuesta del bot cuando la entrada del usuario coincide con una expresión del usuario.agent_language: El código de idioma de la intención. Por defecto: idioma principal del agente. Para ver la lista de códigos de idiomas, visite la documentación de Dialogflow. Por defecto:false.
Respuesta
JSON
{
"success": true,
"response": true
}
dialogflow-update-intent
Actualiza una Intención (Intent) de Dialogflow.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-update-intent.intent_nameRequerido: El nombre de la Intención. Obténgalo con la funcióndialogflow-get-intents.expressionsRequerido: Array con las frases de entrenamiento. Sintaxis del array:["", "", ...].agent_language: El código de idioma de la intención. Por defecto: idioma principal del agente.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-entity.entity_nameRequerido: El nombre único de la Entidad.synonymsRequerido: Array de valores de la Entidad.- Sintaxis de valor único:
['value' => '', 'synonyms' => ['', '', ...]].
- Sintaxis de valor único:
agent_language: El código de idioma de la intención. Por defecto:false.
Respuesta
JSON
{
"success": true,
"response": true
}
dialogflow-get-entity
Devuelve una Entidad de Dialogflow, o todas las Entidades del agente.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-get-entity.entity_idRequerido: El ID de la Entidad. Déjelo vacío o inserteallpara obtener todas las Entidades. Por defecto:all.agent_language: El código de idioma de la intención. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresegoogle-get-token.
Respuesta
JSON
{
"success": true,
"response": "ya27.a1AfH6SMDu9dn0TfRbNVAIEsSoeJPD1_jr1JpfL15..."
}
dialogflow-get-agent
Devuelve los detalles del agente de Dialogflow.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-get-agent.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-set-active-context.context_nameRequerido: El nombre del contexto.user_idRequerido: El ID del usuario vinculado al contexto.parameters: Array de parámetros de Dialogflow vinculados al contexto. Ejemplo:{ "woocommerce-products": "Running Shoes" }.life_span: La vida útil del contexto. Por defecto: 5.token: Token de Sesión de Dialogflow (no es el Token de Actualización). Páselo si lo tiene; de lo contrario, se generará uno. Por defecto:false.language: El idioma del agente. Por defecto: idioma principal del agente.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-curl.queryRequerido: La consulta de Dialogflow en formato JSON.language: El idioma del agente de Dialogflow. Por defecto:false.type: El tipo de llamada. Valores soportados:POST,GET,PATCH. Por defecto:POST.token: Token de Sesión de Dialogflow (no es el Token de Actualización). Páselo si lo tiene; de lo contrario, se generará uno. Por defecto:false.
Respuesta
JSON
{
"success": true,
"response": "..."
}
Devuelve la respuesta de Dialogflow.
dialogflow-human-takeover
Dispara la toma de control humana (human takeover) de Dialogflow.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-human-takeover.conversation_idRequerido: El ID de la conversación.auto_messages: Establézcalo entruepara enviar también mensajes de fuera de línea (offline), seguimiento (follow_up) y suscripción si están activos. Por defecto:false.
Respuesta
JSON
{
"success": true,
"response": [true, true, ...]
}
dialogflow-smart-reply
Devuelve las sugerencias de respuesta inteligente (Smart Reply).
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresedialogflow-smart-reply.conversation_idRequerido: El ID de la conversación.messageRequerido: El mensaje de texto a partir del cual generar las sugerencias.dialogflow_language: El idioma del agente de Dialogflow. Por defecto:false.token: El token de acceso de Dialogflow. Por defecto:false.conversation_id(Segundo parámetro con el mismo nombre en la doc original, se refiere a OpenAI): Establézcalo para habilitar las sugerencias de OpenAI. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseopen-ai-message.messageRequerido: La cadena que contiene el texto del mensaje.max_tokens: El número máximo de tokens de OpenAI que se pueden usar para generar el mensaje. Este parámetro cambia la longitud del mensaje de respuesta. Por defecto:false. Si este parámetro es falso, el valor por defecto es el guardado enConfiguración > Inteligencia Artificial > OpenAI > Max tokens, o se calcula automáticamente.model: El modelo de OpenAI. Por defecto:false. Si este parámetro es falso, el valor por defecto es el guardado enConfiguración > Inteligencia Artificial > OpenAI > Model.conversation_id: El ID de la conversación. Si se establece, la respuesta de OpenAI se añade a una conversación existente como un nuevo mensaje. Por defecto:false.audio: URL de un archivo de audio para el reconocimiento de voz. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseopen-ai-curl.url_part: La parte de la URL de la API. Por ejemplo, si quiere llamar ahttps://api.openai.com/v1/completions, ingrese solocompletions.post_fields: Los parámetros de la API en formato JSON.type: El tipo de llamada HTTP. Valores permitidos:GET,POST,UPLOAD.
Respuesta
JSON
{
"success": true,
"response": "..."
}
Devuelve la respuesta de OpenAI.
google-translate
Traduce múltiples cadenas a través de Google Translate.
Parámetros
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresegoogle-translate.stringsRequerido: Array de las cadenas a traducir, ej.["Hello world", "How are you?"].language_codeRequerido: El código de idioma de dos letras al que desea traducir. Para Chino Tradicional usezt, para Chino Simplificado usezh, para Portugués Brasileño usept.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresegoogle-language-detection-update-user.stringRequerido: El texto del cual detectar el idioma.user_idRequerido: El ID del usuario.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresewhatsapp-send-message.toRequerido: El número de teléfono del destinatario. Incluya el código del país. Ej.+39321305455.message: El mensaje.attachments: Array de adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del adjunto yenlacecon la URL completa. - Es su responsabilidad subir los archivos a un servidor remoto; este argumento solo acepta la URL de archivos ya subidos. Por defecto:
[].
- Sintaxis del array:
phone_id: El ID del número de teléfono. Obténgalo deConfiguración > WhatsApp. Este ajuste es necesario solo si ha sincronizado múltiples números de WhatsApp. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresewhatsapp-send-template.toRequerido: El número de teléfono del destinatario. Incluya el código del país. Ej.+39321305455.template_nameRequerido: El nombre de la plantilla. Por defecto:Configuración > WhatsApp > Cloud API template fallback > Template name.template_languagesRequerido: Una cadena separada por comas de todos los códigos de idioma disponibles para la plantilla. Ej.en_US,it_IT. Por defecto:Configuración > WhatsApp > Cloud API template fallback > Template languages.phone_id: El ID del número de teléfono. Obténgalo deConfiguración > WhatsApp > Cloud API numbers. Por defecto:false.parameters: El array de parámetros de la plantilla en formato JSON. Ej.["A", "B,C", "D,E"].- El primer elemento del array son los parámetros del encabezado (header).
- El segundo son los parámetros del cuerpo (body).
- El tercero son los parámetros de los botones (button).
- Cada parámetro es una cadena separada por una coma.
- Por defecto:
Configuración > WhatsApp > Cloud API template fallback.
language: El idioma de la plantilla. Por defecto: cadena vacía.conversation_url_parameter: Establézcalo si el texto de la plantilla contiene el campo de combinación{conversation_url_parameter}. Por defecto: cadena vacía.user_name: Establézcalo si el texto de la plantilla contiene el campo de combinación{recipient_name}.user_email: Establézcalo si el texto de la plantilla contiene el campo de combinación{recipient_email}.recipient_id: El ID de usuario de ZampiBot al que le está enviando la plantilla. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresemessenger-send-message.psidRequerido: El PSID. Para obtener esta información, el usuario primero debe enviarle un mensaje a través de Facebook. Obténgalo usando la funciónget-user.facebook_page_idRequerido: El ID de la Página de Facebook. Para obtener esta información, el usuario primero debe enviarle un mensaje a través de Facebook. Obténgalo usando la funciónget-conversation. El ID es el valorextra.message: El mensaje.attachments: Array de adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del adjunto yenlacecon la URL completa. - Es su responsabilidad subir los archivos a un servidor remoto; este argumento solo acepta la URL de archivos ya subidos. Por defecto:
[].
- Sintaxis del array:
metadata: Proporcione el ID del mensaje de ZampiBot vinculado a este mensaje. Inclúyalo siempre que sea posible para evitar problemas. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresetelegram-send-message.chat_idRequerido: El Chat ID. Para obtener esta información, el usuario primero debe enviarle un mensaje a través de Telegram. Obténgalo usando la funciónget-conversation. El ID es el valorextra.message: El mensaje.attachments: Array de adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del adjunto yenlacecon la URL completa. - Es su responsabilidad subir los archivos a un servidor remoto; este argumento solo acepta la URL de archivos ya subidos. Por defecto:
[].
- Sintaxis del array:
conversation_id: Esta configuración es necesaria solo si ha sincronizado múltiples bots de Telegram. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseviber-send-message.viber_idRequerido: El Viber ID. Para obtener esta información, el usuario primero debe enviarle un mensaje a través de Viber. Obténgalo usando la funciónget-user.message: El mensaje.attachments: Array de adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del adjunto yenlacecon la URL completa. - Es su responsabilidad subir los archivos a un servidor remoto; este argumento solo acepta la URL de archivos ya subidos. Por defecto:
[].
- Sintaxis del array:
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseline-send-message.line_idRequerido: El LINE ID. Para obtener esta información, el usuario primero debe enviarle un mensaje a través de LINE. Obténgalo usando la funciónget-user.message: El mensaje.attachments: Array de adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del adjunto yenlacecon la URL completa. - Es su responsabilidad subir los archivos a un servidor remoto; este argumento solo acepta la URL de archivos ya subidos. Por defecto:
[].
- Sintaxis del array:
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresewechat-send-message.open_idRequerido: El WeChat ID. Para obtener esta información, el usuario primero debe enviarle un mensaje a través de WeChat. Obténgalo usando la funciónget-user.message: El mensaje.attachments: Array de adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del adjunto yenlacecon la URL completa. - Es su responsabilidad subir los archivos a un servidor remoto; este argumento solo acepta la URL de archivos ya subidos. Por defecto:
[].
- Sintaxis del array:
token: El token de Google. Obténgalo de la respuesta de esta función. Inclúyalo siempre que sea posible por razones de rendimiento. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresesend-slack-message.user_idRequerido: El ID del usuario vinculado al mensaje.full_nameRequerido: El nombre del remitente, aparecerá en Slack a la izquierda del mensaje. Debería ser el nombre de un agente si el mensaje proviene de un agente, o el nombre del usuario en caso contrario.profile_image: La imagen de perfil del remitente, aparecerá en Slack a la izquierda del mensaje. Formatos soportados:PNGyJPG. Por defecto: vacío.message: El contenido del mensaje.attachments: Array de adjuntos en formato JSON.- Sintaxis del array:
[["nombre", "enlace"], ["nombre", "enlace"], ...]. - Reemplace
nombrecon el nombre del adjunto yenlacecon la URL completa. - Es su responsabilidad subir los archivos a un servidor remoto; este argumento solo acepta la URL de archivos ya subidos. Por defecto:
[].
- Sintaxis del array:
channel: El canal de Slack vinculado al mensaje. Por razones de rendimiento, incluya siempre el canal. Obtendrá el canal después de la primera llamada de esta función, desde la respuesta (ejemplo: C011JFFGSKY).
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingresearchive-slack-channels.
Respuesta
JSON
{
"success": true,
"response": true
}
slack-users
Devuelve la información de conexión de los miembros agentes-slack.
Argumentos
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseslack-users.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseslack-presence.agent_id: El ID del agente a verificar. Por defecto:false.list: Establézcalo entruepara devolver todos los usuarios en línea. Por defecto:false.
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
tokenRequerido: Su token secreto de administrador.functionRequerido: Ingreseslack-channels.
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
- Inicie sesión en el área de administración y vaya a
Configuración > Misceláneas > Webhooks. - 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$responseserá un array. - 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.
- Active los Webhooks y guarde. ZampiBot comenzará a enviar los Webhooks de la lista a continuación a su URL.
Notas:
- La clave
sender-urlse incluye en todos los Webhooks y contiene la URL desde la cual se envía el webhook. - La configuración Webhooks activos define qué webhooks están habilitados. Ingrese los nombres de los webhooks separados por comas. Déjelo vacío para habilitar todos.
¿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"
}
}
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)
settings: Array con los detalles del usuario, ej.{ first_name: "", last_name: "", profile_image: "", email: "", user_type: "" }extra: Array con los detalles adicionales del usuario, ej.{ phone: "", city: "", language: "", country: "", birthday: "" }
Métodos:
id: Devuelve el ID del usuario.type: Devuelve el tipo de usuario. Valores disponibles:visitor,lead,user,agent,admin.name: Devuelve el nombre completo del usuario (nombre y apellido).nameBeautified: Devuelve el nombre completo del usuario si está disponible; de lo contrario, devuelve el nombre de visitante predeterminado.image: Devuelve la imagen de perfil del usuario.get(key): Devuelve el detalle del usuario de la clave dada si está disponible; de lo contrario, devuelve una cadena vacía. Ej.get("email").getExtra(key): Devuelve el detalle adicional del usuario de la clave dada si está disponible; de lo contrario, devuelve una cadena vacía. Ej.get("phone").set(key, value): Actualiza un detalle de usuario o añade uno nuevo. Ej.set("phone", "(02) 123 456789").setExtra(key, value): Actualiza un detalle adicional de usuario o añade uno nuevo.update(function(){}): Conecta a la base de datos y actualiza los detalles del usuario y los detalles adicionales con datos frescos. Opcionalmente ejecuta una función al finalizar. Este método es asíncrono y requiere el ID del usuario para funcionar.getConversations(function(conversations){}, exclude_id): Conecta a la base de datos y obtiene las conversaciones del usuario; cada conversación incluye un extracto del último mensaje. Opcionalmente ejecuta una función al finalizar. El parámetroexclude_idpuede ser cualquier ID de conversación y excluirá esa conversación del valor devuelto. Este método es asíncrono y requiere el ID del usuario para funcionar.getConversationsCode(conversations): Devuelve el código HTML de la lista de conversaciones. Opcionalmente acepta un array de objetosSBConversation.getFullConversation(conversation_id, function(conversation){}): Conecta a la base de datos y devuelve una conversación completa, incluyendo todos los mensajes. Opcionalmente ejecuta una función al finalizar. Este método es asíncrono y requiere un ID de conversación para funcionar.getConversationByID(conversation_id, index): Busca una conversación con el ID dado y la devuelve; de lo contrario, devuelvefalse. Establezcaindexentruepara obtener la posición en el array de conversaciones.addConversation(conversation): Añade una nueva conversación al objeto de usuario. El parámetroconversationdebe ser un objetoSBConversation. Este método no actualiza la base de datos.removeConversation(conversation_id): Elimina una conversación.getLastConversation(): Devuelve la última conversación si existe; de lo contrario, devuelvefalse.isConversationsEmpty(): Devuelvetruesi el usuario tiene al menos 1 conversación; de lo contrario, devuelvefalse.isExtraEmpty(): Devuelvetruesi los detalles adicionales del usuario ya han sido establecidos; de lo contrario, devuelvefalse. Este método devuelvetruetambién si la lista de detalles adicionales está vacía, pero está establecida.delete(function(){}): Elimina al usuario de la base de datos y todas las conversaciones y mensajes vinculados permanentemente. Opcionalmente ejecuta una función al finalizar. Este método es asíncrono y requiere el ID del usuario para funcionar.language(): Devuelve el idioma del usuario.
Variables:
details: Array con los detalles del usuario.extra: Array con los detalles adicionales del usuario.conversations: Array con las conversaciones del usuario. Cada conversación contiene solo el último mensaje.
✉️ SBMessage
Representa un mensaje de una conversación.
Uso: new SBMessage(details)
details: Array con los detalles del mensaje, ej.{ "id": "2319", "user_id": "377", "message": "...", ... }
Métodos:
id: Devuelve el ID del mensaje.attachments: Devuelve el array de adjuntos.message: Devuelve el texto del mensaje.get(key): Devuelve el contenido de la clave dada si está disponible; de lo contrario, devuelve una cadena vacía. Ej.get("message").set(key, value): Actualiza un detalle del mensaje o añade uno nuevo. Ej.set("message", "Hello!").payload(key, value): Establece u obtiene el payload. El payload es un array asociativo que contiene datos extra. Si el valorvaluese establece, el método añade o actualiza la clave con el valor dado.getCode(translation): Devuelve el código HTML del mensaje, listo para ser insertado en el elemento DOM del chat. Este método procesa adjuntos, Mensajes Enriquecidos y formato de texto. Establezcatranslationentruepara obtener el mensaje traducido si está disponible.render(message): Renderiza el mensaje y le da formato añadiendo estilos como negrita y cursiva, y convirtiendo URLs en enlaces clicables. Opcionalmente acepta una cadena y la renderiza en su lugar.strip(message): Elimina el formato de texto. Opcionalmente acepta una cadena y elimina el formato de texto de ella en su lugar.
Variables:
details: Array con los detalles del mensaje.
💬 SBConversation
Representa una conversación.
Uso: new SBConversation(messages, details)
messages: Array de objetosSBMessage.details: (Opcional) Array con los detalles de la conversación, ej.{ conversation_status_code: "2", ... }
Métodos:
id: Devuelve el ID de la conversación.get(key): Devuelve el contenido de la clave dada si está disponible; de lo contrario, devuelve una cadena vacía.set(key, value): Actualiza un detalle de la conversación o añade uno nuevo.getMessage(ID): Devuelve el mensaje con el ID dado. Devuelvefalsesi no se encuentra.getLastMessage(): Devuelve el último mensaje de la conversación. Devuelvefalsesi no hay mensajes.getLastUserMessage(index, agent): Devuelve el último mensaje enviado por el usuario (excluye bots, agentes, admins). Opcionalmente acepta unindexpara iniciar la búsqueda en orden inverso.agent:true(último de agentes/admins),bot(último del bot),no-bot(usuario o agente excluyendo bot),all(agente o bot).
getNextMessage(message_id, user_type): Devuelve el mensaje siguiente al del ID proporcionado.user_typepuede seruseroagent.updateMessage(ID, message): Actualiza el mensaje con el ID dado. El parámetromessagedebe ser un objetoSBMessage.addMessages(messages): Añade nuevos mensajes a la conversación. El parámetromessagesdebe ser un objetoSBMessageúnico o un array de ellos.getCode(text_only): Devuelve el código HTML, o el texto formateado, del mensaje.deleteMessage(ID): Elimina el mensaje con el ID dado del objeto de conversación. No actualiza la base de datos.searchMessages(search, exact_match): Busca la cadena especificada en todos los mensajes y devuelve un array de coincidencias.exact_matchentruepara coincidencia exacta.getUserMessages(user_type): Devuelve un array conteniendo solo los mensajes enviados por el usuario, el bot o los agentes. Valores:user,agents,bot. Por defecto:user.getAttachments(): Devuelve un array con todos los adjuntos de la conversación.getLastConversationID(): Devuelve el ID de la última conversación si existe; de lo contrario, devuelvefalse.updateMessagesStatus(ids): Actualiza el código de estado de múltiples mensajes a leído.idses un array opcional de IDs de mensaje; si se proporciona, se añade el icono de check pero no se actualiza en la base de datos.
Variables:
details: Array con los detalles de la conversación.
🔣 Variables Globales
Las variables en la lista a continuación son accesibles públicamente vía JavaScript.
Variable | Descripción |
| Establézcalo en |
| Sobrescribe las configuraciones predeterminadas del lado del cliente. El valor es un array de claves y valores (ej. |
| Establézcalo en |
|
|
| Establézcalo en |
| 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. |
| Asigne un ID de departamento para asignar automáticamente ese departamento a nuevas conversaciones creadas desde la página. |
| Asigne un ID de agente para asignar automáticamente ese agente a nuevas conversaciones. Úselo con la opción "Ocultar conversaciones de otros agentes". |
|
|
| Devuelve la conversación activa. |
|
|
|
|
| ID del agente activo en la conversación. |
|
|
|
|
|
|
|
|
⚡ 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
user_id: El ID del usuario que envía el mensaje. Utilice la funciónSBF.setting("bot-id")para obtener el ID del bot. Por defecto: -1 (ID del usuario activo).message: El texto del mensaje.attachments: Array de adjuntos. Sintaxis del array:[["nombre", "enlace"], ["nombre", "enlace"], ...]. Reemplacenombrecon el nombre del adjunto yenlacecon la URL completa del adjunto. Por defecto:[].onSuccess: Función a ejecutar cuando la operación se completa. Sintaxis:function(response) { ... }. La respuesta es la misma que la del eventoSBMessageSent. Por defecto:false.payload: Array asociativo conteniendo datos extra, ej.{ "event": "delete-message" }.conversation_status_code: El código de estado de la conversación, si se crea una nueva. Códigos de estado: activo (live) =0, esperando respuesta del usuario =1, esperando respuesta del agente =2, archivado =3, papelera =4. Establézcalo enskippara mantener el estado actual.
Información
- Requisito: El usuario debe estar activo.
SBChat.updateMessage()
Cambia el texto de un mensaje existente.
Parámetros
message_id: El ID del mensaje.message: El texto del mensaje.
Información
- Requisito: El usuario debe estar activo.
- Si el usuario activo es un agente o administrador, se pueden actualizar los mensajes de cualquier usuario. Si el usuario activo es un usuario final, solo puede actualizar sus propios mensajes.
SBChat.sendEmail()
Envía un correo electrónico a los usuarios o agentes devueltos por getRecipientUserID().
Parámetros
message: El texto del mensaje.attachments: Array de adjuntos. Sintaxis del array:[["nombre", "enlace"], ["nombre", "enlace"], ...]. Dialogflow puede leer este array.send_to_active_user: Establézcalo entruepara enviar el correo al usuario activo. Establézcalo en un ID de usuario para enviarlo a ese usuario específico. Por defecto:false.onSuccess: Función a ejecutar cuando se completa. Sintaxis:function(response) { ... }. Por defecto:false.
SBChat.sendSMS()
Envía un mensaje de texto (SMS) a los usuarios o agentes devueltos por getRecipientUserID().
Parámetros
message: El texto del mensaje.
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
titleRequerido: El título de la notificación.messageRequerido: El texto del mensaje.iconRequerido: El icono de la notificación.conversation_id: El ID de la conversación que se abrirá cuando el usuario haga clic en la notificación.
SBChat.getRecipientUserID()
Determina el destinatario adecuado basándose en el contexto.
- Si el usuario activo es un usuario: devuelve el ID del último agente que respondió la conversación; de lo contrario, el ID del agente asignado; si no, el ID del departamento asignado; de lo contrario devuelve
agents(significa todos los agentes). - Si el usuario activo es un admin o agente: devuelve el ID del usuario activo.
SBChat.initChat()
Inicializa el chat y muestra el botón de chat.
Información
- Use esta función en combinación con el ajuste Inicialización manual del área
Configuración > Chat. - Este método no debe insertarse en el evento
$(document).on("SBInit", function () { ... });, use$(document).on("SBReady", function () { ... });en su lugar.
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
open: Establézcalo enfalsepara cerrar el chat. Por defecto:true.
SBChat.openConversation()
Abre una conversación y la muestra en la ventana de chat.
Parámetros
conversation_idRequerido: El ID de la conversación a abrir. Solo se pueden abrir las conversaciones del usuario activo. Use la funciónSBF.activeUser().conversationspara obtener la lista.
SBChat.update()
Actualiza la conversación activa y comprueba si hay nuevos mensajes. Esta función se dispara automáticamente cada 1000ms.
Información
- Requisito: Debe haber una conversación activa.
- Requisito: El usuario debe estar activo.
SBChat.populateConversations()
Puebla la lista de conversaciones del usuario en el panel (dashboard) con todas las conversaciones del usuario.
Parámetros
onSuccess: Función a ejecutar al completar. Sintaxis:function(conversations) { ... }.
Información
- Requisito: El usuario debe estar activo.
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
- Requisito: El usuario debe estar activo.
SBChat.newConversation()
Crea una nueva conversación y opcionalmente añade el primer mensaje a ella.
Parámetros
status_code: El código de estado de la conversación. Por defecto: 0. (0=activo, 1=esperando usuario, 2=esperando agente, 3=archivo, 4=papelera).user_id: El ID del usuario vinculado a la nueva conversación. Por defecto: -1 (ID usuario activo).message: El texto del mensaje.attachments: Array de adjuntos.department: El ID de un departamento. Puede obtener los IDs enConfiguración > Misceláneas > Departamentos. Por defecto: NULL.agent_id: El ID del agente asignado. Por defecto: NULL.onSuccess: Función a ejecutar al completar. Sintaxis:function(conversation) { ... }. Por defecto:false.
Información
- Requisito: El usuario debe estar activo.
SBChat.setConversation()
Establece una conversación existente como la conversación activa.
Parámetros
conversation: La conversación. Debe ser un objetoSBConversation.
Información
- Requisito: El usuario debe estar activo.
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
valueRequerido: Establézcalo entruepara mostrar el icono de carga,falsepara ocultarlo.
Información
- El icono de carga aparece solo en el área de conversación, no en el panel (dashboard) ni en otros paneles.
- Requisito: El usuario debe estar activo.
SBChat.lastAgent()
Devuelve el último agente de la conversación activa.
Parámetros
bot: Establézcalo enfalsepara excluir al bot. Por defecto:true.
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
top: Establézcalo entruepara desplazar hacia el principio (arriba). Por defecto:false.
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
name: El nombre del panel. Valores disponibles:articles.
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
conversation_idRequerido: El ID de la conversación vinculada a la actualización del contador.message_id: El ID del mensaje no leído, establézcalo para incrementar el contador en 1. Establézcalo enfalsepara decrementar el contador en 1. Por defecto:false.
SBChat.setConversationStatus()
Actualiza el código de estado de una conversación.
Parámetros
status_codeRequerido: El código de estado a asignar. (0=activo, 1=esperando usuario, 2=esperando agente, 3=archivo, 4=papelera).
Información
- Requisito: El usuario debe estar activo.
SBChat.typing()
Gestiona la etiqueta "escribiendo..." del encabezado del chat.
Parámetros
user_id: El ID del usuario activo (o del agente activo si está en el admin). Por defecto: -1.action: Valores disponibles:check: Comprueba si el usuario con el ID dado está escribiendo y actualiza el encabezado.set: Asigna el estado de escribiendo al usuario y actualiza el encabezado.start: Muestra el estado de escribiendo en el encabezado.stop: Oculta el estado de escribiendo del encabezado.
Información
- La etiqueta de escribiendo es visible solo cuando una conversación está abierta.
SBChat.showArticles()
Muestra el área de artículos o un solo artículo.
Parámetros
id: El ID de un artículo para mostrar. UseSBChat.getArticles()para obtener la lista. Por defecto: -1.
SBChat.getArticles()
Devuelve la lista de artículos o el contenido de un solo artículo.
Parámetros
id: El ID de un artículo a mostrar. Añada múltiples IDs separados por comas. Por defecto:false.onSuccess: Función a ejecutar al completar. Sintaxis:function(response) { ... }. Por defecto:false.category: Devuelve solo los artículos de la categoría dada. Si estruedevuelve también la lista de categorías. Por defecto:true.count: El número máximo de artículos a devolver. Por defecto:true.
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
- Cada artículo de la lista contiene solo un extracto del contenido.
SBChat.getArticleCategories()
Devuelve las categorías de artículos.
Parámetros
category_type: Establézcalo enparentpara devolver solo las categorías padres. Establézcalo ennormalpara devolver todas las categorías excepto las padres. Por defecto:false.onSuccess: Función a ejecutar al completar. Sintaxis:function(response) { ... }. Por defecto:false.
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
searchRequerido: Cadena con los términos de búsqueda. La función de búsqueda soporta el título y el contenido.buttonRequerido: El objeto del botón de búsqueda.targetRequerido: El objeto HTML donde se insertarán los artículos.
Información
- Requisito: El panel (dashboard) debe estar activo.
- Requisito: Los artículos deben estar activos.
SBChat.setArticleRating()
Establece la calificación de un artículo.
Parámetros
article_idRequerido: El ID del artículo.ratingRequerido: La calificación a añadir. Ingrese1para una calificación positiva o0para una negativa.onSuccess: Función a ejecutar al completar. Sintaxis:function(response) { ... }. Por defecto:false.
SBChat.categoryEmoji()
Selecciona una categoría de la caja de emojis.
Parámetros
categoryRequerido: El nombre de la categoría. Valores disponibles:Smileys,People,Animals,Food,Travel,Activities,Objects,Symbols.
SBChat.searchEmoji()
Busca emojis que coincidan con los términos de búsqueda y los muestra en la caja de emojis.
Parámetros
searchRequerido: El texto de búsqueda.
SBChat.insertText()
Inserta una cadena en el editor de chat.
Parámetros
text: La cadena a insertar en el editor.
Información
- Requisito: Debe haber una conversación activa y abierta.
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
close: Establézcalo entruepara cerrar el pop-up. Por defecto:false.content: Array con el contenido del pop-up. Sintaxis del array:{ image: "", title: "", message: "" }. Establézcalo enfalsepara usar el contenido deConfiguración > Chat > Mensaje emergente. Por defecto:false.
Información
- Requisito: El chat debe estar cerrado.
SBChat.slackMessage()
Envía un mensaje a Slack.
Parámetros
user_idRequerido: El ID del usuario activo (o el ID del agente activo si está en el área de administración). Utilice la funciónSBF.activeUser().idpara obtener el ID del usuario activo (utilice la variableSB_ACTIVE_AGENT["id"]para obtener el ID del agente activo si está en el área de administración). Utilice la variableSBChat.agent_idpara obtener el ID del último agente de la conversación. Por defecto: -1.full_nameRequerido: El nombre del remitente, aparecerá en Slack a la izquierda del mensaje. Debería ser el nombre de un agente si el mensaje proviene de un agente, o el nombre del usuario en caso contrario.profile_imageRequerido: La imagen de perfil del remitente, aparecerá en Slack a la izquierda del mensaje. Debería ser la imagen de perfil de un agente si el mensaje proviene de un agente, o la imagen del usuario en caso contrario. Formatos soportados:PNGyJPG.messageRequerido: El texto del mensaje.attachments: Array de adjuntos. Sintaxis del array:[["nombre", "enlace"], ["nombre", "enlace"], ...]. Reemplacenombrecon el nombre del adjunto yenlacecon la URL completa del adjunto.
Información
- Requisito: Debe haber una conversación activa.
SBChat.deleteMessage()
Elimina un mensaje de la base de datos y de la conversación activa si está disponible.
Parámetros
message_idRequerido: El ID del mensaje a eliminar. Utilice la funciónSBChat.conversation.messagespara obtener la lista de mensajes de la conversación activa.
Información
- Solo se pueden eliminar los mensajes de las conversaciones del usuario activo.
- Requisito: Debe haber una conversación activa.
SBChat.registration()
Muestra el área de registro o de inicio de sesión, o comprueba si el registro es obligatorio.
Parámetros
check: Establézcalo entruepara comprobar si el registro es obligatorio. Por defecto:false.type: Ingreseregistrationpara mostrar el formulario de registro, inserteloginpara mostrar el formulario de inicio de sesión.
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
onSuccess: Función a ejecutar al completar. Sintaxis:function(response) { ... }. Por defecto:false.
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
- Si un usuario ya ha iniciado sesión, se requiere recargar la página para activar el nuevo usuario.
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
department_id: El ID del departamento. Si este parámetro no se establece o es nulo, la función devuelve el código de todos los departamentos.onSuccessRequerido: Función a ejecutar al completar. Sintaxis:function(response) { ... }.
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
- Requisito: Debe haber una conversación activa.
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
update_conversation_status: Establézcalo enfalsepara solo ocultar la conversación del widget de chat sin establecer su estado como archivado. Por defecto:true.
SBChat.flashNotification()
Inicia la notificación parpadeante (flash).
SBChat.playSound()
Reproduce el sonido que suena cuando se recibe un nuevo mensaje.
Parámetros
repeat: Establézcalo entruepara repetir el sonido tantas veces como se haya configurado en los ajustes. Por defecto:false.
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
nameRequerido: El nombre de la app, ej.dialogflow.
SBApps.wordpress.ajax()
Realiza una llamada AJAX de WordPress.
Parámetros
actionRequerido: La acción. Valores disponibles:wp-login,wp-registration,button-purchase. Otros valores pueden estar disponibles, revise el archivomain.jspara todos los valores.dataRequerido: Los parámetros de la acción, revise el archivomain.jspara más detalles.onSuccess: Función a ejecutar al completar. Sintaxis:function(response) { ... }. Por defecto:false.
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
message: El texto del mensaje.attachments: Array de adjuntos. Sintaxis del array:[["nombre", "enlace"], ["nombre", "enlace"], ...]. Reemplacenombrecon el nombre del adjunto yenlacecon la URL completa del adjunto.delay: Retraso de la respuesta del bot en milisegundos.parameters: Array de información opcional. Sintaxis del array:{ "nombre": "valor", "nombre": "valor", ...}.audio: URL o ruta de un archivo de audio para el reconocimiento de voz. Por defecto:false.
Información
- Requisito: La aplicación de Inteligencia Artificial es requerida y Dialogflow debe estar activo en el área de Configuración.
- Requisito: El usuario debe estar activo.
- Use
SBApps.dialogflow.project_id = AGENT_IDpara cambiar el agente de Dialogflow por defecto.
SBApps.dialogflow.active()
Comprueba si Dialogflow y OpenAI están activos o los desactiva.
Parámetros
active: Establézcalo enfalsepara deshabilitar Dialogflow y OpenAI y detener el chatbot. Establézcalo enactivatepara activar el chatbot. Por defecto:true.check_dialogflow: Para verificar solo la activación de OpenAI, cámbielo afalse. Por defecto:true.check_open_ai: Para verificar solo la activación de Dialogflow, cámbielo afalse. Por defecto:true.
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
- Requisito: La aplicación de Inteligencia Artificial es requerida y Dialogflow debe estar activo en el área de Configuració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
messageRequerido: El mensaje.onSuccess: Función a ejecutar al completar. Sintaxis:function(response) { ... }.audio: URL o ruta de un archivo de audio para el reconocimiento de voz. Por defecto:false.
Información
- Requisito: La aplicación de Inteligencia Artificial es requerida y
Configuración > Inteligencia Artificial > OpenAI > Chatbotdebe estar activo. - Si hay una conversación activa, la respuesta de OpenAI se añade automáticamente como un nuevo mensaje.
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
stringsRequerido: Array de las cadenas a traducir, ej.["Hello world", "How are you?"].language_codeRequerido: El código de idioma de dos letras al que desea traducir. Para Chino Tradicional usezt, para Chino Simplificado usezh, para Portugués Brasileño usept.onSuccessRequerido: Función a ejecutar al completar. Sintaxis:function(response) { ... }.
🎫 JAVASCRIPT API: Tickets
Lista de funciones de la App de Tickets.
SBTickets.showPanel()
Muestra un panel o el área de conversación.
Parámetros
name: El nombre del panel a mostrar. Nombres disponibles:new-ticket,privacy,articles,edit-profile,login,registration. Déjelo vacío para mostrar el área de conversación principal.title: El título a mostrar como nombre del panel.
SBTickets.showSidePanels()
Muestra u oculta los paneles laterales.
Parámetros
show: Establézcalo enfalsepara ocultar los paneles.
SBTickets.setAgent()
Obtiene los detalles del agente y puebla el área de perfil del agente del panel derecho.
Parámetros
agent_id: El ID del agente.
SBTickets.activateConversation()
Activa y muestra una conversación.
Parámetros
conversation: La conversación a activar como un objetoSBConversation.
SBTickets.selectConversation()
Establece el estilo de una conversación del panel izquierdo como la conversación activa.
Parámetros
conversation_id: El ID de la conversación.
SBTickets.getActiveConversation()
Devuelve el objeto HTML DOM de la conversación activa.
Parámetros
type: Establézcalo enIDpara obtener solo el ID de la conversación.
📡 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
onSuccess: Función a ejecutar al completar. Sintaxis:function(response) { ... }.
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
channel_nameRequerido: El nombre del canal.onSuccess: Función a ejecutar al completar. Sintaxis:function(response) { ... }.
Información
- Si Pusher no está inicializado, la función lo inicializa automáticamente.
- Puede acceder al canal desde
SBPusher.channels['NOMBRE DEL CANAL'].
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
eventRequerido: El nombre del evento.callbackRequerido: Función a ejecutar una vez que se recibe el evento. Sintaxis:function(response) { ... }.channel: El nombre del canal. Por defecto:private-user-[ID usuario activo].
Información
- Si Pusher no está inicializado, la función lo inicializa automáticamente.
- Si el usuario no está suscrito al canal, la función suscribe al usuario automáticamente.
SBPusher.trigger()
Dispara un evento en un canal de Pusher.
Parámetros
eventRequerido: El nombre del evento.data: Array de valores. Sintaxis:{ "nombre": "valor" }.channel: El nombre del canal. Por defecto:private-user-[ID usuario activo].
SBPusher.presence()
Suscribe al usuario activo al canal de presencia utilizado para el estado en línea de usuarios y administradores.
Parámetros
index: El índice del canal de presencia. Por defecto: 1.onSuccess: Función a ejecutar al completar. Sintaxis:function(response) { ... }.
Información
- Si Pusher no está inicializado, la función lo inicializa automáticamente.
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
messageRequerido: El texto del mensaje.interests: Los destinatarios. Puede ser un ID de usuario o agente, o las siguientes cadenas:agents,department-123(reemplace 123 con el ID del departamento). Por defecto: asignado automáticamente a los destinatarios correctos.
Información
- Esta función solo funciona si las notificaciones Push están activas en el área de configuración.
- Actualmente, las notificaciones Push solo son compatibles con dispositivos Mac, Windows y Android. Los iPhones y dispositivos iOS no son compatibles.
➕ 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
stringRequerido: La cadena a traducir.
Información
- Devuelve la cadena traducida si está disponible; de lo contrario, devuelve la cadena original.
- Esta función funciona solo para las traducciones del front-end.
- Para más detalles sobre el idioma activo, consulte la documentación de traducciones.
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
- Para los métodos del usuario y más detalles, consulte la documentación de
SBUser.
SBF.getActiveUser()
Activa el usuario conectado (logueado) y devuelve los detalles del usuario.
Parámetros
db: Establézcalo entruepara verificar que el usuario existe en la base de datos.onSuccess: Función a ejecutar cuando la función se completa. Sintaxis:function(response) { ... }.
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
- Para los métodos del usuario y más detalles, consulte la documentación de
SBUser.
SBF.cors()
Ejecuta una petición HTTP POST o GET a una URL y devuelve la respuesta.
Parámetros
method: InsertePOSToGET. Por defecto:GET.urlRequerido: Ingrese la URL completa de la petición.onSuccessRequerido: Función a ejecutar cuando la función se completa. Sintaxis:function(response) { ... }.
SBF.null()
Comprueba si una variable existente es nula o vacía.
Parámetros
variableRequerido: La variable a comprobar.
Información
- Devuelve
truesi la variable es una cadena vacía,null,'null', oundefined.
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
name: El parámetro a buscar. Devuelvefalsesi el parámetro no se encuentra. Si no se proporciona el nombre del parámetro, se devuelve un array con todos los parámetros. Por defecto:false.url: La URL de la cual extraer los parámetros. Por defecto: URL actual.
SBF.restoreJson()
Convierte una cadena codificada en JSON a texto normal.
Parámetros
valueRequerido: La cadena a convertir.
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
valueRequerido: La cadena a convertir.
Información
- Utilice la función
slugToString(slug)para convertir un slug de nuevo a una cadena.
SBF.settingsStringToArray()
Convierte una cadena a un array de valores. Formato de la cadena: nombre:valor,nombre:valor,....
Parámetros
valueRequerido: La cadena a convertir.
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
user_typeRequerido: La cadena del tipo de usuario a comprobar.
SBF.error()
Dispara el error de JavaScript personalizado de ZampiBot.
Parámetros
messageRequerido: Cadena con el mensaje de error o un objetoError.
SBF.errorValidation()
Comprueba si una respuesta de una llamada AJAX es un error de validación.
Parámetros
responseRequerido: La respuesta de la llamada AJAX.
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
email: El correo electrónico del usuario para iniciar sesión. Si se establece este atributo, también debe establecer la contraseña. Por defecto: cadena vacía.password: La contraseña del usuario para iniciar sesión. Si se establece este atributo, también debe establecer el correo electrónico. Por defecto: cadena vacía.user_id: El ID del usuario para iniciar sesión. Si se establece este atributo, también debe establecer el token. Por defecto: cadena vacía.token: El token del usuario para iniciar sesión. Si se establece este atributo, también debe establecer el ID del usuario. Puede obtener el token desde el área de Usuarios abriendo el cuadro de perfil de un usuario, solo si usted es un administrador. Por defecto: cadena vacía.onSuccess: Función a ejecutar cuando la función se completa. Sintaxis:function(response) { ... }. Por defecto:false.
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
value: La cadena de inicio de sesión encriptada.
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
content: El contenido a mostrar. Puede ser cualquier contenido HTML; para mostrar una imagen use el código<img src="image.jpg" >.
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
keyRequerido: El ID del valor a establecer o recuperar.value: El valor a guardar. Si no se establece, la función devuelve el valor de la clave dada.
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
keyRequerido: La clave a guardar o comprobar.hours: El número de horas para comparar con la fecha y hora guardada.
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
keyRequerido: El nombre de la configuración.value: El valor de la configuración. Por defecto: -1.
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
shortcodeRequerido: La cadena del shortcode, ej.[rating title="Califique su conversación" message="Cuéntenos su experiencia." success="¡Gracias!"].
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
linkRequerido: El enlace a abrir.width: El ancho de la ventana en px.height: La altura de la ventana en px.
SBF.loadResource()
Incluye un archivo .js o .css en el área <head> de la página.
Parámetros
urlRequerido: La URL del archivo a cargar.script: Establézcalo entruepara archivos .js. Por defecto: archivos .css.
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
bounceFunctionRequerido: Función a ejecutar cuando la función se completa. Sintaxis:function() { ... }.id: Inserte una cadena única y aleatoria nunca usada por otras instancias de debounce. Las cadenas #1, #2, #3, #4, ... están reservadas y no pueden usarse.interval: El tiempo mínimo en milisegundos entre la nueva ejecución y la anterior. Por defecto: 500.
SBF.translate()
Traduce una cadena utilizando las traducciones de ZampiBot.
Parámetros
stringRequerido: La cadena a traducir.
SBF.escape()
Escapa una cadena (sanitización).
Parámetros
stringRequerido: La cadena a escapar.
SBF.convertUTCDateToLocalDate()
Convierte una fecha a la hora local.
Parámetros
datetimeRequerido: La cadena de fecha y hora. Formato: Y/m/d H:i:s.UTCoffset: Un desplazamiento UTC. Por defecto: 0.
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
detailsRequerido: Array con los detalles de la ubicación, ej.{ "timezone" : "", "country" : "", "city" : "" }. Esta función acepta el métodoextrade cualquier objetoSBUser, ej.SBF.getLocationTimeString(activeUser().extra, function(){}).onSuccessRequerido: Función a ejecutar cuando la función se completa. Sintaxis:function(response) { ... }.
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
dateRequerido: Fecha y hora en el siguiente formato: YYYY-MM-DD HH:MM:SS. Ej. 2020-05-13 13:35:59. Puede eliminar la hora y dejar solo la fecha. Las fechas almacenadas en la base de datos están en UTC+0.extended: Establézcalo entruepara incluir minutos y segundos. Por defecto:false.future: Establézcalo entruesi la fecha es una fecha futura. Por defecto:false.
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
dateRequerido: Fecha y hora en el siguiente formato: YYYY-MM-DD HH:MM:SS. Ej. 2020-05-13 13:35:59. Puede eliminar la hora y dejar solo la fecha. Ingresenowpara obtener la fecha y hora actual. Las fechas almacenadas en la base de datos están en UTC+0.
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
datetimeRequerido: La cadena de fecha y hora.
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
datetimeRequerido: La cadena de fecha y hora.
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
message: El mensaje de error.function_name: El nombre de la función que generó el error.
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
user_id: El ID del usuario que envió el mensaje.user: El objeto de usuario.conversation_id: El ID de la conversación vinculada al mensaje.conversation_status: El código de estado de la conversación vinculada al mensaje. (0=activo, 1=esperando usuario, 2=esperando agente, 3=archivo, 4=papelera).message_id: El ID del mensaje.message: El texto del mensaje.attachments: Los adjuntos del mensaje.conversation_source: La fuente de la conversación. Fuentes disponibles:em(Email),tk(Ticket),wa(WhatsApp),fb(Facebook Messenger),ig(Instagram),tw(Twitter),wc(WeChat),tx(Mensaje de texto),gb(Google Business Messages),ln(LINE),vb(Viber).
SBBotMessage
Evento disparado cuando el chatbot responde a un mensaje.
Respuesta
response: El array de respuesta en formato JSON de Dialogflow.message: El mensaje de entrada del usuario.
SBSlackMessageSent
Evento disparado cuando se envía un mensaje a Slack.
Respuesta
message: El texto del mensaje.conversation_id: El ID de la conversación vinculada al mensaje.
SBEmailSent
Evento disparado cuando se envía un correo electrónico de notificación a un usuario o un agente.
Respuesta
recipent_id: El ID del usuario que recibirá el correo.message: El mensaje del correo.attachments: Los adjuntos del correo.
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
conversation_id: La acción puede seraddsi el contador aumenta en 1, oremovesi disminuye en 1.message_id: El ID del mensaje no leído; si se establece, el contador aumenta en 1. Si esfalse, el contador disminuye en 1.
SBConversationOpen
Evento disparado cuando una conversación está completamente cargada y se abre en el chat.
Respuesta
response: La conversación como un objetoSBConversation.
SBNewMessagesReceived
Evento disparado cuando hay nuevos mensajes en la conversación activa.
Respuesta
messages: Array de objetosSBMessage.conversation_id: El ID de conversación vinculado a los mensajes.
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
conversation_id: El ID de la conversación.status_code: El nuevo código de estado de la conversación. (0=activo, 1=esperando usuario, 2=esperando agente, 3=archivo, 4=papelera).
SBPopulateConversations
Evento disparado después de que se han obtenido todas las conversaciones del usuario.
Respuesta
conversations: Array de conversaciones como objetosSBConversation.
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
id: El ID del artículo. Este valor es-1si se muestra el panel de artículos.articles: Puede ser el array con los detalles del artículo individual o el array con la lista de todos los artículos.
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
user: Array con los detalles del usuario.extra: Array con los detalles adicionales del usuario.
SBRichMessageShown
Evento disparado cuando se muestra un Mensaje Enriquecido (Rich Message) cargado asíncronamente.
Respuesta
name: El nombre del Mensaje Enriquecido.settings: La configuración del Mensaje Enriquecido.response: El código HTML del Mensaje Enriquecido.
SBRichMessageSubmit
Evento disparado cuando se recibe la respuesta de un Mensaje Enriquecido.
Respuesta
result: La respuesta del Mensaje Enriquecido.data: Los detalles del Mensaje Enriquecido y los datos enviados por el usuario.id: El ID del Mensaje Enriquecido.
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
name: El nombre completo del usuario.email: El correo electrónico del usuario.ID: El ID del mensaje enriquecido.
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
name: El nombre del panel activo. Valores:new-ticket,privacy,articles,edit-profile,login,registration. Si el valor está vacío, el área de conversación principal está activa.email: El correo electrónico del usuario.
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
recipent_id: El ID del usuario que recibirá el mensaje de texto.message: El mensaje de texto.response: La respuesta de Twilio.
SBActiveUserLoaded
Evento disparado cuando el usuario activo ha sido cargado.
Respuesta
recipent_id: El ID del usuario que recibirá el mensaje de texto.message: El mensaje de texto.response: La respuesta de Twilio.
SBOpenAIMessage
Evento disparado cuando OpenAI (ChatGPT) devuelve una respuesta.
Respuesta
response: La respuesta de OpenAI.message: El mensaje de texto.response: La respuesta de Twilio.
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
settings: Las configuraciones.external_settings: Configuraciones guardadas en una entrada dedicada de la base de datos.external_settings_translations: Traducciones de configuraciones externas.
🔄 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.
- upload-path: Función de Admin (requiere admin).
- update-bot: Función de Admin (requiere admin).
- get-last-message: Función de Admin (requiere admin).
- delete-attachments: Función de Admin (requiere admin).
- execute-bot-message: Si es usuario final, solo conversaciones propias. Si es agente/admin, cualquier conversación.
- logs: Función de Admin (requiere agente o admin).
- newsletter: Función de Admin (requiere agente o admin).
- get-last-agent-in-conversation: Función de Admin (requiere agente o admin).
- messaging-platforms-send-message: Función de Admin (requiere agente o admin).
- aws-s3: Si es usuario final, solo su ID. Si es agente/admin, cualquier usuario.
- is-allowed-extension: Si es usuario final, solo su ID. Si es agente/admin, cualquier usuario.
- translate-string: Si es usuario final, solo su ID. Si es agente/admin, cualquier usuario.
- saved-replies
- get-settings: Función de Admin (requiere admin).
- save-settings: Función de Admin (requiere admin).
- get-multi-setting: Función de Admin (requiere admin).
- save-external-setting: Función de Admin (requiere admin).
- get-external-setting: Función de Admin (requiere admin).
- export-settings: Función de Admin (requiere admin).
- import-settings: Función de Admin (requiere admin).
- is-online: Función de Admin (requiere agente o admin).
- add-user: Los atributos principales van en
settingsy los extra enextra_settings. - add-user-and-login
- get-user: Restringido al propio usuario si no es admin/agente.
- get-user-by: Función de Admin (requiere admin).
- get-users: Función de Admin (requiere agente o admin).
- get-new-users: Función de Admin (requiere agente o admin).
- get-user-extra: Restringido al propio usuario si no es admin/agente.
- get-user-language: Función de Admin (requiere agente o admin).
- get-online-users: Función de Admin (requiere agente o admin).
- get-user-from-conversation: Función de Admin (requiere agente o admin).
- agents-online
- search-users: Función de Admin (requiere agente o admin).
- delete-user: Función de Admin (requiere admin).
- delete-users: Función de Admin (requiere admin).
- update-user: Los atributos principales van en
settingsy los extra enextra_settings. Restringido al propio ID si no es admin/agente. - update-user-to-lead: Restringido al propio ID si no es admin/agente.
- count-users: Función de Admin (requiere agente o admin).
- get-conversations: Función de Admin (requiere agente o admin). Argumento
routingdisponible. - get-new-conversations: Función de Admin (requiere agente o admin). Argumento
queuedisponible. - get-conversation: Restringido a conversaciones propias si no es admin/agente.
- get-user-conversations: Restringido a propias si no es admin/agente.
- get-new-user-conversations: Restringido a propias si no es admin/agente.
- search-conversations: Función de Admin (requiere agente o admin).
- search-user-conversations: Restringido a propias si no es admin/agente.
user_idno requerido (por defecto usuario activo). - new-conversation: Restringido a propias si no es admin/agente.
- update-conversation-status
- update-conversation-department: Restringido a propias si no es admin/agente.
- update-conversation-agent: Restringido a propias si no es admin/agente.
- get-new-messages: Restringido a propias si no es admin/agente.
- send-message: Restringido a propias si no es admin/agente.
- send-email: Si es usuario final, solo a agentes/admins. Si es agente/admin, a cualquiera.
- send-slack-message: Restringido a propias si no es admin/agente.
- update-message: Restringido a mensajes propios si no es admin/agente.
- update-messages-status: Restringido a mensajes propios si no es admin/agente.
- delete-message: Restringido a mensajes propios si no es admin/agente.
- slack-users: Función de Admin (requiere agente o admin).
- archive-slack-channels: Función de Admin (requiere agente o admin).
- slack-channels: Función de Admin (requiere admin).
- current-url
- set-rating: Restringido a conversaciones propias si no es admin/agente.
- get-rating: Función de Admin (requiere agente o admin).
- get-articles
- save-article: Función de Admin (requiere agente o admin).
- search-articles
- get-articles-categories: Función de Admin (requiere agente o admin).
- save-articles-categories: Función de Admin (requiere agente o admin).
- article-ratings
- get-versions
- update: Función de Admin (requiere agente o admin).
- app-get-key: Función de Admin (requiere admin).
- app-activation: Función de Admin (requiere admin).
- csv-users: Función de Admin (requiere admin o agente).
- transcript: Restringido a conversaciones propias si no es admin/agente.
- is-agent-typing: Función de Admin (requiere admin o agente).
- dialogflow-message: Funciona solo para el usuario activo.
- dialogflow-get-intents: Función de Admin (requiere admin).
- dialogflow-create-intent: Función de Admin (requiere admin).
- dialogflow-update-intent: Función de Admin (requiere admin).
- dialogflow-entity: Función de Admin (requiere admin).
- dialogflow-get-entity: Función de Admin (requiere admin o agente).
- google-get-token
- dialogflow-get-agent: Función de Admin (requiere admin o agente).
- dialogflow-set-active-context: Restringido a usuario activo si no es admin/agente.
- dialogflow-curl: Función de Admin (requiere admin).
- dialogflow-human-takeover: Restringido a usuario activo si no es admin/agente.
- dialogflow-smart-reply: Función de Admin (requiere admin o agente).
- cron-jobs
- woocommerce-get-customer: Función de Admin (requiere admin o agente).
- woocommerce-get-user-orders: Función de Admin (requiere admin o agente).
- woocommerce-get-order: Función de Admin (requiere admin o agente).
- woocommerce-get-product: Función de Admin (requiere admin o agente).
- woocommerce-get-products: Función de Admin (requiere admin o agente).
- woocommerce-search-products: Función de Admin (requiere admin o agente).
- woocommerce-get-taxonomies: Función de Admin (requiere admin).
- woocommerce-get-attributes: Función de Admin (requiere admin).
- woocommerce-get-product-id-by-name: Función de Admin (requiere admin o agente).
- woocommerce-get-product-images: Función de Admin (requiere admin o agente).
- woocommerce-get-product-taxonomies: Función de Admin (requiere admin o agente).
- woocommerce-get-attribute-by-term: Función de Admin (requiere admin o agente).
- woocommerce-get-attribute-by-name: Función de Admin (requiere admin o agente).
- woocommerce-is-in-stock: Función de Admin (requiere admin o agente).
- woocommerce-coupon: Función de Admin (requiere admin o agente).
- woocommerce-coupon-check: Función de Admin (requiere admin o agente).
- woocommerce-coupon-delete-expired: Función de Admin (requiere admin o agente).
- woocommerce-get-url: Función de Admin (requiere admin o agente).
- woocommerce-get-session: Función de Admin (requiere admin).
- woocommerce-get-session-key: Función de Admin (requiere admin o agente).
- woocommerce-payment-methods: Función de Admin (requiere admin o agente).
- woocommerce-shipping-locations: Función de Admin (requiere admin o agente).
- chat-css
- get-avatar: Restringido a usuario activo si no es admin/agente.
- get-agents-ids: Función de Admin (requiere admin o agente).
- get-users-with-details: Función de Admin (requiere admin o agente).
- send-custom-email: Función de Admin (requiere admin o agente).
- send-sms: Restringido a usuario activo si no es admin/agente.
- email-piping
- get-notes: Función de Admin (requiere admin o agente).
- add-note: Función de Admin (requiere admin o agente).
- delete-note: Función de Admin (requiere admin o agente).
- automations-get
- automations-save: Función de Admin (requiere admin).
- automations-validate
- automations-run-all
- automations-run
- automations-is-sent: Función de Admin (requiere agente o admin).
- get-agents-in-conversation: Restringido a conversaciones propias si no es admin/agente.
- get-departments
- login
- logout
- update-login: Restringido a conversaciones propias si no es admin/agente.
- is-typing
- set-typing
- clean-data: Función de Admin (requiere admin o agente).
- get-translation
- get-translations
- save-translations: Función de Admin (requiere agente o admin).
- delete-leads: Función de Admin (requiere admin).
- reports: Función de Admin (requiere admin).
- reports-update: Función de Admin (requiere admin).
- direct-message: Función de Admin (requiere agente o admin).
- count-conversations: Función de Admin (requiere agente o admin).
- updates-available: Función de Admin (requiere admin).
- google-translate: Función de Admin (requiere admin o agente).
- google-language-detection-update-user: Restringido a conversaciones propias si no es admin/agente.
- check-conversations-assignment: Función de Admin (requiere admin o agente).
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
functionRequerido: Inserteclose-message.bot_idRequerido: El ID del bot. Use la funciónSBF.setting("bot-id")para obtener el ID del bot. Si está en el área de administración useSB_ADMIN_SETTINGS['bot-id']en su lugar.conversation_idRequerido: El ID de la conversación a la cual enviar el mensaje.
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
functionRequerido: Ingreseupdate-user-and-message.user_idRequerido: El ID del usuario a actualizar.settings: Array con los detalles del usuario. Ej:{ first_name: "Don", last_name: "John", profile_image: "image.jpg", email: "example@gmail.com", user_type: "admin" }.settings_extra: Array con detalles adicionales del usuario. Sintaxis del array:{ "ID": ["valor", "Nombre"], ...}.message_id: El ID del mensaje a actualizar.message: El texto del mensaje.payload: Array asociativo conteniendo datos extra, ej.{"rich-messages":{"123":{"type":"buttons","result":"Premium Plan"}}}.
Respuesta true
get-agent
Devuelve los detalles de un agente, administrador o bot.
Parámetros
agent_idRequerido: El ID del agente.
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
user_idRequerido: El ID del usuario.
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.
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.