Uso de Apis

WEB API

Configuración y uso

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

Uso usuario

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

PHP

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

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

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

Reemplace las siguientes cadenas con los valores correctos:

Información


👥 WEB API: Usuarios

Métodos para gestionar usuarios, agentes y administradores.

get-user

Devuelve los detalles de un usuario.

Argumentos

Respuesta

JSON

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

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


get-user-by

Busca un usuario con los detalles especificados y lo devuelve.

Argumentos

Respuesta

JSON

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

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


get-user-extra

Devuelve los detalles adicionales de un usuario.

Argumentos

Respuesta

JSON

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

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


get-user-language

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

Argumentos

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


get-users

Devuelve los detalles de todos los usuarios.

Argumentos

Respuesta

JSON

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

get-new-users

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

Argumentos

Respuesta

JSON

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

get-online-users

Devuelve los usuarios en línea, incluyendo agentes.

Argumentos

Respuesta

JSON

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

get-users-with-details

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

Argumentos

Respuesta

JSON

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

get-agent

Devuelve los detalles de un agente o administrador.

Argumentos

Respuesta

JSON

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

get-agents-ids

Devuelve un array con los IDs de los Agentes.

Argumentos

Respuesta [881, 153, ...]


get-user-from-conversation

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

Argumentos

Respuesta

JSON

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

agents-online

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

Respuesta

JSON

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

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


search-users

Devuelve los usuarios que coinciden con la búsqueda.

Argumentos

Respuesta

JSON

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

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


add-user

Crea un nuevo usuario.

Argumentos

Respuesta

JSON

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

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


update-user

Actualiza los detalles de un usuario existente.

Argumentos

Respuesta

JSON

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

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


delete-user

Elimina un usuario y todas las conversaciones y mensajes vinculados.

Argumentos

Respuesta

JSON

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

delete-users

Elimina múltiples usuarios y sus datos vinculados.

Argumentos

Respuesta

JSON

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

is-online

Verifica si un usuario está en línea.

Argumentos

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


current-url

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

Argumentos

Respuesta

JSON

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

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


count-users

Devuelve el conteo total de usuarios agrupados por tipo.

Argumentos

Respuesta

JSON

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

update-user-to-lead

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

Argumentos

Respuesta

JSON

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

get-avatar

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

Argumentos

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

get-bot-id

Devuelve el ID del bot de ZampiBot.

Respuesta 123


is-typing

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

Parámetros

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


is-agent-typing

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

Argumentos

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

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


set-typing

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

Parámetros

Respuesta

JSON

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

login

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

Parámetros

Respuesta

JSON

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

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


logout

Cierra la sesión del usuario conectado.

Parámetros

Respuesta

JSON

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

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


update-login

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

Parámetros

Respuesta

YXNkWGNSeTdtRTdDYVkxVG8wckN4YWF6V2s0Tk1mczBSVHdQbHBpOWdmejVUTTdOUUxEUENhdUVoYmROWn...

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


delete-leads

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

Parámetros

Respuesta

JSON

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

update-bot

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

Argumentos

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


csv-users

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

Argumentos

Respuesta

JSON

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

WEB API: Conversaciones

Métodos para gestionar conversaciones y mensajes.

get-conversation

Devuelve una conversación y sus mensajes.

Argumentos

Respuesta

JSON

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

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


get-conversations

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

Argumentos

Respuesta

JSON

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

get-new-conversations

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

Argumentos

Respuesta

JSON

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

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


get-user-conversations

Devuelve las conversaciones de un usuario.

Argumentos

Respuesta

JSON

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

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


get-new-user-conversations

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

Argumentos

Respuesta

JSON

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

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


search-conversations

Devuelve conversaciones que coinciden con la búsqueda.

Argumentos

Respuesta

JSON

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

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


search-user-conversations

Busca en las conversaciones de un usuario específico.

Argumentos

Respuesta

JSON

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

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

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

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

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

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


new-conversation

Crea una nueva conversación.

Argumentos

Respuesta

JSON

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

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


update-conversation-status

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

Argumentos

Respuesta

JSON

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

update-conversation-department

Actualiza el departamento de una conversación.

Argumentos

Respuesta

JSON

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

update-conversation-agent

Asigna o actualiza el agente de una conversación.

Argumentos

Respuesta

JSON

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

set-rating

Asigna una calificación a una conversación.

Argumentos

Respuesta

JSON

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

get-rating

Obtiene las calificaciones asignadas a un agente.

Argumentos

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

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


get-new-messages

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

Argumentos

Respuesta

JSON

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

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


get-last-message

Devuelve el último mensaje de una conversación.

Argumentos

Respuesta

JSON

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

send-message

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

Argumentos

Respuesta

JSON

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

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


update-message

Actualiza un mensaje existente.

Argumentos

Respuesta

JSON

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

delete-message

Elimina un mensaje existente.

Argumentos

Respuesta

JSON

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

delete-attachments

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

Argumentos

Respuesta

JSON

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

update-messages-status

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

Argumentos

Respuesta

JSON

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

get-agents-in-conversation

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

Argumentos

Respuesta

JSON

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

transcript

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

Argumentos

Respuesta

JSON

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

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


direct-message

Envía un mensaje de chat directo.

Argumentos

Respuesta

JSON

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

messaging-platforms-send-message

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

Argumentos

Respuesta

JSON

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

count-conversations

Cuenta el número de conversaciones.

Argumentos

Respuesta

JSON

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

check-conversations-assignment

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

Argumentos

Respuesta

JSON

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

get-last-agent-in-conversation

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

Argumentos

Respuesta

JSON


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

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


execute-bot-message

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

Argumentos

Respuesta

JSON

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

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


⚙️ WEB API: Configuración (Settings)

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

get-setting

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

Argumentos

Respuesta

JSON


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

get-multi-setting

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

Argumentos

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


get-external-setting

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

Argumentos

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


get-settings

Devuelve un array con todas las configuraciones.

Argumentos

Respuesta

JSON


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

save-settings

Guarda todas las configuraciones.

Argumentos

Respuesta

JSON


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

save-external-setting

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

Argumentos

Respuesta

JSON


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

export-settings

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

Parámetros

Respuesta

JSON


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

Devuelve la URL del archivo JSON que contiene las configuraciones.


import-settings

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

Parámetros

Respuesta

JSON


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

get-departments

Devuelve los departamentos de ZampiBot.

Parámetros

Respuesta

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

saved-replies

Devuelve un array con todas las respuestas guardadas.

Argumentos

Respuesta

JSON


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

get-translation

Devuelve las traducciones en el idioma dado.

Parámetros

Respuesta

JSON


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

get-translations

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

Parámetros

Respuesta

JSON


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

save-translations

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

Parámetros

Respuesta

JSON


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

translate-string

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

Argumentos

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


📄 WEB API: Artículos

Funciones de Artículos y Base de Conocimientos.

get-articles

Devuelve un array con todos los artículos o un solo artículo.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": [
        {
            "id": "6P2Oq",
            "title": "What's new with the API V2?",
            "content": "The API V2 is the new iteration of o ...",
            "link": "https://chatbot.zampisoft.com",
            "categories": ["K92kl"]
        },
        {
            "title": "Should I move to the new system?",
            "content": "Yes. The newest version of the Actions ...",
            "link": "https://chatbot.zampisoft.com",
            "id": "qf7kD",
            "categories": ["ols85"]
        },
        ...
    ]
}

Respuesta (Un solo artículo):

JSON


{
    "success": true,
    "response": {
        "id": "6P2Oq",
        "title": "What's new with the API V2?",
        "content": "The API V2 is the new iteration of our developer API. The new API integrates...",
        "link": "https://board.support",
        "categories": ["K92kl"]
    }
}

save-article

Guarda todos los artículos. Esta función elimina todos los artículos existentes y los reemplaza con los del array dado.

Argumentos

Respuesta

JSON


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

search-articles

Devuelve los artículos que coinciden con la búsqueda.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": [
         {
             "id": "118",
             "title": "Hello world!",
             "content": "Lorem ipsum dolor sit amet...",
             "editor_js": "",
             "link": "",
             "category": "basements",
             "parent_category": "video",
             "language": "",
             "parent_id": null,
             "slug": "images-and-photos",
             "update_time": "2024-06-04"
         },
         {
             "id": "127",
             "title": "How to develop an app",
             "content": "Resitor Lorem ipsum dolor sit amet...",
             "editor_js": "",
             "link": "",
             "category": "",
             "parent_category": "",
             "language": "",
             "parent_id": null,
             "slug": null,
             "update_time": "2024-05-24"
         },
         ...
    ]
}

get-articles-categories

Devuelve un array con todas las categorías de artículos.

Argumentos

Respuesta

{
    "success": true,
    "response": [
        {
            "title": "Audio",
            "description": "Lorem ipsum dolor sit amet. ",
            "image":"https://example.com/image.jpg",
            "id": "audio",
            "parent": true,
            "languages": {
                "es": {
                    "title": "Audio",
                    "description": "Es eorem ipsum dolor sit amet. "
                }
            }
        },
        {
            "title": "Video",
            "description": "Lorem ipsum dolor.",
            "image": "https://example.com/image.jpg",
            "id": "video",
            "languages": []
        },
        ...
    ]
}

save-articles-categories

Guarda o actualiza el array de categorías de artículos.

Argumentos

Respuesta

JSON


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

article-ratings

Obtiene las calificaciones de un artículo o añade una nueva calificación al mismo.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": "[-1, 1, 1, -1]"
}

Devuelve true si el argumento rating está establecido.


➕ WEB API: Más métodos

send-email

Envía un correo electrónico a un usuario existente utilizando las plantillas de correo de la sección Configuración > Notificaciones.

Argumentos

Respuesta

JSON


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

Otras posibles respuestas: missing-user-id-or-message, security-error, user-email-not-found, user-or-sender-not-found.


send-custom-email

Envía un correo electrónico genérico a una dirección de correo. El correo y nombre del remitente son los configurados en Configuración > Notificaciones > Configuración de correo electrónico.

Argumentos

Respuesta

JSON


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

email-piping

Ejecuta la sincronización de email piping con ZampiBot y convierte los correos electrónicos en mensajes de chat.

Argumentos

Respuesta

JSON


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

send-sms

Envía un mensaje de texto (SMS) a un usuario o agente. Si el argumento template es verdadero (true), el mensaje se traduce automáticamente.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "sid": "SM1f0e8ae6ade43cb3c0ce4525424e404f",
        "date_created": "Fri, 13 Aug 2010 01:16:24 +0000",
        "date_updated": "Fri, 13 Aug 2010 01:16:24 +0000",
        "date_sent": null,
        "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "to": "+15305431221",
        "from": "+15104564545",
        "body": "A Test Message",
        "status": "queued",
        "flags": [
            "outbound"
        ],
        "api_version": "2010-04-01",
        "price": null,
        "uri": "/2010-04-01/Accounts/ACXXXX/Messages/SM1f004f.json"
    }
}

push-notification

Envía una notificación Push a un agente, un grupo de agentes o a todos los agentes. Las notificaciones Push deben estar habilitadas en el área de configuración.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "id": "8b1c4e05-5e08-4926-86b0-a56ab7817e25",
        "external_id": null,
        "errors": {}
    }
}

Devuelve false si las notificaciones Push están deshabilitadas en el área de configuración.


get-versions

Devuelve las versiones instaladas de ZampiBot y las Apps.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "sb": "3.0.4",
        "dialogflow": "1.0.2",
        "slack": "1.0.3"
    }
}

cron-jobs


Ejecuta las tareas programadas (cron jobs).

Argumentos

Respuesta

JSON


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

pusher-trigger

Dispara un evento en un canal de Pusher.

Argumentos

Respuesta

JSON


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

chat-css

Devuelve el estilo CSS para los colores del chat.

Argumentos

Respuesta El código CSS.


text-formatting-to-html

Convierte el formato de texto de los mensajes de chat a los códigos HTML equivalentes y devuelve el mensaje.

Argumentos

Respuesta Lorem ipsum dolor <b>sit amet</b>, <i>consectetur adipiscing elit</i>, <code>sed</code> do eiusmod tempor incididunt.


clear-text-formatting

Elimina el formato de texto de los mensajes de chat.

Argumentos

Respuesta Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.


get-notes

Devuelve las notas internas de una conversación.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": [
        {
            "id": 98207,
            "user_id": "1538",
            "name": "Lorem ipsum dolor sit amet",
            "message": "Lorem ipsum dolor sit amet, consectetur elit, sed do eiusmod tempor incididunt."
        },
        {
            "id": 76986,
            "user_id": "1596",
            "name": "Lorem ipsum dolor",
            "message": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor."
        },
        ...
    ]
}

add-note

Añade una nueva nota a una conversación.

Argumentos

Respuesta

JSON


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

Devuelve el ID de la nota.


delete-note

Elimina una nota de una conversación.

Argumentos

Respuesta

JSON


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

automations-get

Devuelve todas las automatizaciones.

Argumentos

Respuesta

JSON


[
    {
        "emails": [
            {
                "id": "0BOaG",
                "conditions": [
                    [
                        "datetime",
                        "is-between",
                        "10/04/2021 - 13/04/2021"
                    ],
                    [
                        "include_urls",
                        "contains",
                        "https://example.com"
                    ],
                    ...
                ],
                "name": "Excepteur sint",
                "message": "Excepteur sint occaecat cupidatat non proident.",
                "subject": "Cupidatat non proident"
            },
            ...
        ],
        "sms": [
            {
                "id": "vo2sY",
                "conditions": [
                    [
                        "datetime",
                        "is-exactly",
                        "13/04/2021"
                    ]
                ],
                "name": "Excepteur sint",
                "message": "Excepteur sint occaecat cupidatat non caecat cupidatat non proident"
            },
            {
                "id": "hwkmQ",
                "name": "Excepteur sint occaecat cupidatat non proident",
                "message": "Excepteur sint occaecat cupidatat non  occaecat cupidatat non proident"
            },
            ...
        ],
        "messages": [],
        "popups": [
            {
                "id": "ckN24",
                "conditions": [
                    [
                        "user_type",
                        "is-user"
                    ],
                    [
                        "languages",
                        "en"
                    ]
                ],
                "name": "s",
                "message": "Excepteur sint occaecat cupidatat non prcaecat cupidatat non proident",
                "title": "Excepteur sint occaecat",
                "profile_image": "https://example.com/image.jpg"
            },
            ...
        ],
        "design": [
            {
                "id": "bX1qA",
                "conditions": [
                    [
                        "user_type",
                        "is-user"
                    ]
                ],
                "name": "Excepteur sint",
                "message": "Excepteur sint occaecat cupidatat caecat cupidatat non proident",
                "title": "",
                "color_1": "rgb(0, 235, 26)",
                "color_2": "rgb(255, 0, 0)",
                "color_3": "rgb(255, 0, 0)",
                "background": "https://example.com/image.jpg",
                "brand": "https://example.com/image.jpg",
                "icon": "https://example.com/image.jpg"
            },
            ...
        ]
    },
    {
        "fr": {
            "messages": [
                {
                    "id": "y6hNE",
                    "name": "XXXX",
                    "message": "XXXX"
                }
            ]
        },
        ...
    }
]

automations-save

Guarda todas las automatizaciones.

Argumentos

Respuesta

JSON


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

automations-validate

Valida una automatización.

Argumentos

Respuesta

JSON


{
      "conditions": [
          [
              "user_type",
              "is-user"
          ],
          ...
      ],
      "repeat_id": ""
  }

Devuelve solo las condiciones del lado del cliente y las condiciones del servidor inválidas que pueden validarse en un momento posterior. Si no se devuelven condiciones, la automatización es válida y puede ejecutarse. Devuelve false si la automatización es inválida.


automations-run-all

Valida todas las automatizaciones, ejecuta las válidas y devuelve las automatizaciones con condiciones del lado del cliente, condiciones del servidor inválidas y automatizaciones de popup y diseño.

Argumentos

Respuesta

JSON


[
    {
        "id": "0BOaG",
        "conditions": [
            [
                "datetime",
                "is-between",
                "10/04/2021 - 13/04/2021"
            ],
            [
                "include_urls",
                "contains",
                "https://example.com"
            ],
            ...
        ],
        "name": "Excepteur sint",
        "message": "Excepteur sint occaecat cupidatat non proident.",
        "subject": "Cupidatat non proident",
        "type": "emails"
    },
    {
        "id": "bX1qA",
        "conditions": [
            [
                "user_type",
                "is-user"
            ]
        ],
        "name": "Excepteur sint",
        "message": "Excepteur sint occaecat cupidatat caecat cupidatat non proident",
        "title": "",
        "color_1": "rgb(0, 235, 26)",
        "color_2": "rgb(255, 0, 0)",
        "color_3": "rgb(255, 0, 0)",
        "background": "https://example.com/image.jpg",
        "brand": "https://example.com/image.jpg",
        "icon": "https://example.com/image.jpg",
        "type": "design"
    },
    ...
]

automations-run

Ejecuta una sola automatización y opcionalmente la valida antes de ejecutarla.

Argumentos

Respuesta

JSON


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

automations-is-sent

Verifica si una automatización ya ha sido enviada a un usuario.

Argumentos

Respuesta Devuelve true si la automatización ya ha sido enviada; de lo contrario, devuelve false.


clean-data

Esta función realiza las siguientes tareas: Elimina visitantes con una antigüedad mayor a 24h, elimina mensajes en la papelera con una antigüedad mayor a 30 días, y archiva mensajes donde la última respuesta fue de un agente y tienen una antigüedad mayor a 24h.

Requisitos Esta es una función de administración y solo funciona si el usuario activo es un agente o un administrador.

Parámetros

Respuesta

JSON


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

reports

Devuelve los reportes especificados.

Parámetros

Respuesta

JSON


{
   "title": "New conversations",
   "description": "Count of new conversations started by users.",
   "data": {
       "03/2021": [
           2
       ],
       "04/2021": [
           0
       ],
       "05/2021": [
           0
       ],
       ...
   },
   "table": [
       "Date",
       "Count"
   ],
   "table_inverse": true,
   "label_type": 1,
   "chart_type": "line"
}

reports-update

Añade una nueva fila a la tabla sb_reports de la base de datos.

Parámetros

Respuesta

JSON


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

updates-available

Comprueba si hay actualizaciones disponibles para ZampiBot y las aplicaciones de ZampiBot.

Parámetros

Respuesta

JSON


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

Devuelve true si hay al menos una actualización disponible; de lo contrario, devuelve false.


newsletter

Añade un suscriptor al servicio de boletín configurado en Configuración > Misceláneas > Newsletter. El ajuste Configuración > Misceláneas > Newsletter > Activo debe estar habilitado.

Argumentos

Respuesta Devuelve la respuesta del servicio de newsletter.


upload-path

Devuelve la ruta de subidas (uploads) de ZampiBot.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": "\var\www\htdocs\chatbot.zampisoft.com\uploads\10-03-23"
}

o

JSON


{
    "success": true,
    "response": "https://www.example.com/chatbot.zampisoft.com/uploads/10-03-23"
}

is-allowed-extension

Comprueba si está permitido subir archivos con la extensión especificada.

Argumentos

Respuesta

JSON


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

Devuelve true si la extensión está permitida; de lo contrario, devuelve false.


system-requirements

Comprueba si la máquina host cumple con los requisitos del sistema de ZampiBot.

Argumentos

Respuesta

JSON


{
  "success": true,
  "response": {
      "php-version": true,
      "zip-archive": true,
      "plugin-folder": true,
      "uploads-folder": true,
      "apps-folder": true,
      "languages-folder": true,
      "ajax": true,
      "curl": true,
      "UTF8mb4": true
  }
}

logs

Añade un mensaje de registro al archivo de log.

Argumentos

Respuesta

JSON


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

aws-s3

Sube un archivo a Amazon S3, o elimina un archivo de Amazon S3. Amazon S3 debe estar activo y configurado en Configuración > Misceláneas > Amazon S3.

Argumentos

Respuesta

JSON


{
  "success": true,
  "response": "https://example.s3.amazonaws.com/example.txt"
}

Devuelve la URL del archivo de Amazon S3.


🧠 WEB API: Inteligencia Artificial

La aplicación de Inteligencia Artificial es necesaria para utilizar este conjunto de APIs.

dialogflow-message

Envía un mensaje a Dialogflow y devuelve la respuesta.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "token": "ya29.a0AfH6SE4SVIeOPWSfxRVfHNcJIoR-IvRTtrEe4P9VXHa",
        "messages": [
            {
                "message": "Hi! How are you doing?",
                "attachments": []
            }
        ],
        "response": {
            "responseId": "1a5e30d0-d6d4-4f0c-83e3-2fb9e31c2a5e-e15c53b8",
            "queryResult": {
                "queryText": "Hello",
                "action": "input.welcome",
                "parameters": [],
                "allRequiredParamsPresent": true,
                "fulfillmentText": "Hi! How are you doing?",
                "fulfillmentMessages": [
                    {
                        "platform": "ACTIONS_ON_GOOGLE",
                        "simpleResponses": {"simpleResponses": [ { "textToSpeech": "Example"} ]}
                    },
                    {
                        "text": { "text": [ "Hi! How are you doing?" ]  }
                    }
                ],
                "intent": {
                    "name": "projects/api-project-657752147/agent/intents/fe27e-f39d-4db3-92c2",
                    "displayName": "Default Welcome Intent"
                },
                "intentDetectionConfidence": 1,
                "languageCode": "en"
            },
            "alternativeQueryResults": [
                {
                    "queryText": "Hello",
                    "languageCode": "en"
                }
            ]
        }
    }
}

Otras posibles respuestas: dialogflow-not-active, mensaje de error de MySQL o cURL.


dialogflow-get-intents

Devuelve la Intención (Intent) de Dialogflow especificada o todas las Intenciones.

Argumentos

Respuesta

JSON


[
  {
    "name": "projects/example/agent/intents/1655ee2c-8116-45f1-95fu-93700ff32e8d",
    "displayName": "Default Welcome Intent",
    "priority": 500000,
    "mlEnabled": true,
    "events": [ "WELCOME" ],
    "trainingPhrases": [
      {
        "name": "43ca0e72-6055-4b88-af13-b0d241",
        "type": "EXAMPLE",
        "parts": [
          {
            "text": "just going to say hi"
          }
        ]
      },
      {
        "name": "5159aabc-8524-404f-b679-f2228db1",
        "type": "EXAMPLE",
        "parts": [
          {
            "text": "Hello"
          }
        ]
      },
      ...
    ],
    "action": "input.welcome",
    "messages": [
      {
        "text": {
          "text": [ "Hi! How are you doing?", "Hello! How can I help you?" ]
        }
      }
    ]
  },
  ...
]

dialogflow-create-intent

Crea una nueva Intención (Intent) en Dialogflow. La nueva Intención se vinculará al agente sincronizado en el área de administración.

Argumentos

Respuesta

JSON


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

dialogflow-update-intent

Actualiza una Intención (Intent) de Dialogflow.

Argumentos

Respuesta

JSON


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

dialogflow-entity

Crea una nueva Entidad en Dialogflow. La nueva Entidad se vinculará al agente sincronizado en el área de administración.

Argumentos

Respuesta

JSON


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

dialogflow-get-entity

Devuelve una Entidad de Dialogflow, o todas las Entidades del agente.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
      "name":"projects/small-talk-43da7/agent/entityTypes/t5td1425-2k13-16cc-a7bb-f119b8d94112a",
      "displayName":"woocommerce-products",
      "kind":"KIND_MAP",
      "autoExpansionMode":"AUTO_EXPANSION_MODE_DEFAULT",
      "entities":[
         {
            "value":"Abstract Print Cotton Blouse",
            "synonyms":[
               "Abstract Print Cotton Blouse"
            ]
         },
         {
            "value":"Cashmere Carpenter Beanie",
            "synonyms":[
               "Cashmere Carpenter Beanie"
            ]
         },
         ...
      ],
      "enableFuzzyExtraction":true
    }
}

google-get-token

Genera un nuevo Token de Dialogflow y lo devuelve. El token es válido por 1 hora.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": "ya27.a1AfH6SMDu9dn0TfRbNVAIEsSoeJPD1_jr1JpfL15..."
}

dialogflow-get-agent

Devuelve los detalles del agente de Dialogflow.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "parent":"projects/woocommerce-abcde",
        "displayName": "ABCDE",
        "defaultLanguageCode": "en",
        "timeZone": "Europe/Madrid",
        "enableLogging": true,
        "matchMode": "MATCH_MODE_HYBRID" ,
        "classificationThreshold": 0.6,
        "apiVersion": "API_VERSION_V2",
        "tier": "TIER_STANDARD"
    }
}

dialogflow-set-active-context

Activa un contexto de Dialogflow en la sesión del usuario activo.

Argumentos

Respuesta

JSON


{
   "success":true,
   "response": {
      "responseId":"09f2f825-3dbf-4c27-a5bb-6bd0b71e44b9-1d846bd2",
      "queryResult":{
         "queryText":"sb-trigger-context",
         "outputContexts":[
            {
               "name":"projects/abcde/agent/sessions/208/contexts/abcde",
               "lifespanCount":4,
               ...
            }
         ],
         "languageCode":"en"
      }
   }
}

dialogflow-curl

Envía datos a Dialogflow. Utilice este método para enviar consultas a Dialogflow.

Argumentos

Respuesta

JSON


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

Devuelve la respuesta de Dialogflow.


dialogflow-human-takeover

Dispara la toma de control humana (human takeover) de Dialogflow.

Argumentos

Respuesta

JSON


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

dialogflow-smart-reply

Devuelve las sugerencias de respuesta inteligente (Smart Reply).

Argumentos

Respuesta

JSON


{
   "suggestions": [
	   "I would be happy to help!",
	   "What can I do for you?",
       ...
	],
	"token": "ya29.a0AVvZVsrU7gAannWzuztBR-AphpjdWr0JrPoq9au0Ai",
	"detected_language": false,
	"smart_reply": false
}

open-ai-message

Envía un mensaje a OpenAI y devuelve la respuesta, opcionalmente añade la respuesta a una conversación existente como un nuevo mensaje.

Argumentos

Respuesta

JSON


{
     "success": true,
     "response": [
         true,
         "I am an AI digital assistant. How can I help you today?",
         false,
         false
     ]
}

Devuelve un array con el primer valor establecido en true si es exitoso, false en caso de error. El segundo valor es el mensaje de OpenAI si es exitoso, o el mensaje de error si falla.


open-ai-curl

Llama a la API de OpenAI (ChatGPT) y devuelve la respuesta.

Argumentos

Respuesta

JSON


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

Devuelve la respuesta de OpenAI.


google-translate

Traduce múltiples cadenas a través de Google Translate.

Parámetros

Respuesta

JSON


{
    "success": true,
    "response": [ "Ciao mondo", "Come stai?", ...]
}

google-language-detection-update-user

Detecta el idioma de un texto y lo asigna a un usuario.

Parámetros

Respuesta

JSON

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

📱 WEB API: WhatsApp

La aplicación de WhatsApp es necesaria para utilizar este conjunto de APIs.

whatsapp-send-message

Envía un mensaje a un número de WhatsApp.

Argumentos

Respuesta

JSON


{
     "success": true,
     "response": {
         "messaging_product": "whatsapp",
         "contacts": [
             {
                 "input": "+16315551234",
                 "wa_id": "+16315551234"
             }
         ],
         "messages": [
             {
                 "id": "wamid.HBgLMTY1MDM4Nzk0MzkVAgARGBI3N0EyQUJDMjFEQzZCQUMzODMA"
             }
         ]
     }
 }

whatsapp-send-template

Envía una plantilla de WhatsApp a un número de WhatsApp.

Argumentos

Respuesta

JSON


{
     "success": true,
     "response": {
         "messaging_product": "whatsapp",
         "contacts": [ ... ],
         "messages": [
             {
                 "id": "wamid.HBgLMTY1MDM4Nzk0MzkVAgARGBI3N0EyQUJDMjFEQzZCQUMzODMA"
             }
         ]
     }
 }

💬 WEB API: Messenger

La aplicación de Messenger es necesaria para utilizar este conjunto de APIs.

messenger-send-message

Envía un mensaje a Messenger o Instagram.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "recipient_id": "89995542233",
        "message_id": "11445777889"
    }
}

✈️ WEB API: Telegram

La aplicación de Telegram es necesaria para utilizar este conjunto de APIs.

telegram-send-message

Envía un mensaje a Telegram.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "ok": true,
        "result": {
            "message_id": 2030,
            "from": {
                "id": 21202173,
                "is_bot": true,
                "first_name": "joe",
                "username": "sb_officialbot"
            },
            "chat": {
                "id": 148766722,
                "first_name": "Fede",
                "last_name": "Schio",
                "username": "fedechioc",
                "type": "private"
            },
            "date": 1699621061,
            "text": "Hello!"
        }
    }
}

🟣 WEB API: Viber

La aplicación de Viber es necesaria para utilizar este conjunto de APIs.

viber-send-message

Envía un mensaje a Viber.

Argumentos

Respuesta

JSON


{
   "status":0,
   "status_message":"ok",
   "message_token":5741311803571721087,
   "chat_hostname":"SN-CHAT-05_",
   "billing_status":1
}

🟢 WEB API: LINE

La aplicación de LINE es necesaria para utilizar este conjunto de APIs.

line-send-message

Envía un mensaje a LINE.

Argumentos

Respuesta

JSON


{
    "sentMessages": [
        {
            "id": "481156985669026149",
            "quoteToken": "fKOxH1EKOAKYFLW6fe8vFGoKl2I2UZocU6KcoZgwtVrSTQjLbXFVer3Z-..."
        }
    ]
}

🟢 WEB API: WeChat

La aplicación de WeChat es necesaria para utilizar este conjunto de APIs.

wechat-send-message

Envía un mensaje a WeChat.

Argumentos

Respuesta

JSON


[
   "{...}",
   "5741311803571721087"
]

El primer elemento del array es la respuesta, el segundo elemento es el token.


💬 WEB API: Slack

La aplicación de Slack es necesaria para utilizar este conjunto de APIs.

send-slack-message

Envía un mensaje a Slack.

Argumentos

Respuesta

JSON


{"success":true,"response":["C011JFFGSKY"]}

Otras posibles respuestas: slack-not-active, mensaje de error de MySQL o cURL.

archive-slack-channels

Archiva todos los canales de Slack. Si tiene muchos canales, esta operación puede tardar mucho tiempo en completarse y podría necesitar ejecutarla varias veces. Importante: Todos sus canales de Slack serán archivados.

Argumentos

Respuesta

JSON


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

slack-users

Devuelve la información de conexión de los miembros agentes-slack.

Argumentos

Respuesta

JSON


{
    "success": true,
    "response": {
        "slack_users": [
            {
                "id": "U328T701Z",
                "name": "Support Schio"
            },
            {
                "id": "UR5F0GK7T",
                "name": "Robert Pitt"
            }
            ...
        ],
        "agents": [
            {
                "id": "2",
                "name": "Alex Smith"
            },
            {
                "id": "445",
                "name": "Federico Schiocchet"
            },
            {
                "id": "724",
                "name": "Alberto Prade"
            }
            ...
        ],
        "saved": {
            "U328T701Z": "445",
            "UR5F0GK7T": "2"
            ...
        }
    }
}

slack-presence

Comprueba si un agente de Slack está en línea, si al menos un agente está en línea, o devuelve todos los usuarios en línea.

Argumentos

Respuesta

JSON


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

Devuelve online u offline para la verificación de un solo agente. Devuelve un array de IDs de usuarios para la verificación de múltiples usuarios.


slack-channels

Devuelve la lista de todos los canales de Slack, incluyendo los canales archivados.

Argumentos

Respuesta

JSON


{
    "ok": true,
    "channels": [
        {
            "id": "C012AB3CD",
            "name": "general",
            "is_channel": true,
            "is_group": false,
            "is_im": false,
            "created": 1449252889,
            "creator": "U012A3CDE",
            "is_archived": false,
            "is_general": true,
            "unlinked": 0,
            "name_normalized": "general",
            "is_shared": false,
            "is_ext_shared": false,
            "is_org_shared": false,
            "pending_shared": [],
            "is_pending_ext_shared": false,
            "is_member": true,
            "is_private": false,
            "is_mpim": false,
            "updated": 1678229664302,
            "topic": {
                "value": "Company-wide announcements and work-based matters",
                "creator": "",
                "last_set": 0
            },
            "purpose": {
                "value": "This channel is for team-wide communication and announcements. All team members are in this channel.",
                "creator": "",
                "last_set": 0
            },
            "previous_names": [],
            "num_members": 4
        },
        {
            "id": "C061EG9T2",
            "name": "random",
            "is_channel": true,
            "is_group": false,
            "is_im": false,
            "created": 1449252889,
            "creator": "U061F7AUR",
            "is_archived": false,
            "is_general": false,
            "unlinked": 0,
            "name_normalized": "random",
            "is_shared": false,
            "is_ext_shared": false,
            "is_org_shared": false,
            "pending_shared": [],
            "is_pending_ext_shared": false,
            "is_member": true,
            "is_private": false,
            "is_mpim": false,
            "updated": 1678229664302,
            "topic": {
                "value": "Non-work banter and water cooler conversation",
                "creator": "",
                "last_set": 0
            },
            "purpose": {
                "value": "A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you'd prefer to keep out of more focused work-related channels.",
                "creator": "",
                "last_set": 0
            },
            "previous_names": [],
            "num_members": 4
        }
    ],
    "response_metadata": {
        "next_cursor": "dGVhbTpDMDYxRkE1UEI="
    }
}

slack-message-sent

Webhook enviado cuando se envía un mensaje a Slack.

Respuesta

JSON

{
    "function": "slack-message-sent",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "message": "Hi! How are you doing?",
        "conversation_id": "1057",
        "slack_channel": "C028BGU6TTT"
    }
}



🪝 WEB API: Webhooks

Los Webhooks son mensajes automatizados enviados desde ZampiBot a una URL cuando ocurre algo. Contienen datos personalizados y se envían a una URL única definida por usted.

Uso

  1. Inicie sesión en el área de administración y vaya a Configuración > Misceláneas > Webhooks.
  2. URL de destino: Ingrese la URL a donde ZampiBot enviará los datos. Esta URL debe apuntar a un archivo PHP que pueda leer los datos recibidos. Puede usar el siguiente código para capturar los datos: $response = json_decode(file_get_contents('php://input'), true); La variable $response será un array.
  3. Clave secreta (Secret key): Ingrese una contraseña secreta de su elección. Esta clave se incluye en todos los Webhooks; utilícela para validar el Webhook y asegurarse de que fue enviado por ZampiBot y no por un tercero.
  4. Active los Webhooks y guarde. ZampiBot comenzará a enviar los Webhooks de la lista a continuación a su URL.

Notas:

¿Falta algún Webhook? ¿Necesita un Webhook que aún no está disponible? ¡Contáctenos y lo agregaremos!


message-sent

Webhook enviado cuando un usuario o un agente envía un nuevo mensaje.

Respuesta

{
    "function": "message-sent",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "user_id": "947",
        "conversation_user_id": "947",
        "conversation_id": "1057",
        "conversation_status_code": "2",
        "conversation_source": "wa",
        "message_id": "2574",
        "message": "Hello! How are you?",
        "attachments": [["name","https://example.com/image.png"],["name","https://example.com/file.txt"]]
    }
}

email-sent

Webhook enviado cuando se envía un correo electrónico de notificación a un usuario o a un agente.

Respuesta

{
    "function": "email-sent",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "recipient_id": "957",
        "message": "Hello! How can I help you?",
        "attachments": [["name","https://example.com/image.png"],["name","https://example.com/file.txt"]]
     }
}

sms-sent

Webhook enviado cuando un usuario o un agente envía un nuevo mensaje de texto (SMS).

Respuesta

{
    "function": "sms-sent",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "recipent_id": "947",
        "message": "Hello! How are you?",
        "Body": "Hello! How are you?",
        "From": "+15104564545",
        "To": "+15305431221",
        "response": {
            "sid": "SM1f0e8ae6ade43cb3c0ce4525424e404f",
            "date_created": "Fri, 13 Aug 2010 01:16:24 +0000",
            "date_updated": "Fri, 13 Aug 2010 01:16:24 +0000",
            "date_sent": null,
            "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            "to": "+15305431221",
            "from": "+15104564545",
            "body": "A Test Message",
            "status": "queued",
            "flags":["outbound"],
            "api_version": "2010-04-01",
            "price": null,
            "uri": "/2010-04-01/Accounts/ACXXXX/Messages/SM1f004f.json"
        }
    }
}

new-messages

Webhook enviado cuando se reciben nuevos mensajes en el widget de chat o en el área de administración. Si desea recibir mensajes enviados por usuarios desde plataformas externas como WhatsApp o Instagram, utilice message-sent en su lugar.

Respuesta

{
    "function": "new-messages",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "details": {
            "message": "Hello world!",
            "message_id": "10231",
            "attachments": "",
            "payload": "",
            "message_status_code": "0",
            "last_update_time": "2024-04-02 16:57:19",
            "message_user_id": "1964",
            "message_first_name": "Don",
            "message_last_name": "John",
            "message_profile_image": "https://example.com/image.jpg",
            "message_user_type": "admin",
            "department": null,
            "agent_id": null,
            "title": "",
            "source": null,
            "extra": null,
            "tags": null,
            "id": "4607",
            "user_id": "4747",
            "creation_time": "2024-04-02 16:57:17",
            "status_code": "1"
        },
        "messages": [
            {
                "details": {
                    "message": "Hello world!",
                    "attachments": "",
                    "payload": {},
                    "status_code": "0",
                    "id": "10231",
                    "profile_image": "https://example.com/image.jpg",
                    "first_name": "Don",
                    "last_name": "John",
                    "user_id": "1964",
                    "user_type": "admin",
                    "full_name": "Don John",
                    "creation_time": "2024-04-02 16:57:19"
                }
            }
        ]
    }
}

dialogflow-message

Webhook enviado cuando Dialogflow envía una respuesta a un mensaje de usuario.

Respuesta

{
    "function": "dialogflow-message",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "response": {
            "token": "ya29.a0Afkjh8MADFYeT4BgCy3917xqSDdVvw4mgVHrgrLDcgRk9ajWoQAgdjv5e...",
            "messages": [
                {
                    "message": "Hi! How are you doing?"
                }
            ],
            "response": {
                "responseId": "46d2c208-2a7f-4ca2-bd7d-6636982b8bee-0f0e27e1",
                "queryResult": {
                    "queryText": "hi",
                    "action": "input.welcome",
                    "allRequiredParamsPresent": "true",
                    "fulfillmentText": "Hi! How are you doing?",
                    "fulfillmentMessages": [ ... ],
                    "outputContexts": [ ... ],
                    "intent": {
                        "name": "projects/api-project-655517752147/agent/intents...",
                        "displayName": "Default Welcome Intent"
                    },
                    "intentDetectionConfidence": "1",
                    "languageCode": "en"
                },
                "alternativeQueryResults": [ ... ]
            }
        },
        "message": "Hello",
        "conversation_id": 123456
    }
}

message-deleted

Webhook enviado cuando se elimina un mensaje.

Respuesta

{
    "function": "message-deleted",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": "2595"
}

La clave data contiene el ID del mensaje eliminado.


rich-message

Webhook enviado cuando el usuario presiona el botón de envío y los valores ingresados en el Mensaje Enriquecido (Rich Message) se envían a ZampiBot. Todos los Mensajes Enriquecidos que requieren el envío de datos activan este Webhook; algunos de ellos son el formulario de correo electrónico de seguimiento, el formulario de registro y los botones.

Respuesta

{
    "function": "rich-message",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "result": true,
        "data": {
            "type": "inputs",
            "result": {
                "name": [
                    "Don Jhon",
                    "Name"
                ],
                "your-email": [
                    "example@gmail.com",
                    "Your Email"
                ],
                "site-url": [
                    "www.example.com",
                    "Site URL"
                ]
            }
        },
        "id": "example"
    }
}

new-conversation

Webhook enviado cuando se recibe una nueva conversación en el widget de chat del usuario.

Respuesta

{
    "function": "new-conversation-received",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "messages": [
            {
                "id": "10222",
                "user_id": "4746",
                "message": "Hi there!",
                "creation_time": "2024-04-02 07:26:18",
                "attachments": "",
                "status_code": "0",
                "payload": "",
                "conversation_id": "4605",
                "first_name": "User",
                "last_name": "#19332",
                "profile_image": "https://example.com/image.png",
                "user_type": "lead"
            },
            {
                "id": "10223",
                "user_id": "377",
                "message": "How are you?",
                "creation_time": "2024-04-02 07:26:22",
                "attachments": "",
                "status_code": "2",
                "payload": "{\"follow_up_message\":true,\"preview\":\"Preview text!\"]\"}",
                "conversation_id": "4605",
                "first_name": "Smart Assistant",
                "last_name": "",
                "profile_image": "https://example.com/image.png",
                "user_type": "bot"
            }
        ],
        "details": {
            "user_id": "4746",
            "first_name": "User",
            "last_name": "#19332",
            "profile_image": "https://example.com/image.png",
            "user_type": "lead",
            "id": "4605",
            "title": "",
            "status_code": "0",
            "creation_time": "2024-04-02 07:26:17",
            "department": null,
            "agent_id": null,
            "source": null,
            "extra": null,
            "extra_2": null,
            "extra_3": null,
            "tags": null,
            "busy": false
        }
    }
}

new-conversation-created

Webhook enviado cuando se crea una nueva conversación.

Respuesta

{
    "function": "new-conversation-created",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "messages": [
            {
                "id": "10222",
                "user_id": "4746",
                "message": "Hi there!",
                "creation_time": "2024-04-02 07:26:18",
                "attachments": "",
                "status_code": "0",
                "payload": "",
                "conversation_id": "4605",
                "first_name": "User",
                "last_name": "#19332",
                "profile_image": "https://example.com/image.png",
                "user_type": "lead"
            },
            {
                "id": "10223",
                "user_id": "377",
                "message": "How are you?",
                "creation_time": "2024-04-02 07:26:22",
                "attachments": "",
                "status_code": "2",
                "payload": "{\"follow_up_message\":true,\"preview\":\"Preview text!\"]\"}",
                "conversation_id": "4605",
                "first_name": "Smart Assistant",
                "last_name": "",
                "profile_image": "https://example.com/image.png",
                "user_type": "bot"
            }
        ],
        "details": {
            "user_id": "4746",
            "first_name": "User",
            "last_name": "#19332",
            "profile_image": "https://example.com/image.png",
            "user_type": "lead",
            "id": "4605",
            "title": "",
            "status_code": "0",
            "creation_time": "2024-04-02 07:26:17",
            "department": null,
            "agent_id": null,
            "source": null,
            "extra": null,
            "extra_2": null,
            "extra_3": null,
            "tags": null,
            "busy": false
        }
    }
}

conversation-status-updated

Webhook enviado cuando cambia el código de estado de una conversación.

Respuesta

{
    "function": "conversation-status-updated",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "conversation_id": "1057",
        "status_code": "0"
    }
}

Códigos de estado: activo = 0, esperando respuesta del usuario = 1, esperando respuesta del agente = 2, archivado = 3, papelera = 4.


login

Webhook enviado cuando un usuario inicia sesión correctamente desde el formulario de inicio de sesión del chat. Este Webhook se envía solo si el inicio de sesión es exitoso.

Respuesta

{
    "function": "login",
    "key": "xxxxxxxx",
    "data": {
        "details": {
            "id": "18",
            "profile_image": "https://schiocco.s3.amazonaws.com/3045506.png",
            "first_name": "Fede",
            "last_name": "",
            "email": "fede@fede.com",
            "user_type": "user",
            "token": "ec83c134e5d53be98abd0025145473eec0ff814e",
            "url": "https://sandbox.cloud.board.support\/script",
            "password": "$2y$10$vYtwWDEqOt7jMSBcCmPigOrqw06tdD8ZSFm70L6c1PLEQ8j938l2W",
            "conversation_id": "false"
        }
    },
    "sender-url": "http:\/\/localhost\/"
}

registration

Webhook enviado cuando un usuario se registra correctamente desde el formulario de registro del chat. Este Webhook se envía solo si el registro es exitoso. También se envía si el registro se actualiza a través del formulario de registro de un Mensaje Enriquecido.

Respuesta

{
    "function": "registration",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "id": "example",
        "conversation_id": "123", 
        "user": {
            "profile_image": [
                "https://board.support/user.svg",
                "Profile image"
            ],
            "first_name": [
                "Don",
                "First name"
            ],
            "last_name": [
                "John",
                "Last name"
            ],
            "email": [
                "example@email.com",
                "Email"
            ],
            "password": [
                "12345678",
                "Password"
            ],
            "password-check": [
                "12345678",
                "Repeat password"
            ],
            "user_type": [
                "user",
                ""
            ]
        },
        "extra": {
            "phone": [
                "+02123456789",
                "Phone"
            ],
            "city": [
                "London",
                "City"
            ]
        }
    }
}

user-deleted

Webhook enviado cuando se elimina un usuario.

Respuesta

{
    "function": "user-deleted",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": "951"
}

La clave data contiene el ID del usuario eliminado.


new-email-address

Webhook enviado cuando un usuario registra su correo electrónico a través de un mensaje de seguimiento, mensaje de suscripción o mensaje enriquecido de correo electrónico.

Respuesta

{
    "function": "new-email-address",
    "key": "xxxxxxxx",
    "sender-url": "https://example.com",
    "data": {
        "name": "John Doe",
        "email": "email@example.com"
    }
}

JAVASCRIPT API

La API de JavaScript proporciona una colección de funciones y eventos que sustentan la mayor parte de la funcionalidad de ZampiBot. Para comenzar a usar la API de JavaScript, siga el tutorial a continuación.


⚙️ Configuración y Uso

Asegúrese de cargar el chat incluyendo el siguiente script en la página donde desea utilizar las APIs e inclúyalo antes del script del chat. Asegúrese de que los enlaces sean correctos. Si está utilizando la versión de WordPress, este paso no es necesario.

Si está utilizando la versión Cloud, incluya solo jQuery y el código de inserción (embed) desde su panel de control. Vea el ejemplo a continuación (reemplace 12345678 con su propio ID).

HTML


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

Ingrese los fragmentos de código, funciones y métodos de esta documentación dentro de una de las funciones a continuación:

JavaScript

(function ($) {
    $(document).on("SBInit", function () {
        // Su código aquí
    });
}(jQuery));

Si el evento SBInit no se dispara, utilice el evento SBReady en su lugar.


Parámetros de Función

Ingrese los parámetros de la función en el mismo orden de esta documentación, por ejemplo: SBChat.sendMessage(user_id, message, attachments).


Depuración (Debug)

Verifique la consola del navegador para ver errores e información de depuración.


📦 Objetos

Los objetos de JavaScript utilizados por ZampiBot se enumeran a continuación. En algunos casos, necesitará usar estos objetos para utilizar una función.

👤 SBUser

Representa a un usuario.

Uso: new SBUser(settings, extra)

Métodos:

Variables:


✉️ SBMessage

Representa un mensaje de una conversación.

Uso: new SBMessage(details)

Métodos:

Variables:


💬 SBConversation

Representa una conversación.

Uso: new SBConversation(messages, details)

Métodos:

Variables:


🔣 Variables Globales

Las variables en la lista a continuación son accesibles públicamente vía JavaScript.

Variable

Descripción

SB_ARTICLES_PAGE

Establézcalo en true para mostrar la página de artículos en lugar del chat.

SB_LOCAL_SETTINGS

Sobrescribe las configuraciones predeterminadas del lado del cliente. El valor es un array de claves y valores (ej. { registration-required: false }). Solo afecta configuraciones del cliente.

SB_DISABLED

Establézcalo en true e insértelo en una página para prevenir que el chat o el área de tickets carguen.

SB_REGISTRATION_REQUIRED

true para deshabilitar el registro obligatorio, false para deshabilitar el registro.

SB_TICKETS

Establézcalo en true para forzar la carga del área de tickets en lugar del chat. Requiere la App de Tickets.

SB_DEFAULT_USER

Establece los detalles del usuario por defecto para nuevos visitantes. Si un usuario registrado visita y su login difiere, se cierra sesión e inicia con los nuevos detalles. Incluya email y hash de contraseña para asegurar el funcionamiento.

SB_DEFAULT_DEPARTMENT

Asigne un ID de departamento para asignar automáticamente ese departamento a nuevas conversaciones creadas desde la página.

SB_DEFAULT_AGENT

Asigne un ID de agente para asignar automáticamente ese agente a nuevas conversaciones. Úselo con la opción "Ocultar conversaciones de otros agentes".

SBChat.initialized

true si el chat está inicializado.

SBChat.conversation

Devuelve la conversación activa. false si no hay ninguna.

SBChat.is_busy

true si el chat está en modo ocupado (no se pueden enviar mensajes).

SBChat.chat_open

true si el chat está abierto.

SBChat.agent_id

ID del agente activo en la conversación. -1 si no hay.

SBChat.agent_online

true si el agente activo está en línea.

SBChat.user_online

true si el usuario está en línea.

SBChat.timetable

true si la hora actual está dentro del horario de oficina.

SBChat.dashboard

true si el panel de control está activo y visible.


⚡ Funciones

Funciones para gestionar el chat, usuarios, conversaciones y mensajes.

SBChat.submit()

Ejecuta el evento de clic del botón de envío del editor de chat, envía un mensaje con el contenido insertado por el usuario (mensaje y/o adjuntos) y limpia el editor.


SBChat.sendMessage()

Añade un nuevo mensaje a la conversación activa.

Parámetros

Información


SBChat.updateMessage()

Cambia el texto de un mensaje existente.

Parámetros

Información


SBChat.sendEmail()

Envía un correo electrónico a los usuarios o agentes devueltos por getRecipientUserID().

Parámetros


SBChat.sendSMS()

Envía un mensaje de texto (SMS) a los usuarios o agentes devueltos por getRecipientUserID().

Parámetros


SBChat.desktopNotification()

Envía una notificación de escritorio (Notificación Web) al usuario, o al agente conectado si la notificación se envía desde el área de administración.

Parámetros


SBChat.getRecipientUserID()

Determina el destinatario adecuado basándose en el contexto.


SBChat.initChat()

Inicializa el chat y muestra el botón de chat.

Información


SBChat.open()

Abre o cierra la ventana del chat. También puede añadir la clase o ID sb-open-chat a cualquier elemento (por ejemplo, un botón) para abrir o cerrar el chat cuando se haga clic en él.

Parámetros


SBChat.openConversation()

Abre una conversación y la muestra en la ventana de chat.

Parámetros


SBChat.update()

Actualiza la conversación activa y comprueba si hay nuevos mensajes. Esta función se dispara automáticamente cada 1000ms.

Información


SBChat.populateConversations()

Puebla la lista de conversaciones del usuario en el panel (dashboard) con todas las conversaciones del usuario.

Parámetros

Información


SBChat.updateConversations()

Actualiza la lista de conversaciones del usuario en el panel y comprueba si hay nuevas conversaciones. Esta función se dispara automáticamente cada 10000ms.

Información


SBChat.newConversation()

Crea una nueva conversación y opcionalmente añade el primer mensaje a ella.

Parámetros

Información


SBChat.setConversation()

Establece una conversación existente como la conversación activa.

Parámetros

Información


SBChat.startRealTime()

Inicia la comprobación en tiempo real de nuevos mensajes para la conversación activa cada 1000ms.


SBChat.stopRealTime()

Detiene la comprobación en tiempo real de nuevos mensajes.


SBChat.busy()

Muestra u oculta el icono de carga y habilita o deshabilita el modo ocupado del chat. Cuando el chat está en modo ocupado, no se pueden enviar mensajes ni adjuntos.

Parámetros

Información


SBChat.lastAgent()

Devuelve el último agente de la conversación activa.

Parámetros

Respuesta

JSON


{
    "user_id": "123456",
    "full_name": "Don John",
    "profile_image": "https://zampisoft.com/agent.svg"
}

SBChat.scrollBottom()

Desplaza el chat hacia el final (abajo).

Parámetros


SBChat.isBottom()

Comprueba si el chat está desplazado hasta el final.


SBChat.showDashboard()

Muestra el panel de control (dashboard).


SBChat.hideDashboard()

Oculta el panel de control.


SBChat.showPanel()

Muestra el área especificada dentro del widget de chat.

Parámetros


SBChat.hidePanel()

Oculta el panel activo dentro del widget de chat.


SBChat.clear()

Limpia el área de conversación del widget de chat y deshabilita la conversación activa.


SBChat.updateNotifications()

Actualiza el contador rojo de notificaciones del botón de chat que alerta al usuario de nuevos mensajes y conversaciones.

Parámetros


SBChat.setConversationStatus()

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

Parámetros

Información


SBChat.typing()

Gestiona la etiqueta "escribiendo..." del encabezado del chat.

Parámetros

Información

SBChat.showArticles()

Muestra el área de artículos o un solo artículo.

Parámetros

SBChat.getArticles()

Devuelve la lista de artículos o el contenido de un solo artículo.

Parámetros

Respuesta

JSON

[
    {
        "id": "6P2Oq",
        "title": "What's new with the API V2?p",
        "content": "The API V2 is the new iteration of our developer API ...",
        "link": "https://board.support",
        "categories": ["Nv9PG"]
    },
    {
        "title": "Which API version am I currently using?",
        "content": "The API version is configured separately for each ...",
        "link": "",
        "id": "IDkft",
        "categories": []
    },
    ...
]

Si es un solo artículo, el valor devuelto es el artículo:

{ "id" : "6P2Oq" , "title" : "¿Qué novedades trae la API V2?p" , "content" : "La API V2 es la nueva versión de nuestra API para desarrolladores. Esta nueva API integra Google Cloud Spe. La API V2 es la nueva versión de nuestra API para desarrolladores." , "link" : "https://zampisoft.com" }
    

Información


SBChat.getArticleCategories()

Devuelve las categorías de artículos.

Parámetros

Respuesta

[
  {
    "id": "audio",
    "titulo": "Audio",
    "descripcion": "Lorem ipsum dolor adipiscing elit.",
    "imagen": "https://example.com/image.png",
    "parent": true,
    "idiomas": {
      "es": {
        "titulo": "Audio",
        "descripcion": "Leorem ipsum dolor consectetur adipiscing elit."
      }
    }
  },
  {
    "id": "audio_digital",
    "titulo": "Audio digital",
    "descripcion": "Lorem ipsum dolor sit amet, adipiscing.",
    "imagen": "",
    "parent": false,
    "idiomas": {}
  }
]

SBChat.searchArticles()

Muestra los artículos que coinciden con la búsqueda en la caja de artículos del panel (dashboard).

Parámetros

Información


SBChat.setArticleRating()

Establece la calificación de un artículo.

Parámetros


SBChat.categoryEmoji()

Selecciona una categoría de la caja de emojis.

Parámetros


SBChat.searchEmoji()

Busca emojis que coincidan con los términos de búsqueda y los muestra en la caja de emojis.

Parámetros


SBChat.insertText()

Inserta una cadena en el editor de chat.

Parámetros

Información


SBChat.privacy()

Muestra el mensaje de privacidad y obliga al usuario a aceptar los términos antes de iniciar el chat.


SBChat.popup()

Muestra un mensaje emergente (pop-up) o lo cierra.

Parámetros

Información


SBChat.slackMessage()

Envía un mensaje a Slack.

Parámetros

Información


SBChat.deleteMessage()

Elimina un mensaje de la base de datos y de la conversación activa si está disponible.

Parámetros

Información


SBChat.registration()

Muestra el área de registro o de inicio de sesión, o comprueba si el registro es obligatorio.

Parámetros


SBChat.addUserAndLogin()

Registra un nuevo usuario como visitante y lo conecta (login) automáticamente después del registro. Opcionalmente ejecuta una función al completar.

Parámetros

Respuesta

[
    {
        "id": "913",
        "profile_image": "https://zampisoft.com/user.svg",
        "first_name": "Don",
        "last_name": "John",
        "email": "hello@example.com",
        "user_type": "user",
        "token": "9b25351047ee758aa97ee4868d130cc1ceb8decf"
    },
    "YXNkWGNSeTdtRTdDYVkxVG8wckN4YWF6V2s0Tk1mczBSVHdQbHBpOWdmejVUTTdOUUxEUENhdUVoYmROWn..."
]

El último valor son los datos de inicio de sesión encriptados listos para ser almacenados en el Web Storage del navegador del usuario. Utilice la función SBF.loginCookie(response[1]); para almacenarlo.

Información


SBChat.getDepartmentCode()

Devuelve un código HTML con los detalles del departamento dado o de todos los departamentos. Detalles del departamento: id, color, image, name.

Parámetros

Respuesta

HTML

<div data-color="red"><img src="sales.jpg" /><div>Sales<div></div>

SBChat.offlineMessage()

Comprueba si el mensaje de fuera de línea puede enviarse y lo envía.

Información


SBChat.isInitDashboard()

Comprueba si el panel (dashboard) se muestra por defecto cuando se inicializa el widget de chat.


SBChat.closeChat()

Archiva una conversación y la oculta del widget de chat.

Parámetros


SBChat.flashNotification()

Inicia la notificación parpadeante (flash).


SBChat.playSound()

Reproduce el sonido que suena cuando se recibe un nuevo mensaje.

Parámetros


SBChat.automations.runAll()

Comprueba todas las automatizaciones y las ejecuta si las condiciones de activación se validan.


🧩 JAVASCRIPT API: Apps

Lista de funciones de las aplicaciones de ZampiBot.

SBApps.is()

Comprueba si una app está disponible.

Parámetros


SBApps.wordpress.ajax()

Realiza una llamada AJAX de WordPress.

Parámetros


SBApps.dialogflow.message()

Envía un mensaje a Dialogflow y añade la respuesta de Dialogflow a la conversación activa como un nuevo mensaje.

Parámetros

Información


SBApps.dialogflow.active()

Comprueba si Dialogflow y OpenAI están activos o los desactiva.

Parámetros

Respuesta Devuelve true si el bot de Dialogflow está activo; de lo contrario, devuelve false.


SBApps.dialogflow.welcome()

Dispara la Intención de Bienvenida (Welcome Intent) de Dialogflow y muestra el mensaje de bienvenida de Dialogflow.

Información


SBApps.dialogflow.openAI()

Envía un mensaje a OpenAI (ChatGPT), devuelve la respuesta y opcionalmente añade la respuesta como un nuevo mensaje.

Parámetros

Información


SBApps.dialogflow.typing()

Inicia la animación de "escribiendo" del widget de chat.


SBApps.dialogflow.humanTakeover()

Inicia la toma de control humana (human takeover) de Dialogflow configurada en Configuración > Inteligencia Artificial > Toma de control humana.


SBApps.dialogflow.humanTakeoverActive()

Comprueba si la toma de control humana está activa para la conversación activa.


SBApps.dialogflow.translate()

Traduce múltiples cadenas a través de Google Translate.

Parámetros


🎫 JAVASCRIPT API: Tickets

Lista de funciones de la App de Tickets.

SBTickets.showPanel()

Muestra un panel o el área de conversación.

Parámetros


SBTickets.showSidePanels()

Muestra u oculta los paneles laterales.

Parámetros


SBTickets.setAgent()

Obtiene los detalles del agente y puebla el área de perfil del agente del panel derecho.

Parámetros


SBTickets.activateConversation()

Activa y muestra una conversación.

Parámetros


SBTickets.selectConversation()

Establece el estilo de una conversación del panel izquierdo como la conversación activa.

Parámetros


SBTickets.getActiveConversation()


Devuelve el objeto HTML DOM de la conversación activa.

Parámetros


📡 JAVASCRIPT API: Pusher

Lista de funciones para Pusher. Más detalles en pusher.com.

SBPusher.init()

Inicializa Pusher y opcionalmente ejecuta una función al completar la inicialización.

Parámetros


SBPusher.start()

Inicia Pusher y las notificaciones Push. Ejecute esta función después de SBPusher.init() y después de que el usuario esté activo.


SBPusher.subscribe()

Suscribe al usuario activo a un canal de Pusher.

Parámetros

Información


SBPusher.event()

Suscribe al usuario activo a un evento de un canal de Pusher y ejecuta la función dada cuando se recibe el evento.

Parámetros

Información


SBPusher.trigger()

Dispara un evento en un canal de Pusher.

Parámetros


SBPusher.presence()

Suscribe al usuario activo al canal de presencia utilizado para el estado en línea de usuarios y administradores.

Parámetros

Información


SBPusher.presenceUnsubscribe()

Desuscribe al usuario activo del canal de presencia.


SBF.serviceWorker.pushNotification()

Envía una notificación Push al último agente de la conversación, o a todos los agentes si ningún agente ha respondido aún.

Parámetros

Información

➕ JAVASCRIPT API: Más funciones

Lista de varias funciones que realizan diferentes tareas.

SBF.translate()

Traduce una cadena al idioma del usuario activo.

Parámetros

Información


SBF.activeUser()

Devuelve el usuario activo como un objeto SBUser, devuelve false si no se encuentra el usuario activo.

Representación JSON del usuario activo:

JSON

{
    "details": {
        "id": "914",
        "profile_image": "https://zampisoft.com/user.svg",
        "first_name": "User",
        "last_name": "#23262",
        "email": null,
        "user_type": "visitor",
        "token": "bc308e274473fb685a729abe8a4bf82d3c49cd2f"
    },
    "extra": {},
    "conversations": []
}

Información


SBF.getActiveUser()

Activa el usuario conectado (logueado) y devuelve los detalles del usuario.

Parámetros

Respuesta

JSON

{
    "id": "914",
    "profile_image": "https://zampisoft.com/user.svg",
    "first_name": "Don",
    "last_name": "John",
    "email": "hello@example.com",
    "user_type": "user",
    "token": "bc308e274473fb685a729abe8a4bf82d3c49cd2f"
}

Información


SBF.cors()

Ejecuta una petición HTTP POST o GET a una URL y devuelve la respuesta.

Parámetros


SBF.null()

Comprueba si una variable existente es nula o vacía.

Parámetros

Información


SBF.deactivateAll()

Oculta todas las ventanas emergentes (pop-ups) y las ventanas. Esta función se utiliza principalmente en el área de administración.


SBF.getURL()

Busca un parámetro en la URL y devuelve su valor, o devuelve un array con todos los parámetros.

Parámetros


SBF.restoreJson()

Convierte una cadena codificada en JSON a texto normal.

Parámetros


SBF.stringToSlug()

Convierte una cadena a un slug eliminando todos los caracteres especiales, reemplazando todos los espacios con el carácter -, y convirtiendo la cadena a minúsculas.

Parámetros

Información


SBF.settingsStringToArray()

Convierte una cadena a un array de valores. Formato de la cadena: nombre:valor,nombre:valor,....

Parámetros

Respuesta

JSON

{
    "name": "value",
    "name": "value",
    ...
}

SBF.random()

Devuelve una cadena alfanumérica aleatoria.


SBF.isAgent()

Comprueba si un tipo de usuario es un agente. Devuelve true solo si el tipo de usuario es agent, admin, o bot.

Parámetros


SBF.error()

Dispara el error de JavaScript personalizado de ZampiBot.

Parámetros


SBF.errorValidation()

Comprueba si una respuesta de una llamada AJAX es un error de validación.

Parámetros

SBF.login()

Inicia sesión de un usuario o un agente. El inicio de sesión se puede completar de dos maneras: vía correo electrónico y contraseña, o vía ID de usuario y token.

Parámetros

Respuesta

JSON

[
    {
        "id": "913",
        "profile_image": "https://board.support/user.svg",
        "first_name": "Don",
        "last_name": "John",
        "email": "example@domain.com",
        "user_type": "user",
        "token": "9b25351047ee758aa97ee4868d130cc1ceb8decf"
    },
    "YXNkWGNSeTdtRTdDYVkxVG8wckN4YWF6V2s0Tk1mczBSVHdQbHBpOWdmejVUTTdOUUxEUENhdUVoYmROWn..."
]

Devuelve false si el inicio de sesión no es exitoso.


SBF.logout()

Cierra la sesión del usuario conectado y recarga la página.


SBF.loginCookie()

Crea o actualiza la cookie de inicio de sesión.

Parámetros


SBF.reset()

Cierra la sesión del usuario, elimina todos los datos almacenados de ZampiBot y recarga la página.


SBF.lightbox()

Muestra el contenido dado en una ventana modal (lightbox).

Parámetros


SBF.storage()

Gestiona el almacenamiento local (Local Storage) de ZampiBot. El almacenamiento local es una tecnología que guarda datos en el navegador de forma permanente.

Parámetros


SBF.storageTime()

Guarda una clave y la fecha y hora actual en el almacenamiento local para comprobar en el futuro si está dentro del número de horas dado o si ha expirado.

Parámetros

Respuesta Si el atributo hours está establecido, devuelve true si la suma de la fecha guardada y las horas dadas es menor que la fecha y hora actual; de lo contrario, devuelve false. Ejemplo: si la hora guardada es 5:00 pm, e inserta 3, la función devolverá true solo si la hora actual es 8:01 pm o más.


SBF.setting()

Devuelve el valor de una configuración, o le asigna un valor.

Parámetros

Configuraciones disponibles Algunas de las configuraciones disponibles y sus valores se encuentran en la lista a continuación.

JSON

{
    "registration-required": "",
    "registration-timetable": false,
    "registration-offline": false,
    "registration-link": "",
    "visitors-registration": false,
    "privacy": false,
    "popup": true,
    "popup-mobile-hidden": true,
    "welcome": false,
    "welcome-trigger": "open",
    "welcome-delay": 0,
    "follow": false,
    "follow-delay": "1000",
    "chat-manual-init": false,
    "chat-login-init": false,
    "sound": ["code": "n", "volume": 0.5, "repeat": 5],
    "header-name": true,
    "desktop-notifications": "all",
    "flash-notifications": "all",
    "push-notifications": true,
    "notifications-icon": "",
    "bot-id": "377",
    "bot-name": "Bruce Peterson",
    "bot-image": "",
    "bot-delay": 0,
    "dialogflow-office-hours": false,
    "dialogflow-active": true,
    "dialogflow-human-takeover": false,
    "slack-active": false,
    "rich-messages": [
        "email",
        "registration",
        "login",
        "timetable",
        "articles",
        "immagine",
        "video"
    ],
    "display-users-thumb": true,
    "hide-agents-thumb": true,
    "notify-user-email": true,
    "notify-agent-email": false,
    "translations": false,
    "auto-open": false,
    "office-hours": true,
    "disable-office-hours": false,
    "disable-offline": false,
    "timetable": false,
    "timetable-hide": [
        false,
        "checkbox"
    ],
    "articles": true,
    "articles-title": "",
    "init-dashboard": false,
    "wp": false,
    "wp-users-system": "sb",
    "queue": false,
    "queue-message": "",
    "queue-message-success": "",
    "queue-response-time": "",
    "routing": false,
    "webhooks": true,
    "agents-online": false,
    "timetable-message": "",
    "tickets-registration-required": true,
    "tickets-registration-redirect": "",
    "tickets-default-form": "login",
    ...
}

SBF.shortcode()

Convierte un shortcode en un array que contiene el nombre del shortcode y la configuración del mismo.

Parámetros

Respuesta

JSON

[
    "rating",
    {
        "title": "Califique su conversación",
        "message": "Cuéntenos su experiencia.",
        "success": "¡Gracias!"
    }
]

SBF.openWindow()

Abre una página web en una nueva ventana.

Parámetros


SBF.loadResource()

Incluye un archivo .js o .css en el área <head> de la página.

Parámetros


SBF.debounce()

Ejecuta la función dada solo una vez por el tiempo en milisegundos dado; el temporizador se reinicia en cada llamada.

Parámetros


SBF.translate()

Traduce una cadena utilizando las traducciones de ZampiBot.

Parámetros


SBF.escape()

Escapa una cadena (sanitización).

Parámetros


SBF.convertUTCDateToLocalDate()

Convierte una fecha a la hora local.

Parámetros

Respuesta Mon Jan 30 2023 10:45:00 GMT+0000 (Greenwich Mean Time)


SBF.getLocationTimeString()

Devuelve una cadena que contiene la ubicación y la hora local actual de la zona horaria dada.

Parámetros

Respuesta 05:15 AM in London, United Kingdom


SBF.beautifyTime()

Convierte una fecha al formato local y realiza otras optimizaciones para hacer la fecha más amigable.

Parámetros

Respuesta <span>30/01/2023</span>


SBF.dateDB()

Convierte un formato de fecha al formato de fecha de la base de datos y establece el UTC en +0.

Parámetros


SBF.UTC()

Devuelve la fecha y hora especificada en formato unix utilizando el desplazamiento UTC establecido en Configuración > Misceláneas > Zona horaria.

Parámetros

Respuesta 1675075500000


SBF.unix()

Obtiene el valor de la marca de tiempo (timestamp) unix de una cadena de fecha y hora con formato yyyy-mm-dd hh:mm:ss.

Parámetros

Respuesta 1675075500000


⚡ JAVASCRIPT API: Eventos

Los eventos le permiten interceptar las acciones de ZampiBot en tiempo real y ejecutar código JavaScript personalizado cuando se dispara una acción.

Uso

Utilice el código a continuación y reemplace EVENT-NAME con el nombre del evento. La response (respuesta) representa el valor devuelto si solo hay un atributo; de lo contrario, es un array de valores. Se requiere JQuery.

JavaScript

$(document).on("EVENT-NAME", function (e, response) {
    // Su código aquí
});

Ejemplo:

JavaScript

$(document).on("SBMessageSent", function (e, response) {
    console.log(response["user_id"]);
    console.log(response["conversation_id"]);
    console.log(response["message"]);
});

SBReady

Evento disparado al cargar la página después de que el script del chat main.js se haya cargado. Este evento también se dispara en el área de administración.


SBInit

Evento disparado al cargar la página cuando el chat ha completado la inicialización.


SBTicketsInit

Evento disparado al cargar la página cuando el área de tickets ha completado la inicialización. Este evento está disponible solo cuando la App de Tickets está activa.


SBLogout

Evento disparado cuando el usuario activo cierra sesión.


SBError

Evento disparado cuando ocurre un error en ZampiBot.

Respuesta


SBDoubleLoginError

Evento disparado en la inicialización del chat si un agente o un administrador ya ha iniciado sesión.


SBUserDeleted

Evento disparado cuando se elimina un usuario.

Respuesta El ID del usuario que ha sido eliminado.


SBMessageSent

Evento disparado cuando se ha enviado un nuevo mensaje.

Respuesta


SBBotMessage

Evento disparado cuando el chatbot responde a un mensaje.

Respuesta


SBSlackMessageSent

Evento disparado cuando se envía un mensaje a Slack.

Respuesta


SBEmailSent

Evento disparado cuando se envía un correo electrónico de notificación a un usuario o un agente.

Respuesta


SBNotificationsUpdate

Evento disparado cuando se actualiza el contador rojo de notificaciones del botón de chat que alerta al usuario de nuevos mensajes y conversaciones.

Respuesta


SBConversationOpen

Evento disparado cuando una conversación está completamente cargada y se abre en el chat.

Respuesta


SBNewMessagesReceived

Evento disparado cuando hay nuevos mensajes en la conversación activa.

Respuesta


SBMessageDeleted

Evento disparado cuando se elimina un mensaje.

Respuesta El ID del mensaje que ha sido eliminado.


SBNewConversationReceived

Evento disparado cuando se recibe una nueva conversación.

Respuesta La nueva conversación como un objeto SBConversation.


SBNewConversationCreated

Evento disparado cuando se crea una nueva conversación.

Respuesta La nueva conversación como un objeto SBConversation.


SBActiveConversationChanged

Evento disparado cuando se cambia la conversación activa.

Respuesta La nueva conversación activa como un objeto SBConversation.


SBActiveConversationStatusUpdated

Evento disparado cuando se actualiza el código de estado de la conversación activa.

Respuesta


SBPopulateConversations

Evento disparado después de que se han obtenido todas las conversaciones del usuario.

Respuesta


SBChatOpen

Evento disparado cuando se abre el chat.


SBChatClose

Evento disparado cuando se cierra el chat.


SBQueueUpdate

Evento disparado cuando se inicia la cola y cada vez que la cola se actualiza.

Respuesta La posición del usuario en la cola. Si la posición es 0, la cola ha terminado y el usuario puede iniciar el chat.


SBBusy

Evento disparado cuando cambia el estado de "ocupado" del chat. El chat está ocupado si está operando, como enviando un mensaje. Cuando el chat está ocupado, algunas funciones no se pueden disparar, como enviar un nuevo mensaje.

Respuesta Devuelve true si el chat está ocupado, de lo contrario false.


SBDashboard

Evento disparado cuando se muestra el panel de control (dashboard).


SBDashboardClosed

Evento disparado cuando se cierra el panel de control y se muestra una conversación en su lugar.


SBTyping

Evento disparado cuando un usuario o un agente está escribiendo en el editor.

Respuesta Devuelve true si el usuario o agente está escribiendo, de lo contrario devuelve false.


SBArticles

Evento disparado cuando se muestra el panel de artículos o cuando se abre un solo artículo.

Respuesta


SBPrivacy

Evento disparado en la inicialización del chat si se muestra el formulario de privacidad.


SBPopup

Evento disparado cuando se muestra un mensaje emergente (pop-up).

Respuesta El array con el contenido del pop-up: { image: "", title: "", message: "" }.


SBFollowUp

Evento disparado cuando se envía el mensaje de seguimiento.


SBWelcomeMessage

Evento disparado cuando se envía el mensaje de bienvenida.


SBLoginForm

Evento disparado cuando el usuario inicia sesión correctamente desde el formulario de inicio de sesión del chat. Este evento se dispara solo si el inicio de sesión es exitoso.

Respuesta El usuario como un objeto SBUser.


SBRegistrationForm

Evento disparado cuando el usuario se registra correctamente desde el formulario de registro del chat. Este evento se dispara solo si el registro es exitoso. También se dispara si el registro se actualiza a través del formulario de Mensaje Enriquecido.

Respuesta


SBRichMessageShown

Evento disparado cuando se muestra un Mensaje Enriquecido (Rich Message) cargado asíncronamente.

Respuesta


SBRichMessageSubmit

Evento disparado cuando se recibe la respuesta de un Mensaje Enriquecido.

Respuesta


SBAttachments

Evento disparado cuando el usuario adjunta un archivo.


SBNewEmailAddress

Evento disparado cuando un usuario registra su correo electrónico a través del mensaje de seguimiento o el formulario de registro.

Respuesta


SBPanelActive

Evento disparado cuando se abre un panel del área de Tickets. Este evento está disponible solo cuando la App de Tickets está activa.

Respuesta


SBBotPayload

Evento disparado cuando un mensaje de Dialogflow contiene un Payload de ZampiBot. Ejemplos de payload: human-takeover, redirect, woocommerce-update-cart, woocommerce-checkout.

Respuesta El nombre del payload.


SBBotAction

Evento disparado cuando un mensaje de Dialogflow contiene una acción de Dialogflow. Actualmente solo está disponible la acción end (Finalizar conversación).

Respuesta El nombre de la acción.


SBSMSSent

Evento disparado cuando se envía una notificación por mensaje de texto a un usuario o un agente.

Respuesta


SBActiveUserLoaded

Evento disparado cuando el usuario activo ha sido cargado.

Respuesta


SBOpenAIMessage

Evento disparado cuando OpenAI (ChatGPT) devuelve una respuesta.

Respuesta


SBGetUser

Evento disparado cuando los detalles de un usuario son obtenidos de la base de datos.

Respuesta El usuario como un objeto SBUser.


SBSettingsSaved

Evento disparado cuando se guardan las configuraciones del área de administración.

Respuesta


🔄 MISCELÁNEOS: AJAX

Funciones AJAX

Lista de funciones AJAX. Las funciones AJAX son similares a la WEB API: utilizan el mismo nombre de función, los mismos parámetros y devuelven las mismas respuestas.

Utilice la función a continuación para iniciar una llamada AJAX:

JavaScript

SBF.ajax({
    function: 'NOMBRE-DE-LA-FUNCION',
    parameter: value,
    parameter: value,
    ...
}, (response) => {
   // Su código va aquí
});

Reemplace NOMBRE-DE-LA-FUNCION con el nombre de una de las funciones a continuación. Reemplace la lista de parameter: value con los parámetros de la función. Los parámetros y respuestas son los mismos que en la WEB API. La respuesta está en formato JSON.

¡Advertencia! No incluya el token en los parámetros. El token debe mantenerse siempre en secreto.


Lista de Funciones Disponibles

Las funciones marcadas como "Función de Admin" requieren permisos especiales.


Más funciones AJAX

Las siguientes funciones están disponibles solo a través de AJAX.

close-message

Envía el mensaje de cierre a una conversación. Puede establecer el mensaje de cierre en el área Configuración > Chat.

Requisitos Esta es una función de administración y funciona solo si el usuario activo es un agente.

Parámetros

Respuesta

JSON

{
    "success": true,
    "response": {
        "status": "success",
        "message-id": 123456,
        "queue": false
    }
}

update-user-and-message

Actualiza los detalles de un usuario y el contenido de un mensaje.

Requisitos Si el usuario activo es un usuario, solo se puede actualizar el usuario activo y solo los mensajes vinculados a las conversaciones del usuario. Si el usuario activo es un agente o admin, la función funciona para cualquier usuario y cualquier mensaje.

Parámetros

Respuesta true


get-agent

Devuelve los detalles de un agente, administrador o bot.

Parámetros

Respuesta

JSON

{
    "id": "2",
    "first_name": "Don",
    "last_name": "John",
    "department": null,
    "flag": "gb.png",
    "country_code": "GB",
    "details": [
        {
            "slug": "city",
            "name": "City",
            "value": "London"
        },
        {
            "slug": "country",
            "name": "Country",
            "value": "United Kingdom"
        },
        {
            "slug": "sport",
            "name": "Sport",
            "value": "email@example.com"
        },
        {
            "slug": "timezone",
            "name": "Timezone",
            "value": "Europe/London"
        }
        ...
    ]
}

user-autodata

Obtiene los siguientes detalles sobre el usuario activo y actualiza los detalles del usuario: IP, ciudad, ubicación, país, zona horaria, moneda, navegador, idioma del navegador, sistema operativo.

Parámetros

Respuesta true


get-agent-department

Devuelve el departamento del agente o administrador activo.

Respuesta Devuelve el ID del departamento si está establecido; de lo contrario, devuelve false.

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.