Widget de chat de sitio web personalizable

Tengo un sitio web donde los visitantes primero inician sesión y luego miran videos, y quiero que puedan intercambiar mensajes de chat con mis agentes de soporte mientras miran los videos.

Estoy buscando una herramienta de chat que tenga todas (o al menos la mayoría ) de estas características:

  • Dado que los visitantes de mi sitio ya han proporcionado su dirección de correo electrónico y su nombre, el widget de chat automáticamente "inicia sesión" con el visitante utilizando los datos disponibles en Javascript en la página (para que los agentes de chat puedan ver el nombre del visitante, la dirección de correo electrónico, la ubicación, la información del dispositivo, etc). (Creo que Userlike.com lo permite).
  • Tanto en los navegadores móviles como en los navegadores de escritorio, el cuadro de chat es altamente personalizable. Por ejemplo, si no quiero solicitar a los visitantes que hagan clic en un icono para abrir una ventana de chat de área de texto, podría configurarlo de modo que un área de texto de chat ya sea visible de inmediato. Me encantaría controlar también el texto del marcador de posición y las indicaciones que aparecen encima.
  • Puedo cambiar instantáneamente lo que ven los visitantes (sin que el visitante necesite actualizar la página) en el sentido de que: cuando los agentes han indicado que están "disponibles", el widget de chat está visible. Y si todos los agentes dejan de estar disponibles, puedo elegir si todo el widget de chat se vuelve invisible de inmediato (para todos los visitantes que puedan verlo en ese momento) o si muestra algún tipo de mensaje indicando que no está disponible.
  • El sistema mantiene una base de datos de toda la actividad de chat, incluida la información de contacto, las marcas de tiempo y los datos personalizados que se enviaron a través de javascript (para que luego pueda analizar "¿En qué puntos de nuestros videos los visitantes querían hacernos preguntas?")
  • Los agentes reciben notificaciones automáticas en una aplicación de iOS y pueden responder a los chats de los clientes allí (Tawk.to lo permite).
  • Sería genial si los eventos de javascript en la página (como que el visitante alcance ciertos momentos al mirar ciertos videos) pudieran enviarse al widget de chat automáticamente (y sin que el visitante lo vea en la conversación de chat) para mantener informado al agente minuto a minuto. minuto sobre lo que el visitante está experimentando en la página.

Si tienen sugerencias, ¡las agradecería!

PD: soy ingeniero de software y mi sitio usa Laravel. Si hay una manera fácil de lograr esto con https://laravel.com/docs/5.6/broadcasting y Pusher, estoy abierto a eso. Pero mi corazonada es que las herramientas ya existen y que no necesitaré codificar algo yo mismo.

Respuestas (1)

Tawk.to tiene una aplicación para iOS y parece lo suficientemente personalizable como para que yo la pruebe.

Aunque conocía Tawk.to cuando hice esta pregunta, nunca había podido encontrar esta documentación sobre cómo configurar la dirección de correo electrónico del visitante, etc.

Aquí está la mayor parte de mi código:

var startChatBtn = $('#startChatBtn');
startChatBtn.hide();
var visitorData = {
    name: $('#tawktoData').attr('data-name'),
    email: $('#tawktoData').attr('data-email'),
    hash: $('#tawktoData').attr('data-hash')
};
console.log('tawk visitorData', visitorData);
window.Tawk_API.visitor = visitorData;
var hasChatted = false;

window.Tawk_API.onChatStarted = function () {
    console.log('onChatStarted');
    hasChatted = true;
};

window.Tawk_API.onChatMinimized = function () {
    console.log('onChatMinimized');
    window.Tawk_API.hideWidget();
    showChatBtnIfOnline();
};

window.Tawk_API.onChatHidden = function () {//https://www.tawk.to/javascript-api/#onChatHidden
    console.log('onChatHidden');
    showChatBtnIfOnline();
};

window.Tawk_API.onStatusChange = function (status) {
    console.log('window.Tawk_API.onStatusChange');
    if (status === 'away' || status === 'offline') {
        if (!hasChatted) {
            startChatBtn.hide();
        }
    } else {
        showChatBtnIfOnline();
    }
    window.Tawk_API.hideWidget();
    window.Tawk_API.minimize();//https://www.tawk.to/javascript-api/#minimize
};

tawkto_helper.onLoad.done(function () {
    //window.Tawk_API.hideWidget();//Is "Hide widget on load" enabled? https://dashboard.tawk.to/#/admin/5a9480/default/widget-settings 
    //window.Tawk_API.setAttributes(visitorData, function (error) {});//Instead of waiting for onLoad, maybe by setting window.Tawk_API.visitor immediately (even before load), I can have the first iOS app notification include visitor data.
    console.log('tawkto_helper.onLoad');
    showChatBtnIfOnline();
});

function showChatBtnIfOnline() {
    console.log('showChatBtnIfOnline window.Tawk_API.getStatus()', window.Tawk_API.getStatus());
    if (window.Tawk_API.getStatus() === 'online') {
        startChatBtn.show();
    }
}

function tawkAddEvent(name, payload, errorCallback) {
    tawkto_helper.onLoad.done(function () {
        window.Tawk_API.addEvent(name, payload, errorCallback);
    });
}

startChatBtn.click(function () {//There is not a race condition because startChatBtn will only ever be visible if Tawk_API has already loaded
    console.log('startChatBtn.click');
    window.Tawk_API.maximize();
    startChatBtn.hide();
});