Daemon Collector
Copiar enlace al artículo
Copiado

Contenido

  1. Inicialización
  2. Trabajo con carritos abandonados
  3. Conexión del formulario de captura
  4. Uso de un formulario de captura personalizado
  5. Envío de una solicitud
  6. Ejemplos

¡Importante!

«Daemon Collector» es una tecnología obsoleta. Las nuevas conexiones no están disponibles. En el módulo para el sistema de gestión de contenidos (CMS) 1C-Bitrix, la opción está oculta desde la versión 6.7.2.

Para proyectos nuevos y actuales se recomienda usar la herramienta «Seguimiento de visitantes del sitio web», que ofrece funciones ampliadas, un funcionamiento más estable y mantenimiento activo por parte del equipo de desarrollo.

Daemon Collector es un servicio especializado del sistema que permite interactuar estrechamente con los usuarios que visitan el sitio web. Se instala mediante código JavaScript y permite:

  • ver en la interfaz del sistema qué clientes se encuentran en ese momento en el sitio web;
  • recopilar los datos de contacto de los usuarios cuando abandonan el sitio;
  • conectar rápidamente con el sistema los formularios de solicitud y de comentarios del sitio;
  • transmitir información sobre los carritos abandonados.

Inicialización

El siguiente código debe colocarse inmediatamente antes de la etiqueta de cierre </head>:

<script type="text/javascript">
        (function(_,r,e,t,a,i,l){_['retailCRMObject']=a;_[a]=_[a]||function(){(_[a].q=_[a].q||[]).push(arguments)};_[a].l=1*new Date();l=r.getElementsByTagName(e)[0];i=r.createElement(e);i.async=!0;i.src=t;l.parentNode.insertBefore(i,l)})(window,document,'script','https://collector.retailcrm.pro/w.js','_rc');

        _rc('create', 'clave-del-sitio', {
                customer: {
                        externalId: 'ID-del-cliente-en-el-sitio (customer.externalId en CRM)'
                }
        });

        _rc('send', 'pageView');
</script>

La llamada _rc('create'... inicializa el contexto. Su parámetro obligatorio es la clave del sitio, representada en el ejemplo por clave-del-sitio. La clave se genera al activar el sitio en Administración → Integración → Collector.

Configuración de Collector con la clave del sitio y la selección de sitios

Si el usuario está autenticado en el sitio, su identificador externo debe transmitirse mediante customer.externalId. El valor debe corresponder al identificador externo del cliente. Si el usuario no está autenticado, no es necesario incluir esta clave.

El identificador actual del cliente también se puede establecer mediante el método use:

_rc('use', 'customer', {
    externalId: 'ID-del-cliente-en-el-sitio (customer.externalId en CRM)'
});

Este método resulta útil, por ejemplo, en una aplicación de página única (SPA) donde Collector ya está integrado. Si el visitante accede sin autenticarse, Collector se inicializa, pero la llamada a create no recibe el identificador del cliente. Después de que el cliente se autentique, el método use permite transmitir su identificador sin volver a inicializar Collector.

También es posible seguir el estado Online del cliente en el sitio. La identificación se puede realizar mediante los datos del formulario de captura de los clientes que hayan creado un pedido a través de él o mediante la etiqueta clientId, si el sitio está integrado con Google Analytics y se ha configurado la integración entre el sistema de gestión de relaciones con clientes (CRM) y Google Analytics (GA).

Además del indicador de actividad de la lista de clientes, está disponible un filtro por el estado Online.

Collector intenta identificar al cliente que visita el sitio mediante cualquiera de los siguientes parámetros:

  • el identificador del cliente en el sitio customer.externalId, si se ha proporcionado;
  • la etiqueta _ga de Google Analytics;
  • la etiqueta propia de Collector.

Nota

Para seguir la actividad en línea mediante Collector y la etiqueta GA, esta etiqueta debe guardarse en la ficha del cliente a través del módulo Google Analytics 4 o mediante otro método, por ejemplo, la API.

Collector busca la etiqueta GA en las cookies del sitio y la transmite al sistema. Si coincide con la etiqueta guardada en la ficha, el cliente se muestra con el estado Online en la lista de clientes.

Más adelante se incluyen ejemplos de inicialización para distintos tipos de sitios.

Trabajo con carritos abandonados

¡Importante!

Para interactuar con los carritos se necesita customer.externalId. Este identificador se proporciona durante la inicialización mediante create o posteriormente mediante el método use.

El módulo para trabajar con carritos se conecta con el comando require:

_rc('require', 'cart');

Métodos para interactuar con carritos

¡Importante!

Los valores de fecha deben proporcionarse como objetos Date. Por ejemplo: createdAt: new Date(). En CRM, la fecha se transmite en tiempo universal coordinado (UTC) y se convierte a la zona horaria definida en los ajustes generales del sistema.

Edición o creación de un carrito

Código del método: cart:set.

Si el cliente no tiene un carrito, la solicitud lo crea. De lo contrario, actualiza el carrito existente.

Parámetros:

  • customer
    • email (opcional);
    • phone (opcional).
  • items
    • externalId: valor de offer.externalId en CRM;
    • xmlId: valor de offer.xmlId en CRM;
    • quantity;
    • price (opcional).
  • link (opcional): enlace al carrito.
  • createdAt (opcional; si se omite, se establece automáticamente).
  • updatedAt (opcional; si se omite, se establece automáticamente).

Cada elemento de items debe contener al menos uno de los identificadores externalId o xmlId.

Ejemplo:

_rc('cart:set', {
    customer: {
        email: 'test@mail.es'
    },
    items: [{
        externalId: '1',
        xmlId: '2',
        quantity: 1,
        price: 99.99
    }],
    link: 'https://test.test/customers/1/cart',
    createdAt: new Date()
});

Limpieza de un carrito

Código del método: cart:clear.

Este método se utiliza cuando el cliente ha vaciado por completo el carrito o ha creado un pedido a partir de él.

Parámetros:

  • customer
    • email (opcional);
    • phone (opcional).
  • order (opcional)
    • externalId: valor de order.externalId en CRM;
    • number: valor de order.number en CRM.

Ejemplos:

// Opción 1: sin parámetros
_rc('cart:clear');

// Opción 2: con parámetros
_rc('cart:clear', {
    customer: {
        email: 'test@mail.es'
    },
    order: {
        externalId: '1234',
        number: '44C'
    }
});

Error por ausencia de un identificador obligatorio

La siguiente solicitud no contiene externalId ni xmlId para el elemento del carrito:

_rc('cart:set', {
    customer: {
        email: 'test@mail.es'
    },
    items: [{
        // Faltan externalId y xmlId
        quantity: 1
    }],
    createdAt: new Date()
});

En este caso, Collector devuelve un error indicando que debe proporcionarse xmlId o externalId para el elemento del carrito.

Registro de errores

Si el carrito no se crea, primero debe revisarse el Registro de acciones seleccionando el tipo de registro «Collector». El registro permite comprobar, por ejemplo, si la oferta indicada no se encontró para el sitio correspondiente.

Nota

La visita del cliente finaliza después de 30 minutos sin actividad. Si el cliente tenía un carrito, este adquiere el estado abandonado. Si el cliente vuelve a estar activo después de ese periodo, se elimina el estado «abandonado» de su carrito.

El trabajo con un carrito abandonado desde la ficha del cliente se describe en el artículo correspondiente.

Conexión del formulario de captura

El formulario de captura detecta que el usuario está a punto de abandonar el sitio y le propone dejar sus datos de contacto para recibir ofertas especiales, novedades u otra información.

Formulario de captura de Collector para solicitar el teléfono y el nombre del visitante

¡Importante!

El formulario de captura estándar se activa cuando el cursor del ratón sale de los límites del sitio. Por este motivo, no se activa en la versión móvil.

El formulario es un módulo que se carga mediante el comando require:

_rc('require', 'capture-form');

De forma predeterminada, el formulario se muestra una sola vez, independientemente de si el usuario envía sus datos o lo cierra. El parámetro period permite indicar, en minutos, cuánto tiempo debe transcurrir antes de volver a mostrarlo:

_rc('require', 'capture-form', {
    period: 60 * 24 * 30 // Volver a mostrarlo dentro de un mes
});

¡Importante!

El formulario no se muestra a un usuario autenticado en el sitio, es decir, cuando se proporciona customer.externalId en la llamada _rc('create'...).

De forma predeterminada, el formulario contiene los campos Nombre name, Teléfono phone y Correo electrónico email. La composición de los campos se puede configurar:

_rc('require', 'capture-form', {
    fields: {
        name: {},
        phone: {
            required: true,
            label: 'Teléfono'
        }
    }
});

También se pueden redefinir el texto introductorio, el texto del botón y el mensaje mostrado después de enviar correctamente el formulario:

_rc('require', 'capture-form', {
    fields: {
        phone: {
            required: true
        }
    },
    labelPromo: '¿Quieres que te llamemos?',
    labelSend: '¡Llámame!',
    labelThanks: 'Solicitud enviada'
});

Parámetros del formulario de captura

Al inicializar o abrir el formulario se pueden proporcionar los siguientes parámetros:

  • name: nombre;
  • email: correo electrónico;
  • phone: teléfono;
  • customerComment: comentario del usuario;
  • orderType: tipo de pedido;
  • orderMethod: método de creación del pedido;
  • itemId: identificador del producto en el sitio;
  • customSomeField: campo personalizado.

Los valores de los campos personalizados se transmiten con el prefijo custom, seguido del código del campo convertido a camelCase. Por ejemplo, el campo personalizado bonus_code debe proporcionarse como customBonusCode.

_rc('require', 'capture-form', {
    orderMethod: 'online',
    email: 'user@example.net',
    customTransactionId: 'acde1625ab7'
});

El formulario también se puede mostrar manualmente:

_rc('capture-form:show', {
    fields: ['phone']
});

Uso de un formulario de captura personalizado

El formulario estándar se puede sustituir por completo. Para ello, debe proporcionarse el parámetro form durante la inicialización:

_rc('require', 'capture-form', {
    form: {
        show: function () {
            // Código que muestra el formulario al usuario, por ejemplo:
            // $('#my-cool-form').show();
        },
        hide: function () {
            // Código que cierra el formulario, por ejemplo:
            // $('#my-cool-form').hide();
        }
    }
});

En este caso, el envío de los datos también debe implementarse de forma independiente.

Envío de una solicitud

Daemon Collector permite enviar solicitudes desde el sitio al sistema sin integrar la interfaz de programación de aplicaciones (API) completa. El envío se realiza mediante _rc('send', 'order', {...}):

_rc('send', 'order', {
    name: 'Víctor',
    email: 'some-email@mail.es'
});

Se pueden proporcionar los mismos parámetros que al trabajar con el formulario de captura.

A continuación se muestran ejemplos de inicialización y de envío de un formulario de comentarios al sistema.

Ejemplos

Ejemplo de código para inicializar el seguimiento en una landing page

En sitios sin una base de usuarios, como una landing page, se puede utilizar el siguiente código:

<script type="text/javascript">
        (function(_,r,e,t,a,i,l){_['retailCRMObject']=a;_[a]=_[a]||function(){(_[a].q=_[a].q||[]).push(arguments)};_[a].l=1*new Date();l=r.getElementsByTagName(e)[0];i=r.createElement(e);i.async=!0;i.src=t;l.parentNode.insertBefore(i,l)})(window,document,'script','https://collector.retailcrm.pro/w.js','_rc');

        _rc('create', 'RC-16632969589');
        _rc('send', 'pageView');
</script>

Ejemplo de código de plantilla PHP para inicializar el seguimiento

En un sitio con una base de usuarios, como una tienda en línea, la plantilla puede transmitir customer.externalId únicamente cuando el cliente está autenticado:

<script type="text/javascript">
        (function(_,r,e,t,a,i,l){_['retailCRMObject']=a;_[a]=_[a]||function(){(_[a].q=_[a].q||[]).push(arguments)};_[a].l=1*new Date();l=r.getElementsByTagName(e)[0];i=r.createElement(e);i.async=!0;i.src=t;l.parentNode.insertBefore(i,l)})(window,document,'script','https://collector.retailcrm.pro/w.js','_rc');

<?php
        $params = array();

        if ($customer->isAuth()) {
                $params['customer'] = [
                        'externalId' => $customer->getId(),
                ];
        }

        echo sprintf(
                "_rc('create', 'RC-16632969589', %s);\n",
                json_encode((object) $params)
        );
?>

        _rc('send', 'pageView');
</script>

Ejemplo de envío de una solicitud al sistema mediante la API de JavaScript

En este ejemplo, una landing page contiene un formulario de solicitud conectado a una red de coste por acción (CPA). El identificador de la transacción de la red debe enviarse en el campo personalizado transaction_id.

  1. Se crea el campo personalizado transaction_id.
  2. Se conectan jQuery y el complemento de jQuery para obtener parámetros de la dirección URL:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript" src="/jquery.url.js"></script>
  1. Se añade el código de seguimiento de Collector:
<script type="text/javascript">
        (function(_,r,e,t,a,i,l){_['retailCRMObject']=a;_[a]=_[a]||function(){(_[a].q=_[a].q||[]).push(arguments)};_[a].l=1*new Date();l=r.getElementsByTagName(e)[0];i=r.createElement(e);i.async=!0;i.src=t;l.parentNode.insertBefore(i,l)})(window,document,'script','https://collector.retailcrm.pro/w.js','_rc');

        _rc('create', 'RC-16632969589');
        _rc('send', 'pageView');
</script>
  1. Se configura el envío del formulario. La solicitud utiliza el método de creación «Formulario de comentarios» feedback. La función callback informa del resultado:
<script type="text/javascript">
$(function () {
    $('#feedback-form').submit(function () {
        _rc('send', 'order', {
            name: $(this).find('input[name=name]').val(),
            email: $(this).find('input[name=email]').val(),
            customTransactionId: url('?transaction_id'),
            orderMethod: 'feedback',
            callback: function (success, response) {
                // Se informa al usuario del resultado del envío.
                // En lugar de alert(), se puede mostrar un mensaje en la interfaz.
                if (success) {
                    alert('¡Gracias! La solicitud se ha aceptado. Su número: ' + response.id);
                } else {
                    alert('No se ha podido enviar la solicitud.');
                }
            }
        });

        return false;
    });
});
</script>

¿Qué es response.id en Daemon Collector?

response.id es el valor externalId del pedido creado en Simla.

Gracias por tus comentarios.
¿Te resultó útil este artículo
No
  • Рекомендации не помогли
  • Нет ответа на мой вопрос
  • Текст трудно понять
  • Не нравится описанный функционал
Si
Artículo siguiente
Carga del catálogo en el sistema mediante ICML
El formato ICML es una extensión de YML que permite cargar en el sistema información técnica sobre productos y servicios, así como catálogos complejos con variantes (SKU). Este artículo describe los elementos utilizados y las particularidades de la creación del catálogo.