Recibe información sobre los productos automáticamente a través de Facebook Messenger
Este tutorial muestra cómo proporcionar a un usuario información relevante sobre un producto de forma automática a través de Facebook Messenger.
En este caso de uso, el usuario se pone en contacto con la empresa a través de su página de Facebook. Se envía automáticamente un mensaje de respuesta al usuario. Mediante la búsqueda por palabras clave, el usuario puede recibir información personalizada sobre productos y servicios.
NOTA: Este tutorial da por hecho que ya has creado un perfil y una página de Facebook.
Código fuente
El código fuente de este proyecto está disponible en la comunidad Repositorio de GitHub.
Requisitos previos
- Crear un Account de Vonage
- Instalar Node JS - Es necesario para utilizar la interfaz de línea de comandos (CLI) de Vonage.
- Instalar la CLI de Vonage
- Sepa cómo probar su servidor webhook localmente
- Python 3 instalado
- Flask instalado
Los pasos
Una vez cumplidos los requisitos previos, los pasos son los siguientes:
- Crear una aplicación de Vonage
- Vincula tu aplicación de Vonage a tu página de Facebook
- Poner en marcha Ngrok
- Escribe tu aplicación básica
- Interactúa con tu página de Facebook
- Cliente mínimo para enviar mensajes de Facebook Messenger utilizando Python
- El caso de uso revisado
- Una aplicación
Hay varias formas de conseguir el mismo resultado con Vonage. Este tutorial solo muestra una forma concreta de hacerlo; por ejemplo, verás cómo utilizar la línea de comandos para crear la aplicación, en lugar del panel de control. Otros tutoriales muestran otras formas de hacerlo.
Crea tu aplicación de Vonage
Si aún no lo ha hecho, cree un nuevo directorio para su proyecto, por ejemplo fbm-app. Cambia a este directorio.
Usa la CLI para crear tu aplicación de Vonage:
Anota el ID de aplicación generado. También puedes consultarlo en el cuadro de mando.
Este comando también creará una clave privada, fbm_app.key en su directorio actual, así como actualizar/crear vonage_app.json.
Este comando también establece los dos webhooks donde tiene lugar toda la interacción entre tu aplicación y Vonage. Debes tener un servidor en ejecución y accesible para Vonage en estas URL.
Vincula tu solicitud a tu página de Facebook
Parte 1: Conecta tu página de Facebook a tu cuenta API de Vonage
Al vincular tu página de Facebook a tu Account de la API de Vonage, permites que Vonage gestione los mensajes entrantes y te permite enviar mensajes desde la Messages API.
-
Para vincular tu página de Facebook a tu cuenta API de Vonage, visita la página Vincula la página de Facebook en tu panel de control.
-
Inicia sesión en tu cuenta de Facebook desde el panel de control.
-
Selecciona de la lista desplegable la página de Facebook que deseas conectar a tu cuenta API de Vonage.
-
Seleccione la clave API que desea utilizar.
-
Haz clic Configuración completa.
En este momento, tu cuenta API de Vonage y esta página de Facebook están vinculadas. El enlace entre tu Account API de Vonage y la página de Facebook no tiene fecha de vencimiento, pero puede caducar ocasionalmente. Cuando caduque, deberás volver a vincularlo siguiendo el mismo proceso.
Parte 2: Conecta tu página de Facebook a tu aplicación API de Vonage
Una vez que tu página de Facebook esté conectada a tu Account de la API de Vonage, cualquiera de tus aplicaciones podrá utilizarla. Para conectar la página de Facebook a una aplicación de la API de Vonage:
-
Navegue hasta su página de solicitudes.
-
En la lista, haga clic en la aplicación que desee vincular. Puede filtrar utilizando el botón Capacidades y seleccionando
messagespara hacerlo más fácil. -
A continuación, seleccione la opción Canales sociales vinculados pestaña.
-
Haz clic en el Enlace junto a la página de Facebook a la que desea conectar su aplicación, asegurándose de que el botón Proveedor es Facebook Messenger.
Ya estás listo para recibir los mensajes que los usuarios te envíen a tu página de Facebook.
NOTA: Si en el futuro quieres vincular otra aplicación a esta página de Facebook, solo tienes que repetir el procedimiento descrito en la parte 2 para la nueva aplicación.
Poner en marcha Ngrok
Asegúrate de que Ngrok esté en ejecución para realizar pruebas de forma local. Para iniciar Ngrok, escribe:
Para generar una URL temporal de Ngrok. Si eres suscriptor de pago puedes escribir:
Ten en cuenta que en este caso Ngrok desviará los webhooks de Vonage que especificaste cuando creaste tu aplicación de Vonage a localhost:9000.
Escribe tu aplicación básica
Así, en el caso más sencillo, su aplicación tendría el siguiente aspecto:
from flask import Flask, request, jsonify
from pprint import pprint
app = Flask(__name__)
@app.route('/inbound', methods=['POST'])
def inbound_message():
data = request.get_json()
pprint(data)
return ("200")
@app.route('/status', methods=['POST'])
def message_status():
data = request.get_json()
pprint(data)
return ("200")
if __name__ == '__main__':
app.run(host="localhost", port=9000)
Añade este código a un archivo llamado app1.py y guárdalo.
Ejecútalo localmente con:
Su aplicación base ya está en funcionamiento y lista para registrar eventos.
Interactúa con tu página de Facebook
Ahora que tu aplicación básica ya está en funcionamiento, puedes enviar un mensaje a tu página de Facebook y comprobar que dicho mensaje queda registrado. Así pues, si envías un mensaje sencillo a tu página de Facebook a través de Messenger, verás un registro similar al siguiente:
Aquí encontrarás información importante que puedes utilizar para desarrollar tu aplicación y hacerla más útil.
| Campo | Descripción |
|---|---|
from |
El ID de Facebook de la persona que envía un mensaje a tu página. |
to |
El ID de Facebook de tu página (la página a la que la persona está enviando un mensaje). |
message |
El mensaje que se está enviando. |
Como puedes ver, el mensaje es un objeto JSON. Puedes extraer el texto del mensaje de este objeto.
Ten en cuenta que es útil registrar tanto el ID de Facebook de tu página (que puede que no conozcas), como el ID de Facebook del usuario que te envía un mensaje. Ten en cuenta que el ID de Facebook es especialmente útil si tu aplicación gestiona varias páginas de Facebook.
Cliente mínimo para enviar mensajes de Facebook Messenger utilizando Python
Actualmente, Vonage no ofrece compatibilidad oficial con las API de Messages y Dispatch API en el SDK para servidores de Python, pero nuestra API REST es totalmente compatible y la Se proporciona el código en Python en el proyecto para usted en una clase reutilizable. Como el código se proporciona no vamos a cubrir más en este tutorial.
El caso de uso revisado
Es hora de analizar este caso de uso con más detalle para que puedas desarrollar tu aplicación de forma más eficaz.
Imagina que un usuario te envía un mensaje a tu página de Facebook a través de Messenger con un texto como «Hola». Sin embargo, debido a la diferencia horaria, no puedes responder al mensaje, lo que puede hacer que el usuario se sienta decepcionado. Por otro lado, sería estupendo poder responder automáticamente con información útil. Por ejemplo, a un mensaje como «Hola» podrías responder con «Bienvenido a T's Cat Supplies. Estas son nuestras principales categorías de productos: juguetes, comida, medicamentos y accesorios».
Utilizando una construcción de Python como if keyword in msg puede detectar palabras clave y enviar material en función de ellas. Por ejemplo, si un usuario envía un mensaje del tipo "Hola, mis tanques necesitan clasificación", puede detectar la palabra tank y envíe información sobre sus servicios de limpieza de tanques. O si recibes un mensaje del tipo "Hola, creo que necesito una grúa para levantar nuestros tramos de tuberías". Podría enviar información sobre sus servicios de alquiler de grúas. Si no se detectan palabras clave, basta con enviar un mensaje genérico al usuario para orientarle.
Esta función de respuesta automática resulta útil, ya que algunas empresas cuentan con cientos de productos y servicios.
Otra función muy útil es la posibilidad de desactivar la respuesta automática, tal vez para tratar directamente con una persona. Se podrían configurar comandos como auto: off y auto: on para controlar cómo interactúan tus clientes con tu página de Facebook.
En las siguientes secciones verás cómo implementar este caso de uso.
Una aplicación
Una de las estructuras de datos útiles para implementar este caso de uso es el diccionario de Python. Aquí puedes ver un ejemplo:
cats_dict = {
'other': 'Our products: toys, food, meds, and bling',
'toys': 'More info on cat toys here https://bit.ly/abc',
'food': 'More info on cat food here https://bit.ly/def',
'meds': 'More info on cat meds here https://bit.ly/ghi',
'bling': 'More info on cat bling here https://bit.ly/jkl'
}
Para poner esto en perspectiva revisa el siguiente código:
class ProductMatcher:
auto_mode = True
cats_dict = {
'other': 'Our products: toys, food, meds, and bling',
'toys': 'More info on cat toys here https://bit.ly/abc',
'food': 'More info on cat food here https://bit.ly/def',
'meds': 'More info on cat meds here https://bit.ly/ghi',
'bling': 'More info on cat bling here https://bit.ly/jkl'
}
...
def product_matcher(self, fb_sender, user, msg):
product = 'other'
msg = msg.lower().strip()
if self.auto_mode:
if "auto: off" in msg:
self.auto_mode = False
self.fbm.send_message(fb_sender, user, "Auto mode is off")
return
for k in self.cats_dict.keys():
if k in msg:
product = k
break
self.fbm.send_message(fb_sender, user, self.cats_dict[product])
if "auto: on" in msg:
self.auto_mode = True
self.fbm.send_message(fb_sender, user, "Auto mode is on")
return product
Si el usuario envía un mensaje por Messenger y no hay ningún humano que responda, se le devuelve un menú. En el mensaje del usuario se extrae el producto y se envía el mensaje apropiado. Este código tiene un enfoque específico, pero esperemos que indique el potencial.
Quizá te preguntes si esto puede resultar molesto para el usuario si quiere hablar con una persona real. Sin embargo, la respuesta automática podría desactivarse una vez que estés conectado y puedas responder a los mensajes. El código permite al usuario utilizar los comandos auto: off y auto: on para controlar la interacción. Esto también podría ser gestionado por el gestor de canales.
En el código anterior también se devuelve el producto que interesa al usuario. Esto podría utilizarse si, por ejemplo, se quisiera registrar al usuario y su elección de producto en una base de datos. También se podría buscar a un usuario en la base de datos para averiguar si es un cliente nuevo o si ya ha tenido contacto con la empresa anteriormente.
Resumen
En este tutorial has visto un caso de uso en el que el usuario puede recibir información sobre productos de forma automática a través de Facebook Messenger. Esto se basaba en la coincidencia de palabras clave. El usuario también tenía la posibilidad de activar o desactivar el modo de respuesta automática según sus necesidades.
Otros recursos
- El completo código fuente.
- Messages API documentación