Download Slides - liminal

Document related concepts
no text concepts found
Transcript
BlueVia
LIMINAL
Si usted quiere desarrollar con Bluevia y Java,
esto es lo primero que debe saber
Mario Linares Vásquez
[email protected]
Junio 30 de 2011
BlueVia
Network as a Service - NaaS
Llamadas.
Mensajes.
Ubicación de los equipos.
Perfil de los usuarios y los equipos.
Facturación.
NaaS: información y servicios de la red
(network intelligence)
son ofrecidos a los usuarios y a terceros.
Network as a Service - NaaS
Que información poseen los operadores de móviles ?
BlueVia
Telco 2.0 business model
Application Service Providers
APIs
Telco
Network as a Service - NaaS
Usuarios
BlueVia
Modelo de desarrollo
REST
OAUTH
SDK para Java
AGENDA
Documentación
MODELO
de desarrollo
BlueVia
en
s
o
i
c
i
v
r
se
n
e
m
u
s
.
con
s
e
a
u
n
q
o
s
s
r
e
pe
ion
e
c
d
a
c
n
i
l
ó
i
p
c
a
a
e
m
d
r
o
o
f
l
l
n
i
o
r
r
e
ad
esa
d
d
e
l
u
e
q
a
s
r
ú
a
p
ob
o
t
a
í
p
r
e
e
c
j
n
a
s
o
n
e
oc
v
m
e
o
u
n
m
o
n
U
,c
a
c
i
n
ó
f
e
l
te
e
d
d
e
r
la
APIs y SDKs
webservices
REST
autorización
OAUTH
Diferentes lenguajes de programación.
BlueVia
OAUTH
• El acceso a los recursos de la
red es autorizado por los
usuarios mediante OAUTH.
Con OAUTH, los datos identidad (login, password)
de los usuarios permanecen privados y no son
compartidos con las aplicaciones BlueVia.
App
SDK
BlueVia
Internet
MMS
Send API
MMS
Receive API
SMS
Receive API
SMS
Send API
Location
API
User
Context
API
Advertising
API
App
SDK
BlueVia
MMS
Send API
MMS
Receive API
SMS
Receive API
SMS
Send API
Location
API
User
Context
API
Advertising
API
REST
Internet
BlueVia
App
BlueVia
MMS
Send API
MMS
Receive API
SMS
Receive API
SMS
Send API
Internet
Location
API
User
Context
API
Advertising
API
BlueVia
SMS Send API
SMS Receive API
MMS Receive API
MMS Send API
Advertising API
User Context API
Location API
BlueVia
Desarrolladores
El modelo de desarrollo, incluye
1. Registro en Bluevia: https://bluevia.com/en/user/register.
2. Obtener API Keys
BlueVia
Desarrolladores
Un API key es requerida por cada aplicación, con el fin de usar las APIS Bluevia.
De acuerdo con el tipo de Key (Test o Comercial) las APIs se pueden utilizar en modo
SANDBOX:
Ambiente para pruebas que no
genera tráfico en la red.
LIVE:
ambiente que usa la red
de telefónica de forma real.
BlueVia
Desarrolladores Bluevia
BlueVia
Desarrolladores Bluevia
BlueVia
Escenarios de desarrollo
Test API Key
Commercial API Key
Sandbox
Fase inicial de desarrollo
Pruebas de la aplicación
Simulación de error
No genera tráfico
Pruebas antes de iniciar el proceso de
acreditación de la aplicación o antes de
subir a una App Store.
Live
Pruebas con desarrolladores registrados
y que tengan crédito
para uso de las APIS.
Transacciones sobre la red de acuerdo
con el modelo comercial seleccionado.
REST
•
representational state transfer.
BlueVia
Métodos protocolo HTTP
Método (Verbo)
Uso
OPTIONS
Retorna los métodos soportados por el servidor
GET
Solicita una representación de un recurso
HEAD
Igual que GET pero sin cuerpo
POST
Envía datos para ser procesados
PUT
Envía una representación de un recurso
DELETE
Elimina el recurso
TRACE
Solicita retorno del mensaje enviado
CONNECT
Convierte el request a un tunel TCP/IP
BlueVia
Códigos de estado HTTP
Código
Descripción
1xx
Información
2xx
Éxito
3xx
Redirección
4xx
Error del cliente
5xx
Error del servidor
BlueVia
Mensaje HTTP - Request
POST /services/REST/SMS/outbound/requests?version=v1 HTTP/1.1
Authorization: OAuth
realm="https://api.bluevia.com",
oauth_consumer_key="Gjqq11099SE",
oauth_token="4bf499a1ecaac050dfaddfef87f99e3a",
oauth_signature_method="HMAC-SHA1",
oauth_signature="8I4319SRY0zLjv15RwqpuF7%2BOso%3D",
oauth_timestamp="1291898799",
oauth_nonce="15339077371968105486410263075"
Content-Type: application/xml
Host: api.bluevia.com:443
<?xml version="1.0" encoding="UTF-8"?>
<tns:smsText >
<tns:address>
<tns1:phoneNumber>524794786537</tns1:phoneNumber>
</tns:address>
<tns:message>This is a text message</tns:message>
<tns:originAddress>
<tns1:alias>4bf499a1ecaac050dfaddfef87f99e3a</tns1:alias>
</tns:originAddress>
</tns:smsText>
BlueVia
Mensaje HTTP - Request
Métod
o
HTTP
POST /services/REST/SMS/outbound/requests?version=v1 HTTP/1.1
Authorization: OAuth
realm="https://api.bluevia.com",
oauth_consumer_key="Gjqq11099SE",
oauth_token="4bf499a1ecaac050dfaddfef87f99e3a",
oauth_signature_method="HMAC-SHA1",
oauth_signature="8I4319SRY0zLjv15RwqpuF7%2BOso%3D",
oauth_timestamp="1291898799",
oauth_nonce="15339077371968105486410263075"
Content-Type: application/xml
Host: api.bluevia.com:443
<?xml version="1.0" encoding="UTF-8"?>
<tns:smsText >
<tns:address>
<tns1:phoneNumber>524794786537</tns1:phoneNumber>
</tns:address>
<tns:message>This is a text message</tns:message>
<tns:originAddress>
<tns1:alias>4bf499a1ecaac050dfaddfef87f99e3a</tns1:alias>
</tns:originAddress>
</tns:smsText>
BlueVia
Mensaje HTTP - Request
Request
URI
POST /services/REST/SMS/outbound/requests?version=v1 HTTP/1.1
Authorization: OAuth
realm="https://api.bluevia.com",
oauth_consumer_key="Gjqq11099SE",
oauth_token="4bf499a1ecaac050dfaddfef87f99e3a",
oauth_signature_method="HMAC-SHA1",
oauth_signature="8I4319SRY0zLjv15RwqpuF7%2BOso%3D",
oauth_timestamp="1291898799",
oauth_nonce="15339077371968105486410263075"
Content-Type: application/xml
Host: api.bluevia.com:443
<?xml version="1.0" encoding="UTF-8"?>
<tns:smsText >
<tns:address>
<tns1:phoneNumber>524794786537</tns1:phoneNumber>
</tns:address>
<tns:message>This is a text message</tns:message>
<tns:originAddress>
<tns1:alias>4bf499a1ecaac050dfaddfef87f99e3a</tns1:alias>
</tns:originAddress>
</tns:smsText>
BlueVia
Mensaje HTTP - Request
Versión
HTTP
POST /services/REST/SMS/outbound/requests?version=v1 HTTP/1.1
Authorization: OAuth
realm="https://api.bluevia.com",
oauth_consumer_key="Gjqq11099SE",
oauth_token="4bf499a1ecaac050dfaddfef87f99e3a",
oauth_signature_method="HMAC-SHA1",
oauth_signature="8I4319SRY0zLjv15RwqpuF7%2BOso%3D",
oauth_timestamp="1291898799",
oauth_nonce="15339077371968105486410263075"
Content-Type: application/xml
Host: api.bluevia.com:443
<?xml version="1.0" encoding="UTF-8"?>
<tns:smsText >
<tns:address>
<tns1:phoneNumber>524794786537</tns1:phoneNumber>
</tns:address>
<tns:message>This is a text message</tns:message>
<tns:originAddress>
<tns1:alias>4bf499a1ecaac050dfaddfef87f99e3a</tns1:alias>
</tns:originAddress>
</tns:smsText>
BlueVia
Mensaje HTTP - Request
Heade
rs
POST /services/REST/SMS/outbound/requests?version=v1 HTTP/1.1
Authorization: OAuth
realm="https://api.bluevia.com",
oauth_consumer_key="Gjqq11099SE",
oauth_token="4bf499a1ecaac050dfaddfef87f99e3a",
oauth_signature_method="HMAC-SHA1",
oauth_signature="8I4319SRY0zLjv15RwqpuF7%2BOso%3D",
oauth_timestamp="1291898799",
oauth_nonce="15339077371968105486410263075"
Content-Type: application/xml
Host: api.bluevia.com:443
<?xml version="1.0" encoding="UTF-8"?>
<tns:smsText >
<tns:address>
<tns1:phoneNumber>524794786537</tns1:phoneNumber>
</tns:address>
<tns:message>This is a text message</tns:message>
<tns:originAddress>
<tns1:alias>4bf499a1ecaac050dfaddfef87f99e3a</tns1:alias>
</tns:originAddress>
</tns:smsText>
BlueVia
Mensaje HTTP - Request
POST /services/REST/SMS/outbound/requests?version=v1 HTTP/1.1
Authorization: OAuth
realm="https://api.bluevia.com",
oauth_consumer_key="Gjqq11099SE",
oauth_token="4bf499a1ecaac050dfaddfef87f99e3a",
oauth_signature_method="HMAC-SHA1",
oauth_signature="8I4319SRY0zLjv15RwqpuF7%2BOso%3D",
oauth_timestamp="1291898799",
oauth_nonce="15339077371968105486410263075"
Content-Type: application/xml
Host: api.bluevia.com:443
Cuerpo
mensadjel
e
<?xml version="1.0" encoding="UTF-8"?>
<tns:smsText >
<tns:address>
<tns1:phoneNumber>524794786537</tns1:phoneNumber>
</tns:address>
<tns:message>This is a text message</tns:message>
<tns:originAddress>
<tns1:alias>4bf499a1ecaac050dfaddfef87f99e3a</tns1:alias>
</tns:originAddress>
</tns:smsText>
BlueVia
Mensaje HTTP – Request/Response
POST /services/REST/SMS/outbound/requests?version=v1 HTTP/1.1
Authorization: OAuth
realm="https://api.bluevia.com",
oauth_consumer_key="Gjqq11099SE",
oauth_token="4bf499a1ecaac050dfaddfef87f99e3a",
oauth_signature_method="HMAC-SHA1",
oauth_signature="8I4319SRY0zLjv15RwqpuF7%2BOso%3D",
oauth_timestamp="1291898799",
oauth_nonce="15339077371968105486410263075"
Content-Type: application/xml
Host: api.bluevia.com:443
Internet
<?xml version="1.0" encoding="UTF-8"?>
<tns:smsText >
<tns:address>
<tns1:phoneNumber>524794786537</tns1:phoneNumber>
</tns:address>
<tns:message>This is a text message</tns:message>
<tns:originAddress>
<tns1:alias>4bf499a1ecaac050dfaddfef87f99e3a</tns1:alias>
</tns:originAddress>
</tns:smsText>
SMS
Send API
HTTP/1.1 201 Created
Location: https://api.bluevia.com/services/REST/SMS/outbound/requests/
10001022134544108250/deliverystatus
Content-Length: 0
BlueVia
REST
Representational State Transfer.
Estilo arquitectónico para aplicaciones distribuidas.
El uso de un conjunto limitado de operaciones, con una
semántica uniforme, es suficiente para construir cualquier
tipo de aplicación.
BlueVia
REST
Representational State Transfer.
• Los estados de un proceso pueden ser modelados como recursos.
• Información semántica sobre los pasos del proceso de negocio
están embebidos en las URIs.
BlueVia
CRUD Web services
Bajo el estilo REST, las operaciones CRUD son suficientes
para construir cualquier tipo de aplicación.
Método HTTP
URI
Uso
GET
/message
Consultar estado
POST
/message/{id}
Crear/enviar
PUT
/message/{id}
Actualizar
DELETE
/message/{id}
Eliminar
BlueVia
CRUD Web services - POST
Servidor
Cliente
POST /services/message HTTP/1.1
….
Host: test.com
http://test.com/services/message
El mensaje
201 Created
Location http://test.com/services/message/12345
400 Bad request
500 Internal error
Exito
Error
BlueVia
URLs para APIs de Bluevia
h"ps://api.bluevia.com/services/REST/SMS/outbound/requests/
10001022145853108719/deliverystatus?version=v1&alt=json
• URI de acceso a Bluevia
BlueVia
URLs para APIs de Bluevia
hDps://api.bluevia.com/services/REST/SMS/outbound/requests/
10001022145853108719/deliverystatus?version=v1&alt=json
• URI de acceso a Bluevia.
• Identificador del API.
BlueVia
URLs para APIs de Bluevia
hDps://api.bluevia.com/services/REST/SMS/outbound/
requests/10001022145853108719/deliverystatus?
version=v1&alt=json
• URI de acceso a Bluevia.
• Identificador del API.
• Operación.
BlueVia
URLs
URLs para
para APIs
APIs de
de Bluevia
Bluevia
hDps://api.bluevia.com/services/REST/SMS/outbound/requests/
10001022145853108719/deliverystatus?version=v1&alt=json
•
•
•
•
URI de acceso a Bluevia.
Identificador del API.
Operación.
Identificador del recurso.
BlueVia
URLs para APIs de Bluevia
hDps://api.bluevia.com/services/REST/SMS/outbound/
requests/10001022145853108719/deliverystatus?
version=v1&alt=json
•
•
•
•
•
URI de acceso a Bluevia.
Identificador del API.
Operación.
Identificador del recurso.
Parámetros.
Mas info en
https://bluevia.com/en/knowledge/APIs.API-Guides
https://bluevia.com/en/knowledge/APIs.API-Reference
BlueVia
URLs para APIs de Bluevia
hDps://api.bluevia.com/services/REST/SMS/outbound/requests/
10001022145853108719/deliverystatus?version=v1&alt=json
•
•
•
•
•
URI de acceso a Bluevia.
Identificador del API.
Operación.
Identificador del recurso.
Parámetros.
Mas info en
https://bluevia.com/en/knowledge/APIs.API-Guides
https://bluevia.com/en/knowledge/APIs.API-Reference
BlueVia
APIs - Formatos de Mensaje
Los mensajes en métodos POST y PUT pueden enviarse utilizando XML, JSON o URL encoded:
POST /services/REST/SMS/outbound/requests?version=v1 HTTP/1.1
Content-Type: application/xml
Host: api.bluevia.com:443
<?xml version="1.0" encoding="UTF-8"?>
<tns:smsText xmlns:tns="http://www.telefonica.com/schemas/UNICA/REST/sms/v1/"
xmlns:tns1=http://www.telefonica.com/schemas/UNICA/REST/common/v1
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.telefonica.com/schemas/UNICA/REST/sms/v1/
UNICA_API_REST_sms_types_v1_0.xsd ">
<tns:address>
<tns1:phoneNumber>52200009</tns1:phoneNumber>
</tns:address>
<tns:message>This is a text message</tns:message>
<tns:originAddress>
<tns1:alias>30c8db243ad31380e90f3fd650af9351</tns1:alias>
</tns:originAddress>
</tns:smsText>
XML
BlueVia
APIs - Formatos de Mensaje
JSON
POST /services/REST/SMS/outbound/requests?version=v1 HTTP/1.1
Content-­‐Type: applicaQon/json
Host: api.bluevia.com:443
{"smsText": {
"address": {"phoneNumber": "52200009"},
"message": "This is a text message",
"originAddress": {"alias": "30c8db243ad31380e90f3fd650af9351"},
}}
POST /services/REST/SMS/outbound/requests?version=v1 HTTP/1.1
Content-­‐Type: applicaQon/x-­‐www-­‐form-­‐urlencoded
Host: api.bluevia.com:443
address.phoneNumber=52200009&message=This+is+a+text
+message&originAddress.alias=30c8db243ad31380e90f3fd650af9351
URL
BlueVia
APIs – Códigos de respuesta y error
Código
Descripción
200 OK
Éxito. Respuesta _pica para GET y DELETE
201 Created
Recurso creado exitosamente (POST, PUT)
202 Accepted
Solicitud aceptada para procesamiento.
204 No Content
Éxito, pero la respuesta no requiere contenido.
Código error
Descripción
400
Mensaje request con formato inválido
401
AutenQcación requerida
403
El servicio no puede cumplir con la solicitud, violación de acuerdos de nivel de servicio.
404
El servicio no puede cumplir con la solicitud, violación de acuerdos de nivel de servicio.
OAUTH
BlueVia
OAUTH
OAUTH permite compartir recursos privados
(fotos, listas de contactos, números de cuentas,
etc) alojados en sitios, de tal forma que otras
aplicaciones los puedan utilizar sin almacenar
o solicitar las credenciales privadas.
Ejemplo: una aplicación para mensajería SMS/MMS por internet requiere una autorización para poder realizar la facturación a nombre del propietario del número que envía el mensaje.
La aplicación no es del proveedor de mensajería
BlueVia
OAUTH - Definiciones
• Proveedor del servicio/Servidor: sitio o web services
donde se encuentran los recursos.
• Usuario : el propietario de los recursos.
• Consumidor/Cliente: la aplicación que quiere acceder
a los recursos.
• Token: mecanismo diferente a las credenciales del usuario,
que son usados para acceder a los recursos.
• Puede ser de tipo Request o Access.
BlueVia
OAUTH
1. Request token
Aplicación
Servidor
2. Solicita autorización
3. Se autentica y da autorización para el acceso
Propietario
BlueVia
OAUTH
4. Access token
5. Acceso a los recursos
BlueVia
OAUTH - Ejemplo
hDp://enviaunsms.com
EnviaUnSMS.com
Su número
Enviar a
Mensaje
Ok
Un usuario quiere enviar un SMS (con cargo a su cuenta)
a través de una aplicación web
BlueVia
OAUTH - Ejemplo
hDp://
EnviaUnSMS.com
Su número
Enviar a
Mensaje
Ok
La aplicación solicita “unathorized request token”
al proveedor del servicio
BlueVia
OAUTH - Ejemplo
hDp://
EnviaUnSMS.com
Su número
Enviar a
Mensaje
Ok
La aplicación redirecciona el flujo a la página del servicio de autorización hDp://autorizando.com
BlueVia
connect
Autorización
Userna
Passwor
hDp://autorizando.
BlueVia
OAUTH - Ejemplo
EnviaUnSMS.com
BlueVia
connect
Autorización
Username
Password
hDp://autorizando.com
El usuario da la autorización
EnviaUnSMS.com
BlueVia
connect
Autorización
Autoriza a enviaunsms.com para
Enviar SMSs ?
BlueVia
OAUTH - Ejemplo
hDp://
EnviaUnSMS.com
Su número
Enviar a
Mensaje
hDp://autorizando.com
La aplicación obQene “authorized request token”
EnviaUnSMS.com
BlueVia
connect
Autorización
Autoriza a enviaunsms.com para
Enviar SMSs ?
BlueVia
OAUTH - Ejemplo
hDp://
EnviaUnSMS.com
Su número
Enviar a
Mensaje
La aplicación solicita un “access token” con el “authorized request token”
BlueVia
OAUTH - Ejemplo
hDp://
EnviaUnSMS.com
Su número
Enviar a
Mensaje
Con el access token, la aplicación solicita al servidor
del proveedor de mensajería, el envío del mensaje
SDK
BlueVia
SDK para Java
BlueVia
SDK para Java
Paquete
Descripción
com.bluevia.examples
Ejemplos de invocación de las APIs
com.bluevia.java.directory
Clases para invocar API – user context
com.bluevia.java.gap
Clases para invocar API -advertisement
com.bluevia.java.location
Clases para invocar API - location
com.bluevia.java.mms
Clases para invocar API - MMS
com.bluevia.java.oauth
Clases para invocar API de autenticación
com.bluevia.java.sms
Clases para invocar API - SMS
com.telefonica.schemas.unica.rest.*
Clases generadas por Java XML binding (JAXB),
para los esquemas de los tipos.
BlueVia
SDK para Java - Funcionalidades
OAUTH
• Solicitar RequestToken y AccessToken.
ADVERTISEMENT
• Consultar un Ad • (un Ad se compone de un elemento creativo y una interacción).
BlueVia
SDK para Java – Ejemplo OAUTH
BlueVia
SDK para Java - Funcionalidades
SMS/MMS
• Envío de SMS/MMS a múlRples desRnos.
• Verificar estado del envío de SMS/MMS:
– La aplicación solicita el envío de noRficaciones sobre el estado.
– La aplicación explícitamente consulta el estado.
Posibles estados: DeliveredToNetwork, DeliveryUncertain, DeliveryImpossible, MessageWaiQng, DeliverdToTerminal, DeliveryNoQficaQonUnsupported.
• Recepción de SMS/MMS por demanda o a través de noRficaciones.
• Recepción de adjuntos en MMS.
BlueVia
SDK para Java – Ejemplo SMS
BlueVia
SDK para Java - Funcionalidades
DIRECTORY/USER CONTEXT
• Consultar información personal del usuario.
• Consultar perfil del usuario.
• Consultar información de la red.
• Consultar información del equipo.
LOCATION
• Consultar información de localización del equipo.
DOCUMENTACIÓN
BlueVia
Documentación
• Guía de inicio
https://bluevia.com/en/knowledge/getStarted
• Guía del desarrollador APIs
https://bluevia.com/en/knowledge/APIs.API-Guides
• Manual de referencia APIs
https://bluevia.com/en/knowledge/APIs.API-Reference
• Documentación propia de cada SDK
Mario Linares Vásquez
[email protected]
GRACIAS
LIMINAL-IT.com