You are viewing the Spanish (Mexico) site, but your language preference is set to English. Switch to English site →

Menu

Expand
Calificar esta página:

Enviar mensajes salientes a través de SMS, WhatsApp y otros canales

Actualmente estás leyendo documentación de mensajería antigua de Flex. Si estás empezando con una nueva implementación de Flex, considera la posibilidad de utilizar Flex Conversations.

Flex permite a tus agentes iniciar conversaciones con los clientes a través de cualquier canal de mensajería de Twilio, como SMS, WhatsApp y Facebook Messenger.

Actualmente, los mensajes salientes requieren de trabajo de desarrollo adicional. En esta página, se describe parte del trabajo que deberás hacer en la actividad en segundo plano, aunque los mensajes salientes también requerirán del uso de un plugin de Flex UI (la interfaz de usuario de Flex) para exponer la funcionalidad en la interfaz de Flex.

Administración de la creación de tareas

Hay dos formas de gestionar la creación de tareas para mensajes salientes: cuando el agente envía mensajes al cliente (de inmediato) o cuando el cliente responde al mensaje saliente (retrasado).

Los mensajes salientes requieren un flujo de Flex con la propiedad ChannelType configurada como sms, whatsapp, facebook o custom..

Estrategia 1: Crear la tarea cuando el agente envíe mensajes al cliente

A través de los siguientes pasos se creará una tarea cuando envíes un mensaje saliente al cliente.

1. Definir un flujo de Flex

En primer lugar, define un flujo de Flex saliente con el tipo de integración task. Solo tienes que hacerlo una vez. Recuerda también definir que el flujo de Flex utilice un canal de tareas con capacidad de mensajería, como sms o chat. Si ya tienes un flujo de Flex que utiliza Studio, debes establecer el parámetro enabled en false.

Loading Code Sample...
        
        

        Estrategia 1: Crear un flujo de Flex

        2. Crear un canal de chat Flex

        A continuación, crea un canal de chat utilizando la API de Flex para iniciar la mensajería con el cliente. En este ejemplo, la llamada a la API también agrega atributos de tarea, lo que permitirá al canal enrutar la tarea a un agente específico (mediante la expresión de flujo de trabajo targetWorker).

        Debes guardar el SID del canal de chat, ya que lo necesitarás más adelante.

        Loading Code Sample...
              
              

              Canal Flex saliente con integración en TaskRouter

              Una vez que la API del canal Flex se ejecute correctamente, ocurrirán dos cosas:

              • Se crea un nuevo canal de chat.
              • Se crea una nueva tarea y esta se asigna al trabajador especificado en targetWorker.

              A continuación, si abres Flex UI (la interfaz de usuario de Flex) relacionada con targetWorker, deberías ver la siguiente nueva reserva:

              3. Configurar una sesión de Twilio Proxy

              Ahora que tienes un canal, te recomendamos asociarlo a una sesión de proxy. Las sesiones ofrecen una capa útil de estado y metadatos que Flex utiliza para garantizar que los mensajes de los clientes permanezcan conectados correctamente a medida que los procesan los bots, TaskRouter y los agentes.

              Tendrás que realizar dos solicitudes:

              La primera crea la sesión de proxy e incluye a la persona con la que intentas comunicarte.

              La segunda solicitud agrega el canal de chat a la sesión y lo asigna al número de contact center.

              Considera la posibilidad de habilitar Channel Janitor (Limpiador de canales) para que te ayude a gestionar las sesiones de chat antiguas.

              Loading Code Sample...
                    
                    

                    Estrategia 1: Crear una sesión de proxy para el canal de chat

                    En el código de ejemplo, debes reemplazar esto:

                    {{CUSTOMER_NUMBER}} El número de teléfono del cliente con el que intentas comunicarte.
                    {{SID_FROM_CHANNELS_API}} El SID del canal de chat creado en el paso 2. Aquí, se utiliza como un nombre para la sesión de proxy, lo que te ayuda a ti (y a Flex) a encontrarla.

                    También tendrás que agregar el agente a la sesión proxy con su SID de canal de chat como identificador y el número de contact center como su identificador proxy, ya que debe parecer como que los mensajes del agente provienen del contact center.

                    Por último, si deseas que el agente vea el número del cliente cuando responda el chat, asigna el número del cliente al nombre descriptivo del agente.

                    Loading Code Sample...
                          
                          

                          Estrategia 1: Agregar el agente a la sesión de proxy

                          En el código de ejemplo, debes reemplazar esto:

                          CONTACT_CENTER_NUMBER Es el número de teléfono, número de canal o número de agente del contact center desde el que se enviará el mensaje. Es probable que sea el mismo número que utilizaste como contactIdentity cuando creaste el flujo de Flex.
                          CHAT_CHANNEL_SID El SID del canal de chat que creaste mediante la API de canal en el paso 2. Esto le indica al proxy que el agente enviará mensajes a través de este canal.

                          3. Actualizar los atributos del canal de chat

                          Actualiza los atributos (attributes) del canal de chat para incluir el SID de la sesión de proxy que creaste en el paso 3 si aún no está presente. Los atributos del canal de chat deben ser una cadena JSON:

                          {proxySession: "KCXXXXXXXXXXXXXXXXXXXXXXXX"}

                          Debes recuperar el objeto de atributos existente, agrega la clave proxySession y, a continuación, actualizar el parámetro como una cadena.

                          Ejemplo de Node.js:

                          .then(
                              attributes => {
                                  return Object.assign(JSON.parse(attributes.attributes), { proxySession: proxySession.sid })
                              }
                          ))
                          Loading Code Sample...
                                
                                

                                Estrategia 1: Actualizar atributos del canal de chat

                                4. Comience a chatear

                                Ahora, vuelve a Flex y acepta la reserva. El agente puede enviar mensajes directamente a la interfaz de chat, y los mensajes se enrutarán al cliente a través de su canal de Twilio.

                                Estrategia 2: Crear tarea cuando el cliente responda

                                Los siguientes pasos describen una arquitectura alternativa para enviar un mensaje al cliente. Cuando el cliente responda, el controlador de mensajes entrantes creará una tarea y la reenviará a un agente.

                                1. Configurar mensajes entrantes

                                Debes configurar un controlador de mensajes entrantes y prepararlo para crear una tarea. De esta forma, se gestionará la respuesta del cliente al mensaje saliente. Recuerda también definir que el flujo de Flex utilice un canal de tareas con capacidad de mensajería, como sms o chat.

                                Si ya controlas los mensajes entrantes y deseas utilizar esa lógica, puedes utilizar el siguiente ejemplo de código para obtener todos los flujos de Flex de la cuenta. Para ello, solo tienes que elegir el SID de la cuanta que está asociada con el controlador de mensajes actual y vincularlo con el canal deseado (p. ej., el controlador de mensajes SMS).

                                Loading Code Sample...
                                      
                                      

                                      Estrategia 2: Recuperar todos los flujos de Flex de la cuenta

                                      2. Crear un canal

                                      Crear un canal de chat utilizando el recurso de canales de Flex. Necesitarás el flujo de Flex para los mensajes salientes. Necesitarás un nuevo canal para cada interacción.

                                      Puedes ver varios SID asociados con un flujo, y algunos podrían ser para Twilio Studio. Debes utilizar un SID de flujo de Flex, que comenzará con las letras FO.

                                      Loading Code Sample...
                                            
                                            

                                            Crear un controlador de mensajes salientes sin una tarea

                                            3. Crear una sesión de proxy

                                            Ahora tendrás que crear una sesión de proxy para asociar el canal de chat y el número de teléfono del cliente. Las sesiones ofrecen una capa útil de estado y metadatos que Flex utiliza para garantizar que los mensajes de los clientes permanezcan conectados correctamente a medida que los procesan los bots, TaskRouter y los agentes. Te ayudará a indicar a Flex que, cuando el cliente responda, debe hablar con este agente a través de este canal. Pasa el canal que creaste en el paso 2 como nombre único de la sesión.

                                            Recuerda incluir el nombre descriptivo en la matriz de los participantes.

                                            En el código de ejemplo, debes reemplazar esto:

                                            {{CHAT_CHANNEL_SID}} El canal de chat que utilizará el agente para responder al cliente, el que creaste en el paso 2.
                                            {{CONTACT_CENTER_NUMBER}} El ID del agente o contact center (el número desde el que se enviará el mensaje SMS). Es el mismo número que utilizaste como contactIdentity cuando creaste el flujo de Flex. Puede ser un número de WhatsApp o cualquier otro identificador de otro canal de mensajería.
                                            {{FRIENDLY_NAME}} Se debe incluir el nombre descriptivo en los participantes para crear correctamente la sesión de proxy. Recomendamos incluir el número de cliente ({{CUSTOMER_NUMBER }}) como nombre descriptivo.
                                            Loading Code Sample...
                                                  
                                                  

                                                  Crear una sesión de proxy

                                                  Utiliza otra solicitud para agregar el cliente utilizando su número como identificador. El proxy puede utilizar su propia lógica para seleccionar el identificador del proxy.

                                                  Loading Code Sample...
                                                        
                                                        

                                                        Agregar cliente

                                                        4. Actualizar los atributos del canal de chat

                                                        Actualiza los atributos (attributes) del canal de chat para incluir el SID de la sesión de proxy que creaste en el paso 3 si aún no está presente. Los atributos del canal de chat deben ser una cadena JSON:

                                                        {proxySession: "KCXXXXXXXXXXXXXXXXXXXXXXXX"}

                                                        Debes recuperar el objeto de atributos existente, agrega la clave proxySession y, a continuación, actualizar el parámetro como una cadena.

                                                        Loading Code Sample...
                                                              
                                                              

                                                              Actualizar atributos del canal de chat

                                                              5. Enviar el mensaje

                                                              Ahora puedes enviar de forma manual tu mensaje saliente a través del canal de chat. Esto activará un webhook posterior al evento y creará la interacción de proxy o el mensaje saliente. Por ejemplo, si utilizas Studio, se activará el flujo de Studio como un mensaje saliente para el cliente.

                                                              Te aconsejamos que envíes el mensaje a través del SID del canal, en lugar de usar el SID del proxy para mantener un registro completo de la interacción del chat.

                                                              chatServiceSid El servicio asociado a tu canal de chat.
                                                              channelSid El canal de chat del recurso de canales de Flex. Esto indicará al canal que envíe un mensaje del agente al cliente mediante el uso de los identificadores almacenados en el proxy.
                                                              from El ID del agente o contact center (el número desde el que se enviará el mensaje SMS).
                                                              messageText Este es el contenido que puedes enviar en el mensaje. Ten en cuenta que es posible que este contenido no aparezca (p. ej., si utilizas un flujo de Studio que no utiliza la propiedad body del widget Trigger).

                                                              Enviar el mensaje al canal de chat

                                                              const sendMessage = async function(channelSid, chatServiceSid, client, from, messageText){
                                                                try { 
                                                                  console.log("Send Message Function")
                                                                  return client
                                                                    .chat
                                                                    .services(chatServiceSid)
                                                                    .channels(channelSid)
                                                                    .messages
                                                                    .create({
                                                                      body : messageText,
                                                                      from : from
                                                                    })
                                                                } catch(error) {
                                                                  console.log(error);
                                                                }
                                                              }
                                                              

                                                              El cliente debería recibir un mensaje. Cuando responda, se creará una tarea y podrás enrutarla a un agente que pueda aceptar y manejar la respuesta.

                                                              Calificar esta página:

                                                              ¿Necesitas ayuda?

                                                              Todos la necesitamos a veces; la programación es difícil. Obtén ayuda ahora de nuestro equipo de soporte, o recurre a la sabiduría de la multitud visitando Stack Overflow Collective de Twilio o navegando por la etiqueta de Twilio en Stack Overflow.

                                                              Loading Code Sample...
                                                                    
                                                                    
                                                                    

                                                                    Gracias por tus comentarios.

                                                                    Selecciona los motivos de tus comentarios. La información adicional que nos brindas nos ayuda a mejorar nuestra documentación:

                                                                    Enviando tus comentarios…
                                                                    🎉 Gracias por tus comentarios.
                                                                    Se produjo un error. Inténtalo de nuevo.

                                                                    Gracias por tus comentarios.

                                                                    thanks-feedback-gif