martes, 22 de noviembre de 2016

Codemotion 2016



Durante los días 18 y 19 de noviembre tuvimos la oportunidad de asistir a la quinta edición del Codemotion Madrid celebrado en el Campus Montepríncipe de la Universidad San Pablo CEU. Un evento que reúne a profesionales del sector del desarrollo software en más de 150 charlas y diversos workshops además de actividades de networking, con gran éxito de participación, como pudimos comprobar con los aforos llenos en las conferencias a las que asistimos. 

En esta edición cabe destacar la presencia de Altran tanto en las actividades de promoción, marketing y recruiting, como ponente en las conferencias. El stand de Altran despertó la curiosidad de los asistentes ofreciendo la posibilidad de experimentar la tecnología de realidad virtual por medio de una de las aplicaciones del área de I+D desarrollada por la empresa para soluciones en el campo de la ingeniería. 



La conferencia de nuestro compañero Luís Roldan sobre Flink, una novedosa plataforma open source que facilita el uso del lenguaje Java en tecnologías Big Data, tuvo una gran expectación llenando una de las salas con mayor capacidad de las habilitadas para las conferencias. Todas las expectativas fueron satisfechas ya que Luís hizo una excelente labor de síntesis didáctica explicando en una amena charla de 45 minutos las características y usos de esta tecnología. Además aportó a la comunidad la experiencia obtenida con Bond y Play, dos de los innovadores proyectos que coordina en el área de I+D en la división de telecomunicaciones. 


Uno de los principales valores que aporta la asistencia a este ciclo de conferencias, es que nos permite tomar la temperatura al sector, dándonos una visión del estado de las diversas tecnologías y hacia donde se mueve la comunidad. En esta edición comprobamos como JavaScript con sus múltiples plataformas, herramientas, librerías y componentes sigue siendo el elemento fundamental en el desarrollo de aplicaciones web. Se mantiene el interés por las tecnologías de Big Data y se ha aumentado en Machine Learning y en el uso de Bots

Como conclusión hemos comprobado que estamos muy bien posicionados en cuanto a conocimientos, siendo punteros en algunas áreas concretas y en el camino marcado por la tendencia tecnológica. 

Autor: Jesús Parra

lunes, 17 de octubre de 2016

Plug-ins de Ionic

Casi todos, quien más quien menos, hemos utilizado alguna vez algún complemento informático para mejorar nuestra experiencia con algún programa u obtener una funcionalidad que necesitáramos. Estos complementos son los llamados plug-ins (enchufables) y están presentes en multitud de entornos, desde navegadores web a reproductores de audio, con una gran cantidad de funcionalidades como bloquear publicidad, reconocimiento y presentación de texto formateado o permitir la reproducción de contenido en un formato no permitido originalmente.

En este artículo nos centraremos en los plug-ins de Ionic (Para más información consultar el siguiente artículo).

Al tratarse Ionic de un framework de desarrollo de aplicaciones híbridas, el uso de plug-ins se convierte en obligatorio para poder realizar tareas que requieran de comunicación con el dispositivo en el que se ejecutan, tales como el acceso a la cámara, al bluetooth o al almacenamiento del dispositivo. Ionic, más que plug-ins propios, tiene a su disposición todos los plugins de Cordova

Estos plug-ins se instalan mediante comandos indicando el nombre o la ruta de su repositorio y generan una estructura de ficheros tanto en la web como en los propios sistemas nativos que permiten la comunicación entre ambos. Si usamos “—save” en el comando de instalación lograremos que se añada el plug-in automáticamente al fichero package.json del proyecto Ionic que contiene una referencia a todos los plug-ins instalados y que se utiliza para generar la estrucutra de las aplicaciones de nuevo en caso necesario; logrando así que se genere con todos los plugins necesarios ya instalados.

A continuación, veremos brevemente unos de los plug-ins más utilizados en nuestros proyectos: 

Cordova-plugin-camera


En el desarrollo de una aplicación es muy probable que nos enfrentemos a la necesidad de proporcionar al usuario la posibilidad de usar la cámara o aceder a la galería para, por ejemplo, permitirle cambiar la foto de perfil.

Esta necesidad se ve subsanada con este plug-in, que de manera sencilla nos permite obtener una imagen de la cámara o de la galería del dispositivo.


En nuestra aplicación Hi! lo implementamos con esa finalidad en la ventana de perfil del usuario, permitiéndole cambiar su imagen. Primero le damos a elegir el origen de la misma, y después, de manera sencilla, en la respuesta del plugin obtenemos la nueva imagen y la pintamos:

 

Phonegap-plugin-barcodescanner


Otro de los usos más comunes en para la cámara en aplicaciones móviles es escanear códigos de barras o QR y obtener de ellos distinta información; como pudiera ser un descuento en un restaurante.

Para ello contamos con este plug-in que se encargará de abrir la cámara y tras escanear correctamente un código de los mencionados anteriormente nos devolverá su contenido en el callback.

En De´r nos ha servido para realziar varias funcionalidades, una de ellas se basa en la lectura de un código (QR o de barras) de un artículo para acceder de manera rápida al detalle del mismo a través de la información contenida en él; por ejemplo, a través de su id.


 

Com.unarin.cordova.beacon


Los beacons son cada vez más utilizados en una gran cantidad de ámbitos distintos, para poder aprovechar su uso en una aplicación Ionic, existe este plug-in el cual nos permite realizar las principales acciones de interacción con estos dispositivos como son: la creación de una región y el escaneo de una o el de un beacon en concreto.



Así hacemos en De´r, escaneando el área cercana al dispositivo en busca del beacon más cercano para localizar al usuario dentro de un establecimiento y poder mostrárselo sobre un plano:


Otros plugins utilizados:


Autor: Aitor Pascual


viernes, 7 de octubre de 2016

Cómo implementar Notificaciones Push GCM/FCM en una aplicación móvil con Ionic Framework


La tecnología Push es una forma de comunicación en la que un servidor envía un mensaje a un cliente. Lo que caracteriza esta tecnología es que es siempre el servidor el que inicia esta comunicación y se destaca por su inmediatez, ya que no hace falta estar ejecutando la aplicación para que nos llegue. Aunque la tengamos cerrada o en segundo plano.

Por definición, para que el servidor envíe el mensaje al usuario, éste se habrá tenido que suscribir previamente, para que el servidor conozca a donde hay que enviar esa notificación push, es decir, en algún momento hay que solicitar que sea generado un identificador y almacenarlo para poder enviar la notificación push al usuario, en Android es el Registration ID y en iOS el Device Token. Con ese identificador desde el servidor se comunica con Apple y Google y son estos quienes se comunican directamente con el móvil (Google por GCM/FCM y Apple por APNS).

Este tutorial tiene como objetivo explicar cómo implementar las notificaciones push GCM/FCM en una aplicación Ionic. A continuación se van a describir los pasos necesarios para la creación de un proyecto FCM.

Configurar Firebase Cloud Messaging (FCM)

Firebase Cloud Messaging (FCM) es la nueva versión del Google Cloud Messaging (GCM), se hereda la infraestructura GCM, además de nuevas características.

Para enviar las notificaciones push vamos a tener que comunicar con FCM y para eso a continuación vamos a describir cómo obtener un Server Key y un Sender ID generado por FCM necesario para realizar esa comunicación.

Primero que nada debemos crear un proyecto FCM y para eso vamos a Firebase Console y hacemos clic en Create New Project (o agregar Firebase a un proyecto google existente).



Una vez creado tu proyecto vamos a Project settings:



y hacemos clic en Cloud Messaging:


Al crear el proyecto se ha generado una Server Key y un Sender ID que se deben guardar que lo vamos a usar más tarde.

Proyecto Ionic

Para la implementación de las notificaciones push en nuestro proyecto Ionic hemos usado el plugin phonegap-plugin-push (pero existen otros plugins de cordova en que su implementación es similar).

Al compilar para Android deberás asegurarte de que tienes instalado los siguientes pre-requisitos a través del Administrador de Android SDK:
·         Android Support Library la versión 23 o posterior
·         Android Support Repository la versión 20 o posterior
·         Google Play Services la versión 27 o posterior
·         Google Repository la versión 22 o posterior

Para agregar el plugin phonegap-plugin-push a nuestro proyecto abrimos el terminal y dentro de la carpeta del proyecto Ionic ejecutamos el siguiente comando (usar el Sender ID que se ha generado al crear el proyecto FCM): 

>ionic plugin add phonegap-plugin-push --variable SENDER_ID="Sender ID"

Ejemplo implementado en app.js:

.run(function($ionicPlatform){
$ionicPlatform.ready(function() {
var push = PushNotification.init({
android: {
senderID: "Sender ID”
},

ios: {
alert: "true",
badge: "true",
sound: "true"
},
windows: {}
});

push.on('registration', function(data) {
console.log("regID:" + data.registrationId);
alert("regID:" + data.registrationId);
});

push.on('notification', function(data) {
console.log("title:" + data.title + " Message:" + data.message);
alert("title:" + data.title + " Message:" + data.message);

// data.message,
// data.title,
// data.count,
// data.sound,
// data.image,
// data.additionalData
});

push.on('error', function(e) {
console.log(e.message);
});

});

});

Con todo esto realizado ahora se puede generar el apk. Para eso en el terminal se escriben los siguientes comandos:

>ionic platform add android
>ionic build android     (o “ionic run android” para instalar directamente en tu móvil)

Al abrir la app en tu móvil deberás ver un alerta con el Registration ID y vamos guardar este ID que lo vamos a usar más tarde (es más fácil copiarlo conectando tu móvil y abrir el navegador Chrome y acceder a la consola, se abre con “chrome://inspect”).

Enviar Notificaciones Push

Hay varias maneras de enviar las notificaciones push, en este tutorial vamos a usar un ejemplo rápido para probar que se reciben las notificaciones push en la app que hemos instalado. Para eso vamos a usar la extensíon de Chrome Advanced Rest Client para hacer una petición a FCM para que este envie la notificacion a la app instalada anteriormente (se puede hacer la peticion que vamos a usar de ejemplo de igual modo usando cualquier servidor).

En el Advanced Rest Client vamos hacer una peticion HTTP POST a la URL https://fcm.googleapis.com/fcm/send en que en la cabecera se añaden los campos Authorization con la Server Key y un Content-Type de tipo application/json y enviando el payload de ejemplo que se muestra a continuacion.

Ejemplo del payload de una notificacione push:

{
    "registration_ids": ["Registration ID"],



    "data": {



          "title": "Large Icon",



          "message": "Loaded from assets folder",



          "image": "www/image/logo.png"


    }

}


Nota: Se pueden ver otros ejemplos en https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/PAYLOAD.md

Advanced Rest Client:


Notificación push recibida en el móvil:


Autor: Tiago Coelho

lunes, 26 de septiembre de 2016

Chatbots: hablando con las máquinas


A medida que avanza la tecnología, los humanos y las máquinas se acercan cada vez más y la forma en la que nos comunicamos con ellas es cada vez más natural.
 
Desde la época en la que para decirle a un ordenador lo que tenía que hacer había que perforar una serie de tarjetas hemos ido mejorando, llegado hasta ahora, momento en el que incluso podemos decirle con nuestras propias palabras lo que queremos como si se lo dijéramos a otra persona. Eso implica una comunicación intuitiva que elimina la barrera del conocimiento técnico permitiendo a cualquiera interactuar con una máquina.

Es por esto que existe una gran tendencia a usar los llamados chatbots en numerosos ámbitos y negocios.

Un bot es un software que realiza una tarea de forma automática sin intervención humana. Los chatbots son bots diseñados para charlar con las personas simulando ser otra persona para ofrecer cualquier tipo de servicio al usuario de una forma más cercana, bien sea obtener información de un producto, contratar un viaje o fijar una cita en tu agenda.

El desarrollo de la inteligencia artificial y el machine learning permite que cada vez estos chatbots tengan más personalidad y sean más reales, dando lugar a complejos asistentes personales con los que se puede hablar de cualquier cosa y que en un futuro próximo podrán llegar a ser indistinguibles de un ser humano.

Es muy probable que todos nosotros hayamos hablado alguna vez con un chatbot, pues están presentes en muchas webs, aplicaciones de mensajería (Telegram, Facebook Messenger) o incluso en nuestros propios smartphones (Siri, Cortana, Google Assistant) y cada vez estarán más presentes en nuestro día a día.

¿Pero cómo se desarrolla un bot? Pues existen varias plataformas de creación de bots, dentro de las cuales cabe destacar las siguientes:

  • Telegram (https://core.telegram.org/bots/api): Desarrollo de bots para la aplicación de mensajería de Telegram.
  • Facebook Messenger (https://messengerplatform.fb.com/): Desarrollo de bots para la aplicación de mensajería de Facebook.
  • Pandorabots (http://www.pandorabots.com/): Desarrollo de bots que definen flujos conversacionales mediante el uso de AIML (Artificial Intelligence Mark-up Language) que se basa en el matching de patrones.
  • rebot.me (http://rebot.me/): Creación de bots definiendo respuestas para las distintas frases que pueda introducir el usuario.
  • LUIS (https://www.luis.ai/): Language Understanding Intelligent Service. Es un framework de Microsoft que permite procesar el lenguaje natural para extraer información analizable.
  • wit (https://wit.ai/): Similar a LUIS pero libre. Tiene además la funcionalidad de definir flujos de conversación.

En I+D, el equipo de Bond hemos desarrollado e integrado un chatbot cuya misión es entablar una conversación con el usuario que se da de alta en la aplicación para conocerle mejor y extraer información útil que será utilizada para generar recomendaciones más acertadas, que es la principal funcionalidad de la plataforma. Este chatbot realiza un papel activo en la conversación, siendo el encargado de realizar las preguntas, al contrario de lo que suele ser común.

Concretamente se ha desarrollado utilizando LUIS. Con este framework de Microsoft se pueden crear modelos de entendimiento del lenguaje para poder extraer información de las frases del usuario que será utilizada para generar su perfil en Bond y avanzar en el flujo de la conversación.

Estos modelos se crean gracias a un proceso de aprendizaje en el que el desarrollador va proporcionando distintos ejemplos de oraciones y marcándolas con intents y entities determinados hasta que la plataforma es capaz de identificar por sí misma la información.
 
Un intent viene a ser la intención del usuario en una frase determinada y los entities son elementos de información necesarios para nuestro caso de uso.

Cuando el modelo está creado, se despliega en un endpoint HTTP. El código Java implementado en Bond enviará ahí las frases del usuario y obtendrá como respuesta un JSON con todos estos elementos. La lógica de negocio decidirá qué preguntas hacer para continuar con la conversación al mismo tiempo que va almacenando en base de datos la información.

Integrar otros chatbots para otros propósitos diferentes dentro de la aplicación es tan sencillo como entrenar otros modelos de entendimiento y escribir la lógica que ejecute las acciones necesarias.

Autor: Roger Guizan