Obtener datos del usuario Facebook con Bot Framework V3

Yudner Tayson Paredes Flores
My Bots Latam
Published in
3 min readNov 12, 2018

Es cierto que con Microsoft.Bot.Builder podemos acceder al Id y Nombre del usuario, pero, usando el servicio REST de Facebook podemos acceder a más información de los usuarios que interactúan con el Bot. Empecemos…..💪

Crear un proyecto Bot Application

File> New> Project> Bot Application

Actualizar Microsoft.Bot.Builder

Creamos una carpeta “Services”, dentro una carpeta “FacebookUserProfile” y agregamos una clase “UserProfileModel” que tendrá los campos que devuelve el servicio Facebook, tal cual indica la documentación Facebook for developers. 👇

Fuente: https://developers.facebook.com/docs/messenger-platform/identity/user-profile/

Servicio Facebook

Fuente: https://developers.facebook.com/docs/messenger-platform/identity/user-profile/

En la carpeta “FacebookUserProfile” agregamos una clase “GetUserProfile” para implementar el servicio que se consumirá.
Crearemos un método asíncrono “Execute” que recibirá por parámetro un id de usuario para obtener los datos del usuario correspondiente. 📥 📥 📥

En el método “Execute”:

Definimos la Url base según la documentación:

Definimos los campos que consumiremos del servicio

Definimos el token de acceso

  • Par obtener el token de acceso:
    1. Ir a Facebook for developers
    2. Mis Aplicaciones
    (Selecciono mi aplicación)
    3. Messenger — Configuración
    4.
    Ubicamos Generación de token
    5.
    Selecciono mi página y copio el token.

Formamos la URL final para consumir el servicio

Consumimos el servicio GET, validamos que el servicio ejecute satisfactoriamente, capturamos el contenido que trae el servicio, deserializar el contenido en nuestro modelo (UserProfileModel) y finalmente retornamos el modelo con los datos del usuario.

Modificamos la clase “RootDialog” de la carpeta “Dialogs”.
Hacemos asíncrono el método “StartAsync” y eliminamos la última línea de código.
En el método “MessageReceivedAsync”:
-
Eliminamos su contenido.
- Instanciamos la clase que contiene el servicio (GetUserProfile)
- Llamamos al método “Execute” y pasamos por parámetro el id del usuario capturado desde context.Activity.From.Id

Una vez obtenido el objeto, validamos que no traiga datos nulos y mostramos los datos con PostAsync. 👇

Publicación de la aplicación

Es necesario tener las configuraciones listas para la publicación en un canal.

Probamos en Messenger

Y efectivamente, el servicio funciona OK y obtenemos los datos ofrecidos en la documentación Facebook for developers.

Código fuente: https://github.com/Yudner/ChatBotDeveloper (Ejemplo 13)

Documentación Facebook for developers: https://developers.facebook.com/docs/messenger-platform/identity/user-profile/

--

--

Yudner Tayson Paredes Flores
My Bots Latam

Software Developer 💻 | Cognitive Services Specialist 🚀 | Soccer⚽ | Game 🎮