API Android

Sofia2 proporciona un conjunto de APIS para el desarrollo de KPs en distintos lenguajes. En este post vamos a hablar del API Android.

 

Lo podemos descargar desde la web de sofia en las sección de desarrollador junto con el resto de APIs

 

 

Se comunica con la plataforma utilizando el Gateway MQTT.

 

La descarga incluye las librerías necesarias para crear un KP que conecte con la plataforma, así como una aplicación de ejemplo de uso de la librería:

 

 

Dentro de la librería ssap-android se incluyen las siguientes clases para el desarrollo de Kps:

 

KpMQTTClient

Esta clase proporciona los métodos necesarios para conectar conectarse al SIB a través del Gateway MQTT de la plataforma e intercambiar mensajes SSAP.

Entre los métodos que proporciona están:

  • KpMQTTClient(MQTTConnectionConfig config): Constructor. El parámetro config, informa al KP de los parámetros de configuración para conectar con el Gateway del SIB.
  • isConnected(): Conocer si el KP está conectado a un SIB
  • getSessionKey(): Una vez conectado al SIB, recuperar la sessionKey asignada para la conexión
  • connect(): Establecer una conexión física con el SIB a través del Gateway del protocolo implementado por la clase.
  • disconnect(): Cerrar la conexión física establecida con el SIB en una operación connect().
  • SSAPMessage send(SSAPMessage msg): Envía un mensaje SSAP al SIB, recibiendo el mensaje SSAP de respuesta.
  • addListener4SIBNotifications(Listener4SIBIndicationNotifications listener): Añade un listener para recibir notificaciones de mensajes de suscripción. El listener implementa el método onIndication, que recibe por parámetros el mensaje SSAP INDICATION con los datos de notificación de la suscripción.
  • removeListener4SIBNotifications(Listener4SIBIndicationNotifications listener): Elimina un listener para dejar de recibir notificaciones de mensajes de suscripción

 

SSAPMessageGenerator

Es una clase de utilidad que proporciona una serie de operaciones que permiten generar mensajes SSAP

  • generateJoinByTokenMessage(token, instance): Genera un mensaje SSAP de tipo JOIN.
  • generateLeaveMessage(sessionKey): Genera un mensaje SSAP de tipo LEAVE.
  • generateInsertMessage (data, ontology, sessionKey): Genera un mensaje SSAP de tipo INSERT en lenguaje Nativo de la BDTR
  • generateInsertWithQueryTypeMessage (data, ontology, queryType, sessionKey): Genera un mensaje SSAP de tipo INSERT pudiendo utilizar los lenguajes Nativo y SQLLIKE.
  • generateUpdateMessage (data, query, ontology, sessionKey):Genera un mensaje SSAP de tipo UPDATE en lenguaje Nativo de la BDTR.
  • generateUpdateWithQueryTypeMessage (data, query, ontology, queryType, sessionKey):Genera un mensaje SSAP de tipo UPDATE pudiendo utilizar los lenguajes Nativo y SQLLIKE.
  • generateDeleteMessage (query, ontology, sessionKey):Genera un mensaje SSAP de tip DELETE en lenguaje Nativo de la BDTR.
  • generateDeleteWithQueryTypeMessage (query, ontology, queryType, sessionKey): Genera un mensaje SSAP de tipo DELETE, pudiendo utilizar los lenguajes Nativo y SQLLIKE.
  • generateQueryMessage (query, ontology, sessionKey):Genera un mensaje de tipo SSAP de tipo QUERY utilizando los criterios en Nativo de la BDTR
  • generateQueryWithQueryTypeMessage (query, ontology, queryType, queryParams, sessionKey):Genera un mensaje SSAP de tipo QUERY, pudiendo utlizar los lenguajes Nativo y SQLLIKE, o bien utilizar una consulta predefinida en el SIB.
  • generateSubscribeMessage (suscription, ontology, refresh, sessionKey): Genera un mensaje SSAP de tipo SUBSCRIBE, utilizando los criterios en lenguaje Nativo de la BDTR.
  • generateSubscribeWithQueryTypeMessage (suscription, ontology, queryType, refresh, sessionKey):Genera un mensaje SSAP de tipo SUBSCRIBE, pudiendo utilizar una sentencia los lenguajes Nativo y SQLLIKE, o bien utilizar una consulta predefinida en el SIB.
  • generateUnsubscribeMessage (subscriptionId, ontology, sessionKey): Genera un mensaje SSAP de tipo UNSUBSCRIBE.

 

 

En el siguiente ejemplo vemos como crear la conexión del kp con la plataforma, enviar un mensaje SSAP JOIN para obtener una sessionKey, enviar datos con un mensaje SSAP INSERT y desconectarnos enviando un mensaje SSAP LEAVE:

public Controller( String host, int port ) {
   this.host = host;
   this.port = port;

   MQTTConnectionConfig config = new MQTTConnectionConfig();
   config.setHostSIB(host);
   config.setPortSIB(port);
   config.setTimeOutConnectionSIB(5000);

   this.kp = new KpMQTTClient( config );

   this.kp.connect();

   this.ssapMessageGenerator = new SSAPMessageGenerator();
}
public String joinByToken(String token, String instance) throws Exception {
   try {
      if ( !kp.isConnected() ) {
         kp.connect();
         //Genera Mensaje SSAP LEAVE
         SSAPMessage msg = this.ssapMessageGenerator.generateJoinByTokenMessage(token, instance);

         SSAPMessage retorno = kp.send(msg);

         SSAPBodyReturnMessage retornoBody = SSAPBodyReturnMessage.fromJsonTo(retorno.getBody());
         if (!retornoBody.isOk()) {
            System.out.println(retornoBody.getError());
         } else {
            return retornoBody.getData();
         }
      }
      return kp.getSessionKey();
   } catch (Exception e) {
      throw e;
   }
}

public SSAPMessage insert( String token, String ontology, String message) {
 //Genera Mensaje SSAP INSERT
 SSAPMessage m = ssapMessageGenerator.generateInsertMessage( kp.getSessionKey(), ontology, message );
 SSAPMessage send = this.kp.send( m );
 return send;
}

public void leave() throws Exception {
  if ( kp.isConnected() ) {
  //Genera Mensaje SSAP LEAVE
  SSAPMessage msg = this.ssapMessageGenerator.generateLeaveMessage(kp.getSessionKey());
  //Envia el LEAVE
  SSAPMessage retorno = kp.send(msg);
  //Comprueba la respuesta del SIB
  SSAPBodyReturnMessage retornoBody = SSAPBodyReturnMessage.fromJsonTo(retorno.getBody());
  if ( !retornoBody.isOk() ) {
    throw new Exception( retornoBody.getError());
  }
    kp.disconnect();
  }
}

 

 

API Android

Un comentario en “API Android

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s