Extensiones de chat
Las extensiones de chat permiten a los bots ofrecer funciones sociales e interactivas que los usuarios pueden usar directamente en sus conversaciones.
CONTENIDO
Información general
Modelo de interacción
Las extensiones de chat aparecen en el menú emergente del editor en Messenger una vez que el usuario ha interactuado con el bot asociado.
Cuando el usuario toca el icono de extensión de chat, se abre una interfaz de usuario basada en vista web especificada por el desarrollador. A continuación, el usuario puede crear o seleccionar el contenido que se va a compartir en la cadena de mensajes. El mensaje que se comparte en la cadena puede contener imágenes, enlaces y otros elementos.
Cuando los usuarios del grupo interactúen con cualquier mensaje que se comparte de esta forma, el desarrollador tendrá acceso a información contextual de la cadena de mensajes, capacidad de solicitar permisos y todas las demás funciones que ofrece el SDK para JavaScript de extensiones de Messenger.
Casos de uso posibles
- Expresión: crear stickers o memes en el mismo Messenger. Compartir canciones, vídeos u otro contenido.
- Elementos multimedia: enviar historias sobre temas que sigues al grupo a medida que suceden.
- Comercio: planificación y pedidos en grupo.
- Productividad: enviar actualizaciones desde herramientas de seguimiento de tareas o editar un documento de forma colaborativa.
- Entretenimiento: crear juegos o retos en grupo.
Contamos con TaskBot, un bot de código abierto que muestra todas las funciones que aquí se describen.
Probar en Messenger →Repositorio de Github →
Configurar el punto de acceso del menú emergente
Para que tu bot aparezca en el menú emergente de las personas que lo han añadido, debes establecer su URL de inicio.
Si tu extensión de chat no está lista para lanzarse, asegúrate de establecer in_test en true para evitar que se muestre a personas que no son desarrolladores antes de tiempo.
Función de compartir contenido
La plataforma de Messenger admite el uso compartido personalizado desde la vista web, dando a los desarrolladores la posibilidad de proporcionar un mensaje personalizado y un destino para los mensajes que se comparten desde su bot.
Se añadieron varias mejoras a estas funciones para hacer que funcionen con las extensiones de chat. Esto es lo que deberías saber:
Compartir en la cadena de mensajes actual
La función beginShareFlow() posee un parámetro mode que ahora admite el modo current_thread. Esto permite al usuario compartir en la cadena de mensajes desde la que se ha invocado la extensión de chat en lugar de tener que seleccionar otra cadena. La mayoría de los desarrolladores deben elegir el modo current_thread desde la propia extensión.
Puede haber situaciones en las que desees verificar si este modo es compatible con la versión de Messenger del usuario. Utiliza el método getSupportedFeatures() y comprueba la clave "sharing_direct" para asegurarte de ello.
Reaccionar al contenido compartido
Se llama a la devolución de llamada success de beginShareFlow() independientemente de si el usuario confirma el contenido compartido o lo cancela, siempre y cuando no se haya detectado ningún error.
Messenger pasa ahora el campo is_sent en la respuesta a la devolución de llamada success, indicándote si se ha llegado a enviar un mensaje.
Después de que el usuario haya compartido contenido, conviene cerrar la ventana si ha terminado o dirigir al usuario hacia la siguiente parte del proceso.
<script>
var messageToShare = { ... };
MessengerExtensions.beginShareFlow(function success(response) {
if(response.is_sent === true){
// User shared. We're done here!
MessengerExtensions.requestCloseBrowser();
}
else{
// User canceled their share!
}
},
function error(errorCode, errorMessage) {
// An error occurred trying to share!
},
messageToShare,
"current_thread");
</script>Consulta la documentación de beginShareFlow() para obtener información más detallada.
Obtener el identificador de usuario y el contexto de la cadena de mensajes
Llama a la función getContext() para obtener:
- el identificador de usuario (PSID),
- el identificador de cadena,
- el tipo de cadena.
Esta función la pueden utilizar todos los usuarios que usen la vista web, tanto si tienen una cadena de mensajes abierta con tu bot como si no.
Ten en cuenta que obtener el identificador de usuario de este modo no significa que se pueda obtener el perfil de usuario. Para ello, necesitarás permiso de perfil.
Más información →
Administración de permisos
Cuando un usuario inicia una cadena de mensajes con tu bot, automáticamente adquieres permiso para enviar mensajes a ese usuario y para obtener su perfil. Estos permisos se revocan en el caso de aquellos usuarios que bloqueen el bot o eliminen la cadena de mensajes.
En lo que respecta a los usuarios que encuentran el bot por medio de la vista web y no han iniciado una cadena de mensajes con él, tal vez quieras solicitar estos permisos. Para ello, puedes usar las funciones de permisos del SDK para JavaScript de extensiones de Messenger.
Más información →Sugerencias y prácticas recomendadas
La plataforma de Messenger sugiere prácticas recomendadas para crear una extensión de chat excepcional, como por ejemplo:
- Planteamiento general
- Cómo usar diferentes modos de compartir contenido
- Cómo controlar la vista web de Chrome para conseguir el máximo efecto
- Cómo asegurar la compatibilidad con versiones anteriores
Kit de diseño
¿Estás listo para diseñar tu extensión de chat? Consulta nuestro práctico archivo de Sketch, que incluye todos los componentes que necesitas.
Conseguir el kit →Preguntas frecuentes y solución de problemas
P: ¿Es necesario tener un bot para desarrollar una extensión de chat?
R: Sí. Las extensiones de chat son propias de los bots.
P: ¿Qué hace que aparezca una extensión de chat en el menú emergente del editor?
R: Las extensiones de chat aparecen en el menú emergente del editor de un usuario después de que este haya interactuado con el bot asociado.
P: ¿Es necesario tener una extensión de chat para que los usuarios puedan compartir contenido desde mi bot?
R: En absoluto. La plataforma de Messenger ofrece otras muchas formas para que los usuarios compartan contenido desde tu bot.
P: ¿Es necesario tener una extensión de chat para usar la vista web y el SDK para JavaScript de extensiones de Messenger en mi bot? ¿Cuál es la relación?
R: En absoluto. Lo que ocurre es que tenemos debilidad por esa palabra. De hecho, las vistas web se pueden invocar de distintas formas además de mediante extensiones de chat, y todas ellas admiten el uso de las extensiones de Messenger.
P: ¿Qué opciones hay disponibles en el SDK para JavaScript de extensiones de Messenger cuando alguien recibe una extensión de chat y toca un enlace?
R: Las funciones disponibles para los usuarios que abran el contenido compartido son las mismas que para la persona que lo ha enviado. Puedes obtener su identificador de usuario o contexto sobre la conversación, así como compartir tu propio contenido con ellos, entre otras opciones. Ten en cuenta que en estos casos no podrás acceder al perfil del usuario ni a sus mensajes hasta que solicites el permiso correspondiente.
P: ¿Las extensiones de chat funcionan en Messenger.com y Facebook.com?
R: Esta función solo está disponible para iOS y Android. Los usuarios que usen clientes basados en web podrán hacer clic en enlaces que otras personas hayan compartido mediante extensiones de chat, pero no podrán usar la funcionalidad que proporciona el SDK para JavaScript. Para obtener más información, consulta el apartado sobre la compatibilidad con versiones anteriores en la guía de prácticas recomendadas para las extensiones de chat.
P: ¿Qué diferencia hay entre compartir en la cadena de mensajes actual y compartir con transmisión?
R: Las extensiones de chat se basan en las funciones de compartir contenido de la vista web lanzadas anteriormente, añadiendo un proceso que recibe el nombre de "current_thread".
Si un usuario ha invocado tu bot en una cadena de mensajes utilizando el editor, lo lógico es que quiera compartir contenido ahí mismo y no con otra persona. Así pues, con el proceso “current_thread”, el usuario puede confirmar el envío de un contenido a la cadena de mensajes en curso, en lugar de transmitir a varias cadenas.
P: Tengo la versión más reciente de Messenger y el SDK no funciona en la vista web. ¿Qué es lo que falla?
R: Comprueba lo siguiente:
Página sin publicar: si la página a la que está vinculado tu bot no está publicada, el SDK no se cargará para los usuarios que no tengan ningún rol (por ejemplo, de desarrollador o administrador) en tu página. Publica la página o añade al usuario a esta.
Propiedad
messenger_extensionno establecida: asegúrate de que, en cualquier lugar desde el que se abra la vista web, la propiedadmessenger_extensionsse establezca entrue. Esto incluye:- los menús de tu bot,
- los botones de los mensajes que envían tus bots,
- cualquier mensaje compartido a través de
beginShareFlow()y los botones Compartir.
El dominio no está en la lista de autorizados: añade el dominio en el que se encuentra alojada la página a la lista de dominios autorizados del bot.
P: He creado una extensión de chat pero no consigo que aparezca en el menú emergente del editor. ¿Cómo lo soluciono?
Comprueba lo siguiente:
Verifica que has establecido el valor de
home_urlde la página específica que quieres que aparezca mediante el uso del identificador de acceso a dicha página. Si trasladas un bot de una página de Facebook a otra, la URL de inicio no se actualizará automáticamente.Si has establecido el atributo
in_testcomo “true” mientras el bot estaba en modo de desarrollo, asegúrate de que la persona que acceda al menú emergente sea un desarrollador o evaluador de dicho bot o un administrador de su página de Facebook. Si el bot está disponible para el público, comprueba que lo hayas enviado a revisión y que se haya aprobado el permisopages_messaging.Comprueba que la página de Facebook vinculada al bot esté publicada.
Comprueba que el bot en sí también esté en modo público.
Asegúrate de haberte comunicado con el bot anteriormente.
Las extensiones de chat que se muestran en el menú emergente del editor se almacenan en caché. Por este motivo, es posible que tarden un poco en aparecer.