Table of Contents | ||||
---|---|---|---|---|
|
Introducción
El componente FlowEngine de Plataforma ofrece un gran número de conectores para trabajar con redes sociales, concretamente incluye 2 componentes, uno para “escuchar” lo que pasa en Twitter (por ejemplo recibiendo los tuits sobre un hashtag o hacer una búsqueda) y otro para publicar tuits:
...
En este post vamos a ver cómo usar estos componentes para ver en streaming :
Escuchar lo que se dice en Twitter alrededor de un tema
...
Almacenar la información de ese tuit en Plataforma
Publicar un Tuit con información recibida desde un servicio externo
...
(OpenWeatherMaps)
Paso 1: Crear APP en Portal Developer en Twitter
Lo primero que debemos hacer es crearnos una cuenta en Twitter. Una vez creada la cuenta iremos al Portal del Developer de Twitter en https://developer.twitter.com/
...
Nos pedirá que confirmemos que queremos crear una cuenta de desarrollador y completar un conjunto de datos y tras completar nos llegará un mail para confirmar que queremos crear una cuenta de desarrollador:
...
Tras Tras esto ya puedo crear mi App y conseguir las Keys:
...
Que guardaré también junto con el API Key y el API Key Secret
...
IMPORTANTE: Hasta hace unos meses con esto he concluido la configuración necesaria en Twitter, pero con el cambio en la política de acceso a las APIs de Twitter al registrarnos lo haremos con el nivel Essential que no permite el acceso al API 1.1 que es la que usa el componente Node-Red del FlowEngine.
...
...
Así que para que funcione la comunicación con Twitter tendremos que ir al Portal y solicitar el Apply for Elevated que ya nos da permiso para acceder al API v1.1:
...
Os pedirá una serie de información para habilitaros el acceso a este nivel, como el uso que queremos hacer, podemos indicar que queremos probar a recoger tuits con Node-red.
Paso 2: Configurar Componente Twitter en Flowengine y recuperar y publicar Tuits
Lo primero será tener un usuario en la instancia de Plataforma que quiera usar. Para el ejemplo usaré el entorno CloudLab de Plataforma (entorno gratuito con fines de experimentación). Así que iré a https://lab.onesaitplatform.com/ y si no tengo un usuario lo crearé con el botón SIGN UP. Es importante que cree un usuario tipo DEVELOPER:
...
Tras esto podremos ver el mensaje
...
...
En otro post posterior ampliaremos el uso de Twitter para crear un sencillo Bot que sea capaz de darnos la información meteorológica de la ciudad por la que preguntemos.
...
Paso 2: Almacenar información de los tuits en una Entidad de Plataforma
Si volvemos al ejemplo en el que estaba escuchando lo que se decía sobre Batman
...
y pongo un componente debug configurado para que saque todo el objeto msg:
...
Entonces veré en la pestaña debug una estructura como esta:
...
Para insertar estos datos en Plataforma puedo crear una Entidad con estos atributos: topic, payload, lang, tweet o usar la capacidad de Plataforma para crear una Entidad a partir de un JSON, esta forma es mucho más sencilla cuando partimos de un JSON, como es el caso.
Desde la pestaña Debug puedo seleccionar uno de los objetos con el botón Copy value:
...
Si pego el contenido en un editor veré algo como esto:
...
Como quiero usar este JSON como ejemplo para crear mi Entidad puedo eliminar los atributos dentro del tweet, de modo que dejaré una estructura JSON como esta:
Code Block |
---|
{
"topic": "tweets/playlsit",
"payload": "robert pattinson as batman >>>>>>>",
"lang": "en",
"tweet": {},
"_msgid": "31a45aac.7fc556"
} |
Ahora voy a la opción DEVELOPMENT/My Entities en el Control Panel y selecciono el botón + para crear una nueva Entidad:
...
Dentro me encuentro con varias opciones, en este caso me interesa la opción Create From File para usar el JSON como base para crear mi Entidad:
...
Al seleccionarla puedo copiar el JSON que he dejado como plantilla y pulsar el botón Generate JSON-Schema:
...
Después pulso Create y completo los datos de mi Entidad:
...
Una vez creada puedo volver al FlowEngine para continuar con mi flujo.
Buscaré el componente onesaitplatform-insert y lo arrastraré, luego lo configuro con mi Entidad:
...
Si lo conecto directamente a la salida de Twitter y debugeo la salida veré que obtengo un error:
...
Esto es porque la salida de los componentes en el FlowEngine es el msg.payload que en nuestro caso es simplemente un texto:
...
mientras que el nodo Insert espera una estructura JSON completa como hemos definido, ya que me interesa almacenar toda la info del tuit, incluido el usuario que tuitea.
La forma de resolver esto es incluir un nodo Function entre ambos, de esta forma:
...
Donde el nodo Function convierte el msg a un payload en la salida:
...
Si ahora hago el DEPLOY veré que la inserción es correcta:
...
Para comprobar que de verdad se está almacenando esta información en una Entidad accederé a la herramienta Query Tool en TOOLS>Query Tool.
Dentro puedo consultar los datos almacenados, basta con que seleccione la Entidad y configure una consulta o use la consulta por defecto:
...
Siguientes pasos
Una vez tenemos los datos almacenados en Plataforma puedo por ejemplo:
Explotar los datos con el Dashboard Engine por ejemplo mostrando tuits por zona, usuarios que más tuitean sobre un tema.,…
Crear un Modelo con los Notebooks haciendo un análisis del sentimiento sobre los tuits, una distribución geográfica,…
Publicar un API REST con el API Manager con información agregada sobre un tema concreto