Instalaciones del widget web

Instalaciones del widget web

El widget web permite adaptarse a diversos ambientes, integrándose así a los contextos de nuestros clientes.
Gracias a este comportamiento, se puede ofrecer dos esquemas de instalación:

Esquemas de instalación

Uno, controlando el despliegue por campañas y otro de instalación exclusiva en el ámbito de las campañas que genera inconvenientes de despliegue y navegación al no permitir la persistencia del chat entre páginas del sitio web.

Esquema Oficial

El sitio debe contar con el recurso widget.js en todas sus páginas en el nivel superior o igual body del contenedor principal. Una vez instalado el script_instalacion en el contenedor principal éste es manejado con instrucciones de despliegue, cierre, data y metadata de clientes desde componentes de campaña como muestra la siguiente figura donde el script_inicializacion vive en el iframe 4 de campaña.


Con esta configuración es posible manejar diferentes comportamientos para distintos segmentos de clientes basados en criterios de campaña que cargan script_inicializacion acordes a las necesidades del negocio. Por ejemplo, en el caso de plataforma remota se levanta el widget sólo a  aquellos clientes que son cargados en la base de la campaña y el resto de los clientes no se entera que existe un chat. Cabe destacar que la carga del es script_instalacion totalmente asíncrona, es decir, no interfiere en absoluto con el rendimiento de la página contenedora.

Scripts de Instalación Oficial

Script_instalacion (alojado en servidores del cliente):

  1. <!-- Begin of LetsTalk script -->
  2. <script type="text/javascript">
  3.   !function (e, t) { if (!e.$Letstalk) { var n = e.$Letstalk = {}; n.enqueue = function () { var e = arguments; return new Promise(function (t, n) { u.stack.push({ args: e, resolve: t, reject: n }), u.times.push(+new Date) }) }, n.init = function () { return n.enqueue("init", arguments) }, n.on = function () { return n.enqueue("on", arguments) }, n.executeAppMethod = function () { return n.enqueue("executeAppMethod", arguments) }, n.isAvailable = function () { return n.enqueue("isAvailable", arguments) }, n.launch = function () { return n.enqueue("launch", arguments) }, n.listApps = function () { return n.enqueue("listApps", arguments) }, n.remove = function () { return n.enqueue("remove", arguments) }; var u = n._ = { stack: [], times: [+new Date] }; t.body ? r() : e.attachEvent ? e.attachEvent("onload", r) : e.addEventListener("load", r, !1) } function r() { a = !1, s = t.createElement("script"), s.type = "text/javascript", s.src = "https://static.letsta.lk/launcher/launcher.js", s.async = !0, s.defer = !0, k = document.getElementsByTagName("script")[0], k.parentNode.insertBefore(s, k) } }(window, document);
  4.   var settingsChatPrivado = {
  5.     consumer: {
  6.       key: 'KEYKEY-QpF1kHYTTGw',
  7.       token: 'TOKENTOKEN'
  8.     },
  9.     visitor: {
  10.       email: 'clubdelaserpiente@letsta.lk',
  11.       name: 'Horacio Oliveira',
  12.       attrs: {
  13.         origen: 'Rayuela',
  14.        nivel: 'VIP'
  15.       }
  16.     }
  17.   };
  18.   window.LetstalkSettings = {
  19.     organization: 'ltmobile',
  20.   };

  21.   window.$Letstalk.on('ready', function () {
  22.     window.$Letstalk.launch('chat-development-privado', settingsChatPrivado).then((app) => {
  23.       app.on('ready', function () {
  24.         app.executeMethod('setDisplayState', { state: 'minimized' });
  25.       });
  26.     })
  27.     .catch(error => {
  28.       console.log(`Ocurrió un error: ${error}`);
  29.     });
  30.   });
  31. </script>


Esquema de para sitios de multiples componentes

El esquema de prueba puede servir para mostrar el chat con cualquier lógica de despliegue tal como la instalación oficial pero está restringida a una página (no es posible navegar manteniendo el widget abierto entre páginas del sitio) y al espacio provisto por el iframe contenedor, en este caso el Iframe 1 es el único que puede mostrar correctamente el widget por el mayor tamaño del mismo.

Debido a restricciones del sistema de administración de campañas el widget.js de agregarse como un archivo separado para que no sea filtrado por servicio de campañas como muestra la siguiente figura:




En el caso indicado el script_inicializacion debe ser integrado como una función que acepta los parámetros de sesión que sólo existen en el HTML del Iframe 1.

Scripts de Instalación Prueba

script_instalacion:

<!-- Begin of LetsTalk script -->

<script type="application/javascript" async defer>

(function(l,t){if(l.$LT)return;function ls(){a=!1;s=t.createElement('script');s.type='text/javascript';s.src=typeof LT_WIDGET_SRC!=='undefined'?LT_WIDGET_SRC:'https://www.cliente.cl/imagenes/_js/let/widget.js';s.async=!0;s.defer=!0;k=document.getElementsByTagName('script')[0];k.parentNode.insertBefore(s,k)}

var lt=l.$LT=function(callback){if(typeof callback==='function'){mock.initCallBack=callback}}

lt.enqueue=function(){mock.stack.push(arguments);mock.times.push(+new Date)}

lt.settings=function(settings){lt.enqueue('userSettings',settings)};lt.chatMetadata=function(getMetadata){if(typeof getMetadata==='function'){lt.enqueue('metadata',getMetadata())}};lt.setByName=function(name){mock.name=name};var mock=lt._={name:!1,initCallBack:!1,stack:[],times:[+new Date],};if(t.body){ls()}else{if(l.attachEvent){l.attachEvent('onload',ls)}else{l.addEventListener('load',ls,!1)}}})(window,document)

</script>

<!-- End of LetsTalk script -->


script_inicializacion:

<script type="text/javascript">
var widgetName = 'web';
var consumerKey = 'KEYKEYOVhDpRtbQiKw';
var consumerToken = 'TOKENTOKEN';
var visitorName = '${_SESION.PROPIEDADES.NOMBRE_COMPLETO}';
var visitorEmail = '${RUT}'+'@test.letsta.lk';
var attrs = {proyecto: 'proyecto web', perfil: 'test'};
startChatWidget
(widgetName, visitorName, visitorEmail, consumerKey, consumerToken, attrs);

</script>


JS auxliliar (archivo adjunto):

function startChatWidget(widgetName, visitorName, visitorEmail, consumerKey, consumerToken, attrs) {

 window.$LT(function(messenger){

   messenger.setByName(widgetName);

   messenger.settings({

     consumer: {

       key:   consumerKey,

       token: consumerToken

     },

     visitor: {

       name:  visitorName,

       email: visitorEmail,

       attrs: attrs

     }

   });

 });

}


    • Related Articles

    • Configuraciones del widget web

      El widget de ingreso a un chat tiene asociadas diferentes propiedades que definen su comportamiento. A continuación se describe como acceder a la configuración del widget dentro de la plataforma: Inicialmente se deberá iniciar sesión como ...
    • Widget

      Por motivos de aseguramiento y buen funcionamiento de la aplicación, se recomienda  al cliente contar con recursos óptimos y eficaces antes de hacer uso de nuestra plataforma, garantizando así buena experiencia al usuario final. Los acuerdos técnicos ...
    • Instalación del Widget

      El widget web permite cubrir una diversidad de casos de uso muy amplia, y para cada uno de ellos puede requerir diferentes componentes y parámetrosnde la API. Algunos ejemplos de los casos son: Lugares públicos, donde cualquier persona puede acceder, ...
    • Integración Web

      Webhooks Let's Talk provee un mecanismo genérico de integración con servicios de terceros en tiempo real basado en webhooks para el intercambio de datos y en triggers automáticos y manuales para activar los webhooks. El mecanismo permite enviar datos ...
    • Habilitar google analytics en widget web

      Cada ID de seguimiento estará relacionado a un solo widget. Habilitar id de seguimiento de google analytics Antes de la instalación de google analytics,  se deberán realizar los siguientes pasos dentro de la plataforma de administración de google: ...