...
El componente FlowEngine de Plataforma ofrece un gran número de conectores para trabajar con redes sociales, concretamente . 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:
...
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
...
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 esto ya puedo podemos crear mi nuestra App y conseguir las Keys:
...
Como indican en la web debo , debemos guardar estas Keys, ya que tendré tendremos que configurarlas en los componentes del FlowEngine:
...
Después de esto puedo , podemos probar el API REST de Twitter pulsando el botón Test an endpoint.
Como indican puedo , podemos probarlo con el comando:
curl -X GET -H "Authorization: Bearer <BEARER TOKEN>" "https://api.twitter.com/2/tweets/440322224407314432"
...
Tras probar esto iré , iremos al Dashboard, dentro puedo configurar mi App . Dentro podemos configurar nuestra App.
...
Iré Iremos a la sección Keys and tokens y seleccionaré seleccionaremos Generate Access Token and Secret:
...
Que guardaré guardaremos también junto con el API Key y el API Key Secret:
...
IMPORTANTEIMPORTANTE: Hasta hace unos meses con esto he concluido , esto era suficiente para terminar la configuración necesaria en Twitter; pero, 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 Nos pedirá una serie de información para habilitaros el acceso a este nivel, como el uso que queremos hacer, podemos . Podemos indicar que queremos probar a recoger tuits con Node-red.
...
Lo primero será tener un usuario en la instancia de Plataforma que quiera usar. Para el ejemplo usaré , usaremos el entorno CloudLab de Plataforma (entorno gratuito con fines de experimentación). Así que iré iremos a https://lab.onesaitplatform.com/ y si no tengo tenemos un usuario, lo crearé crearemos con el botón SIGN UP. Es importante que cree creemos un usuario tipo DEVELOPER:
...
Con el usuario creado (recibiré recibiremos un mail para validar la creación), ya puedo logarme podemos logarnos en el Panel de Control Panel de la Plataforma:
...
Una vez dentro iré , iremos a la opción de menú DEVELOPMENT>My Flows:
...
Si es la primera vez que entro veré entramos, veremos que no tengo tenemos creado un dominio del FlowEngine, así que pulsaré pulsaremos el botón + para crearlo:
...
Le daré daremos un nombre y pulsaré pulsaremos Create:
...
Ahora ya veré mi veremos nuestro dominio, que por defecto está parado, así que lo arrancaré arrancaremos primero:
...
Una vez arrancado puedo , podemos acceder a él con el botón de View It:
...
Finalmente accederé accederemos a la Paleta del FlowEngine, empezaré . Empezaremos por seleccionar que no quiero queremos crear un proyecto:
...
Puedo Podemos maximizar el área de trabajo con el botón de la esquina derecha:
...
Ahora buscaré buscaremos los componentes de Twitter con el buscador y arrastraré arrastraremos el de Twitter In a la paletaal lienzo:
...
El triángulo me nos indica que debo debemos configurarlo, para esto pincho 2 . Para esto, pinchamos dos veces sobre él para que aparezca la ventana de configuración.
...
En esta debo , debemos configurar los credenciales de Twitter que obtuvimos en el paso 1:
...
Después, ya puedo podemos configurar lo que quiero queremos escuchar, por ejemplo puedo . Por ejemplo, podemos elegir una tendencia, en . En el ejemplo, vamos a elegir #TheBatman en el día de su estreno en España:
...
Después configuraré , configuraremos el nodo debug para depurar por consola lo que llega:
...
Y para probarlo, simplemente hago hacemos un DEPLOY:
...
Y ya veo vemos en streaming los tuits sobre el tópico:
...
Para pararlo puedo , podemos eliminar el criterio de búsqueda.
Igualmente puedo , podemos publicar un tuit con el componente Twitter Out:
...
En el FlowEngine, es muy fácil componer una lógica de negocio de modo que, ante ciertos eventos (la llegada de un evento a una Entidad/Ontología por ejemplo), se componga un mensaje que se publique.
En este sencillo ejemplo, simplemente publicaremos un texto. Para eso, para eso usaremos el componente Inject configurado para inyectar un texto:
...
Tras esto podremos ver el mensaje:
...
Paso 3: Almacenar información de los tuits en una Entidad de Plataforma
Si volvemos al ejemplo en el que estaba estábamos escuchando lo que se decía sobre The Batman:
...
y pongo ponemos un componente debug configurado para que saque todo el objeto msg:
...
Entonces veré entonces veremos en la pestaña debug una estructura como esta:
...
Para insertar estos datos en Plataforma puedo , podemos 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 . Esta forma es mucho más sencilla cuando partimos de un JSON, como es el caso.
Desde la pestaña Debug puedo , podemos seleccionar uno de los objetos con el botón Copy value:
...
Si pego pegamos el contenido en un editor veré , veremos algo como esto:
...
Como quiero queremos usar este JSON como ejemplo para crear mi nuestra Entidad puedo , podemos eliminar los atributos dentro del tweet, de modo que dejaré dejaremos una estructura JSON como esta:
Code Block |
---|
{ "topic": "tweets/playlsit", "payload": "robert pattinson as batman >>>>>>>", "lang": "en", "tweet": {}, "_msgid": "31a45aac.7fc556" } |
Ahora voy vamos a la opción DEVELOPMENT/My Entities en el Control Panel y selecciono seleccionamos el botón + para crear una nueva Entidad:
...
Dentro me encuentro nos encontramos con varias opciones, en . En este caso me , nos interesa la opción Create From File para usar el JSON como base para crear mi nuestra Entidad:
...
Al seleccionarla puedo , podemos copiar el JSON que he hemos dejado como plantilla y pulsar el botón Generate JSON-Schema:
...
Después pulso pulsamos Create y completo completamos los datos de mi nuestra Entidad:
...
Una vez creada puedo , podemos volver al FlowEngine para continuar con mi nuestro flujo.
Buscaré Buscaremos el componente onesaitplatform-insert y lo arrastraré, luego lo configuro con mi arrastraremos. Después lo configuraremos con nuestra Entidad:
...
Si lo conecto conectamos directamente a la salida de Twitter y debugeo debugeamos la salida veré , veremos que obtengo obtenemos 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 nos 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 donde el nodo Function convierte el msg a un payload en la salida:
...
Si ahora hago hacemos el DEPLOY veré , veremos que la inserción es correcta:
...
Para comprobar que de verdad se está almacenando esta información en una Entidad accederé accederemos a la herramienta Query Tool en TOOLS>Query Tool.
Dentro puedo podemos consultar los datos almacenados, basta . Basta con que seleccione seleccionemos la Entidad y configure configuremos una consulta, o use usemos la consulta por defecto:
...
Siguientes pasos
...
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.