Connect(); 2016

Volumen 31, número 12

Office (Microsoft Graph): puerta de enlace a los datos y a la inteligencia

De Yina Arenas; 2016

Una estrategia clave para Microsoft es "reinventar la productividad" al permitir que los desarrolladores compilen aplicaciones inteligentes centradas en las personas en la plataforma Microsoft, para que los usuarios puedan disfrutar más del trabajo y la vida.

Nuestra manera de trabajar está evolucionando rápidamente. Parece ser que las personas siempre están conectadas y que esperan aplicaciones que les ayuden con la tarea que les ocupa, en el momento y el sitio exactos en que las necesitan y con el contexto pertinente que pueda aprovechar de manera inteligente los datos disponibles para realizar conexiones significativas entre personas e información, así como usar de forma productiva el tesoro más preciado: el tiempo.

Imagine una aplicación que pueda examinar su siguiente reunión y ayudarle a prepararla, como proporcionarle información del perfil de los asistentes que incluya no solo sus puestos, sino también sus compañeros e información sobre los documentos o proyectos más recientes en que trabajan.

O bien, imagine una aplicación que no solo tenga acceso a su calendario, sino que además sugiera un mejor horario para la siguiente reunión de equipo.

¿Qué le parecería una aplicación que pueda obtener el gráfico de proyección de ventas más reciente de un archivo de Excel de OneDrive y le permita actualizar la previsión en tiempo real desde su teléfono móvil?

¿Le gustaría tener una aplicación que se pueda suscribir a los cambios en su calendario, alertarle de cuándo dedica demasiado tiempo a reuniones y ofrecerle recomendaciones para las reuniones que se podría saltar o podría delegar según la importancia de sus asistentes?

¿Usaría una aplicación que puede ayudarle a ordenar la información laboral y personal de su teléfono, como las imágenes que deberían ir a OneDrive porque son imágenes de sus hijos y las imágenes que deberían ir a OneDrive para la Empresa, porque son recibos de un informe de gastos?

Todos estos ejemplos de aplicación pueden ofrecerse fácilmente con tecnología de Microsoft Graph.

Oportunidades sin precedentes para desarrolladores

En una época en que la información es abundante, sabemos que las personas buscan experiencias integradas que les ayuden a aprovechar muchos orígenes de datos y a conectar la información de varios puntos de contacto de maneras significativas. En este contexto, Microsoft Graph es la herramienta clave, ya que permite a los desarrolladores crear aplicaciones basadas en la nube eficaces y personalizadas que pueden transformar el panorama de la productividad.

Si observa la gran cantidad de datos disponibles para desarrolladores, verá que aproximadamente hay 850 millones de reuniones de Outlook programadas al mes y más de 100 millones de estas son reuniones de Skype. Hasta ahora, se han enviado 4 trillones de correos electrónicos usando Office y se han almacenado cientos de petabytes de datos en Office 365. Los usuarios usan Office en una media de dos o tres horas al día y, ahora que las aplicaciones de Office son móviles, estas ya han superado los 340 millones de descargas; esta cifra era imposible hace solo dos años.

Microsoft Graph: simplificación de la integración

Microsoft Graph (graph.microsoft.com) se creó para satisfacer la demanda de los usuarios de ofrecer experiencias contextuales inteligentes y para facilitar la dificultad que tienen los desarrolladores de integrar con los servicios Microsoft uno por uno para crearlas. Microsoft Graph es la puerta de enlace unificada para que los desarrolladores obtengan acceso a todos los datos, inteligencia y API hospedadas en la nube inteligente de Microsoft, como Exchange, SharePoint, Azure Active Directory, OneDrive, Outlook, OneNote, Planner, Excel, etc. Microsoft Graph también incluye datos calculados y relaciones avanzadas basadas en el aprendizaje automático que realiza su motor inteligente. Puede disponer de todo esto mediante el mismo punto de conexión de API de REST, que ofrece una experiencia para desarrolladores mucho más simple entre todas las API de Microsoft, al agruparlas a todas en un solo espacio de nombres de URI con una sola autenticación.

El motivo por el que Microsoft Graph es tan importante es porque los datos que hay en Office 365 (la jerarquía organizativa, el calendario, el buzón, los archivos, etc.) son los pilares de las organizaciones y de cómo la gente realiza sus tareas. Además, cuanto más fácil sea para las aplicaciones aprovechar todos los datos, más inteligentes serán y proporcionarán mejores experiencias para los usuarios.

Tal y como se muestra en la Figura 1, Microsoft Graph agrega información de varios servicios y la pone a disposición en la aplicación en una sola solicitud. Los desarrolladores pueden compilar experiencias centradas en grupos y usuarios que ayuden a los usuarios a lograr más resultados. Un ejemplo: una aplicación de productividad que le ofrece el perfil y la imagen de todas las personas con las que está a punto de reunirse y que puede indicarle la estructura organizativa y los temas que estas personas consideran importantes. No importan el lugar en el que estén almacenados los datos; con Microsoft Graph, obtiene un solo punto de conexión para obtener acceso a ellos.

Microsoft Graph permite a las aplicaciones obtener acceso al trabajo digital y a los datos dinámicos digitales
Figura 1 Microsoft Graph permite a las aplicaciones obtener acceso al trabajo digital y a los datos dinámicos digitales

Microsoft Graph también puede usarse para atravesar datos entre servicios para permitir escenarios de contenido avanzados. Un ejemplo: una aplicación educativa que modela clases en torno a grupos y permite que el profesor realice un seguimiento de los documentos que los estudiantes envían para sus proyectos, vea quién modificó los archivos, controle su colaboración y progreso y entable conversaciones sobre temas importantes para la clase.

Acceso a la inteligencia

Microsoft Graph presenta información inteligente al reunir algoritmos inteligentes de Machine Learning con una gran cantidad de datos y comportamientos del usuario. Al usar Microsoft Graph, los desarrolladores pueden obtener acceso a estos datos pertinentes para que las aplicaciones sean contextuales y más inteligentes. Por ejemplo: los controles de selección de personas con tecnología de People API de Microsoft Graph, en los que al aprovechar la funcionalidad de coincidencia aproximada, no es necesario que los usuarios recuerden cómo se escriben algunos apellidos complicados y pueden obtener acceso a los datos solo recordando cómo suenan fonéticamente. Imagine una aplicación de ventas en la que el representante de ventas pueda obtener rápidamente la información de contacto de su cliente y la tenga disponible cuando la necesite. ¿Cuántas veces ha olvidado cómo escribir un nombre y ha tenido que ir combinando para buscar el contacto según otras palabras clave?

Otro ejemplo de la inteligencia de Microsoft Graph es su capacidad de obtener documentos de tendencia. Microsoft Graph escucha señales y actividades, como cargas de archivos, vistas y modificaciones de archivos, conversaciones por correo electrónico, etc. Luego, usa su motor inteligente para calcular relaciones avanzadas e información inferida entre personas y documentos. Cuando un archivo pasa a ser popular en su círculo, Microsoft Graph crea información de tendencia; esta luego pasa a disposición de las experiencias contextuales eficaces como Delve en Office 365 y, ahora, también está disponible como una API en Microsoft Graph.

Alcance a millones de usuarios

Microsoft Graph también es el punto de conexión unificado para las nubes comerciales y de consumidores. Las líneas entre la productividad personal y laboral cada vez están más difuminadas. Esa aplicación que puede ordenar sus fotos personales y del trabajo en OneDrive y OneDrive para la Empresa se puede escribir con una sola base de código y un solo registro de aplicación con Microsoft Graph. Esto significa que los desarrolladores pueden usar este único punto de conexión y el mismo código para obtener acceso a los datos personales hospedados en Outlook.com, Hotmail.com, Live.com y otras cuentas personales en Microsoft Cloud, así como a datos del trabajo y la escuela que residen en las cuentas de Office 365 y Azure Active Directory. Por lo tanto, con Microsoft Graph, usará el mismo código con un solo registro de aplicación y un solo flujo de autenticación.

Además de ser el punto de conexión unificado para los servicios comerciales y de consumidor, Microsoft Graph también es el punto de conexión unificado para las implementaciones independientes. Microsoft anunció la disponibilidad general de Microsoft Graph este año en China. Esta noticia ha reforzado el ecosistema de ISV en China y ha permitido a los ISV compilar aplicaciones más inteligentes para el mercado chino. A medida que más nubes independientes están disponibles en otros mercados, Microsoft Graph se convierte en la puerta de enlace para obtener acceso a sus datos.

Además, Microsoft Graph quiere reducir las diferencias de la programación entre la nube y el entorno local. En la versión preliminar actual, Microsoft Graph puede establecer comunicación con buzones de Exchange 2016 hospedados en entornos locales para clientes con implementaciones híbridas. Desde la perspectiva de desarrollo, el código puede ser independiente respecto a la procedencia de los datos y el mismo código puede obtener datos de un buzón en la nube (ya sea un buzón de Office 365 o de Outlook.com/Hotmail.com) o local. Microsoft Graph se dedica a buscar el lugar en el que se hospedan los datos y a recuperarlos para la aplicación.

Microsoft Graph es la base de la plataforma Office

Microsoft Graph modifica el panorama del trabajo y la productividad para el departamento de TI, los usuarios y los desarrolladores. Para el departamento de TI, las aplicaciones son más fáciles de implementar y de administrar gracias a su integración con Graph y a la seguridad del acceso a los datos. Para los usuarios, las aplicaciones son más inteligentes, avanzadas y contextuales. Para los desarrolladores, Microsoft Graph aporta un valor increíble al reducir el tiempo de desarrollo y facilitar la integración con los datos y la inteligencia.

Actualmente, las empresas innovadoras están transformando el trabajo y la productividad mediante Microsoft Graph. Por ejemplo:

  • Zapier: usa Microsoft Graph para aprovechar los datos de Excel y permitir a los usuarios la creación de flujos de trabajo personales o "zaps" eficaces que automaticen la colección de datos en Excel y los integren con otros servicios en la nube. Esta integración no era posible antes de Microsoft Graph y su API de REST de Excel.
  • Smartsheet: se integra con Microsoft Graph en Outlook para proporcionar a los usuarios de Outlook la capacidad de interactuar con hojas y proyectos de Smartsheet directamente desde la experiencia de Outlook, mientras aprovechan los datos de OneDrive y otros servicios.
  • SkyHigh Networks: aprovecha Microsoft Graph para permitir que los equipos de seguridad mejoren la visibilidad de los datos confidenciales, apliquen la directiva de prevención de pérdida de datos a los usuarios o grupos e identifiquen o alerten el comportamiento de alto riesgo.
  • Hyperfish: una empresa totalmente nueva que permite que las organizaciones identifiquen y rellenen automáticamente la información que falta en el perfil de los usuarios de forma rápida y fácil. Convierte tarjetas de personas en blanco en tarjetas completas que permiten conexiones de personas más rápidas.
  • Workday: usa Microsoft Graph para integrarse con los grupos de Office 365 de manera que, cuando un empleado inicia una nueva posición en la organización, todos los cambios de la jornada laboral se reflejan automáticamente en los grupos de Office 365 y el empleado obtiene acceso inmediato a todos los eventos, conversaciones y documentos.

La API

Microsoft Graph usa estándares web que permiten que cualquier dispositivo sea capaz de crear una solicitud HTTP para interactuar con ella. Se trata de una API RESTful que sigue las guías de la API de REST de Microsoft publicadas recientemente en la comunidad de API y disponibles en bit.ly/2dzFp1a. Muchas partes de las guías de la API de REST de Microsoft evolucionaron de los ejercicios de estandarización y racionalización para unificar las API de servicio existentes, así como sus esquemas y puntos de conexión directos, con el fin de que pudieran participar en Microsoft Graph. Escribí personalmente la primera propuesta de las convenciones de nombres y el uso de mayúsculas y minúsculas que apareció en las guías y que formó parte de largos debates internos sobre API entre más de 15 equipos de Microsoft que colaboraron en la creación de Microsoft Graph.

Microsoft Graph admite un conjunto completo de parámetros de consulta como select, filter, expand y orderBy, que se pueden usar para especificar y controlar la cantidad de datos devueltos en la respuesta. Microsoft Graph también tiene un conjunto creciente de SDK para dispositivos y servicios, de modo que puede incorporar rápidamente los datos de Microsoft Graph en su aplicación, independientemente de si trabaja en aplicaciones para iOS, Android o la Plataforma universal de Windows (UWP), crea un sitio web de Azure de .NET o compila un servicio con Node.js, Python, PHP o Ruby.

Introducción a Microsoft Graph

Así pues, ¿cómo puede sacar provecho de Microsoft Graph? Empiece navegando a graph.microsoft.io. Este vínculo le llevará al portal para desarrolladores, en el que encontrará experiencias de inicio rápido que pueden impulsar su desarrollo y, en menos de cinco minutos, tendrá una aplicación en funcionamiento en la plataforma que quiera llamando a Microsoft Graph.

En el portal para desarrolladores de Microsoft Graph, también encontrará documentación, referencias de API completas y un conjunto completo de SDK y ejemplos de código de varias plataformas, así como el explorador de Graph. Con el explorador de Graph, podrá enviar solicitudes a Microsoft Graph e inspeccionar la respuesta inmediatamente con su cuenta personal, cuenta profesional o educativa o incluso una cuenta demo. En la Figura 2 se muestran algunas solicitudes de ejemplo que exponen el tipo de datos al que se puede obtener acceso con Microsoft Graph. Los datos se pueden leer, crear, actualizar y eliminar con las API. Puede probar fácilmente todas estas solicitudes y más con el explorador de Graph.

Figura 2 Solicitudes de ejemplo en Microsoft Graph

Operación Punto de conexión de servicio
Obtener mi perfil https://graph.microsoft.com/v1.0/me
Obtener mis archivos https://graph.microsoft.com/v1.0/me/drive/root/children
Obtener mi foto https://graph.microsoft.com/v1.0/me/photo/$value
Obtener mi correo https://graph.microsoft.com/v1.0/me/messages
Obtener mi calendario https://graph.microsoft.com/v1.0/me/calendar
Obtener mi administrador https://graph.microsoft.com/v1.0/me/manager
Obtener el último usuario en modificar el archivo foo.txt https://graph.microsoft.com/v1.0/me/drive/root/children/foo.txt/lastModifiedByUser
Obtener usuarios en mi organización https://graph.microsoft.com/v1.0/users
Obtener conversaciones de grupo https://graph.microsoft.com/v1.0/groups/<id>/conversations
Obtener personas importantes para mi https://graph.microsoft.com/beta/me/people
Obtener mis tareas https://graph.microsoft.com/beta/me/tasks
Obtener mis notas https://graph.microsoft.com/beta/me/notes/notebooks
Obtener archivos de tendencia en torno a mí https://graph.microsoft.com/beta/me/insights/trending

 

Ahora examinaré Microsoft Graph con más detalle. Debe empezar mediante el vínculo Introducción de graph.microsoft.io para crear una aplicación web de ASP.NET MVC que use el SDK de .NET de Microsoft Graph para enviar correos en nombre del usuario. A continuación, debe mejorarla con una llamada adicional a la API de OneDrive expuesta en Microsoft Graph para consultar los archivos recientes del usuario.

Después de navegar a la página Introducción y de interactuar con la experiencia de prueba, navegue a la parte inferior de la página y seleccione el punto de entrada ASP.NET MVC.

El siguiente paso consiste en seguir los vínculos para registrar la aplicación. Recuerde que debe copiar el "secreto" y guardarlo ya que no se le volverá a presentar. Después de este proceso, obtendrá un paquete .zip con el proyecto. Extraiga los archivos, abra el proyecto en Visual Studio, compílelo y ejecútelo. Si necesita realizar actualizaciones o cambios en la aplicación registrada, puede hacerlos en apps.dev.microsoft.com.

Esta experiencia de inicio rápido aprovecha el código de ejemplo, inserta el id. de aplicación y el secreto en el archivo web.config y deja el proyecto listo para que lo ejecute. La aplicación de ejecución es la aplicación web resultante de ASP.NET 4.6 MVC que se conecta a una cuenta personal (Microsoft) o profesional o educativa de Microsoft (Azure Active Directory) que usa la API de Microsoft Graph para enviar un correo electrónico. Usa el SDK de .NET de Microsoft Graph para trabajar con los datos que devuelve Microsoft Graph.

Ahora que ya tiene el proyecto en funcionamiento, deberá agregar las llamadas a la API de OneDrive para obtener la lista de elementos que ha usado recientemente el usuario con la sesión iniciada. Esta lista incluye los elementos que están en las unidades del usuario, así como los elementos a los que tiene acceso desde las otras unidades.

El primer paso consiste en modificar el archivo web.config para agregar el ámbito de permiso Files.Read con el fin de conceder a la aplicación acceso de lectura a OneDrive del usuario. En el archivo web.config, busque la clave ida:GraphScopes en el elemento appSettings y agregue Files.Read a la cadena de valor. La siguiente vez que el usuario inicie la aplicación, el servicio identificará el nuevo ámbito y solicitará dinámicamente al usuario su consentimiento:

<appSettings>
  ...
  <add key="ida.GraphScopes" value="User.Read Mail.Send Files.Read" />
</appSettings>

A continuación, deberá modificar el controlador. Abra HomeController.cs en la carpeta Controladores; esta clase contiene las acciones que inicializan el SDK de .NET de Microsoft Graph como respuesta a los eventos de la UI. Agregue el método de la Figura 3 para obtener los 10 elementos principales más recientes de OneDrive.

Figura 3 Adquisición de los 10 elementos principales más recientes de OneDrive

[Authorize]
// Get the items that are shared with the current user.
public async Task<ActionResult> GetMyRecentItems()
{
  try
    {
      // Initialize the GraphServiceClient.
        GraphServiceClient graphClient = SDKHelper.GetAuthenticatedClient();
        // Get the recent items.
        ViewBag.RecentItems =
          await graphClient.Me.Drive.Recent().Request().Top(10).GetAsync();
        return View("Graph");
      }
      catch (ServiceException se)
      {
        if (se.Error.Message ==
          Resource.Error_AuthChallengeNeeded) return new EmptyResult();
        return RedirectToAction("Index", "Error", new { message =
          string.Format(Resource.Error_Message, Request.RawUrl,
          se.Error.Code, se.Error.Message) });
      }           
}

Observe la instrucción [Authorize] antes del método. Es para garantizar que esta solicitud iniciará un inicio de sesión si el usuario aún no lo ha hecho.

Finalmente, actualice la vista Graph.cshtml en la carpeta Vistas para que incluya un botón que desencadene la solicitud y las etiquetas DIV para representar el nombre del elemento y el nombre del usuario que creó el elemento para cada uno de los elementos de la lista devuelta. Para hacerlo, anexe el código de la Figura 4 al final del archivo.

Figura 4 Actualizar la vista Graph.cshtml en la carpeta Vistas

<h2>Recent OneDrive Items</h2>
@using (Html.BeginForm("GetMyRecentItems", "Home"))
{
  <div class="col-sm-12">
    <div class="form-group">
      <button class="btn btn-default">Get Recent OneDrive Items</button>
    </div>
  </div>
}
<div class="col-sm-12">
  <label for="recent-items">Recent Items</label>
  @if (ViewBag.RecentItems != null)
  {
    foreach (var item in ViewBag.RecentItems)
    {
      <div class="row">
        <div class="col-sm-4">@item.Name</div>
        <div class="col-sm-8">@item.CreatedBy.User.DisplayName</div>
      </div>
    }
  }
</div>

El resultado es una aplicación web ASP.NET 4.6 MVC que se conecta a Microsoft Graph y que pueden usar los usuarios con las cuentas profesionales o educativas de Microsoft (Azure Active Directory) o con las cuentas personales (Microsoft) para enviar un correo electrónico desde su buzón Outlook.com o Office 365 y obtener acceso a los datos de OneDrive o OneDrive para la Empresa. Este es un ejemplo simple que ilustra la facilidad con que se pueden obtener datos de Microsoft Cloud con Microsoft Graph, tanto si esos datos proceden de Azure Active Directory, SharePoint, OneDrive, Exchange, Outlook.com, Planner, OneNote, Excel u otros servicios.

Imagine las aplicaciones que puede compilar. Microsoft trabaja para aumentar el número de servicios y funcionalidades disponibles en Microsoft Graph, al profundizar en su comprensión de la actividad del usuario para crear inferencias y relaciones más avanzadas y al simplificar la experiencia del desarrollador para que pueda obtener acceso a todos estos datos desde una sola API conectada.

Se trata de una oportunidad masiva para los desarrolladores, que pueden aprovechar todos estos datos e inteligencia con Microsoft Graph. Esto lo indica la dinámica generada en torno a Microsoft Graph desde que se lanzó en noviembre de 2015. Microsoft ha observado una enorme aceptación en el número de aplicaciones registradas, organizaciones que aceptan aplicaciones que usan Microsoft Graph y el uso activo del usuario final de estas aplicaciones. Algunas de estas aplicaciones compiladas con Microsoft Graph ya alcanzan millones de usuarios activos a diario.

Resumen

Con Microsoft Graph, los desarrolladores pueden compilar aplicaciones inteligentes centradas en las personas que pueden interactuar fácilmente con los datos desde todos los puntos de contacto del trabajo moderno. Permite que los desarrolladores aprovechen la increíble cantidad de datos de los servicios en la nube de Microsoft para compilar aplicaciones más inteligentes y ayudar a aumentar la productividad de los usuarios. Microsoft Graph expone API, datos e inteligencia en Office 365 y Azure Active Directory. Microsoft está planeando un futuro cercano en el que varios gráficos y todas las API de Microsoft contribuirán a (y serán accesibles a través de) una única puerta de enlace unificada hacia la eficacia de Microsoft Cloud. Esto se traduce en el ecosistema que ayuda a reinventar la productividad al crear experiencias rápidas en todas las soluciones verticales del sector. Abre un futuro en el que los desarrolladores podrán remodelar la asistencia sanitaria, la educación, las finanzas, la legislación y muchos otros sectores; las posibilidades son infinitas. Tengo muchas ganas de ver qué compila con Microsoft Graph.


Yina Arenas es administradoras de programas principal en Microsoft y responsable de Microsoft Graph. Lleva las API de Microsoft y Office de las tecnologías inconexas y heredadas a un nuevo mundo de API unificadas. Reside en la zona de Seattle con su marido y sus tres dinámicos hijos; lidera y participa de forma activa en actividades dirigidas a aumentar el número de mujeres, además de retenerlas y promoverlas en la tecnología. Puede encontrarla en Twitter: @yina_arenas.

Gracias a los siguientes expertos técnicos de Microsoft por revisar este artículo: Agnieszka Girling, Gareth Jones y Dan Kershaw
Agnieszka Girling, Gareth Jones y Dan Kershaw son administradores de programas principales del equipo de Microsoft Graph que, junto con Yina Arenas, ayudan a diseñar la API y son responsables de todas las elecciones de diseño y dirección técnica de la API más estratégica de Microsoft.