Arquitectura, buenas prácticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016

SharePoint: subir una imagen al Feed Social

A pesar de las características sociales que tiene SharePoint, éste ya no es la opción más recomendada por Microsoft ni por ENCAMINA para hacer uso de esas características sociales. Aún así, existen algunos casos en los que los requerimientos del usuario hacen que tengas que utilizarlas.

SharePoint en la versión 2013, viene cargado con muchas novedades sociales (MySite, Follow, Comunidades…), aunque (lamentablemente) insuficientes cómo para montar una red social ENTERPRISE. Sin embargo, estas características que vienen de serie las podemos extender y las podemos utilizar para conseguir los requisitos del usuario.

En este post, vamos a ver cómo podemos subir una imagen directamente al Feed de SharePoint, algo que pude parecer trivial pero que no lo es.

Nuestro Desarrollo

Nuestro objetivo es disponer de un WebPart en el que tengamos un caja de texto, podamos adjuntar una única imagen (ya que solamente el feed soporta un único fichero) y al pulsar sobre un botón automáticamente nos los suba y almacene dentro del Feed. Algo similar a lo que tiene todas las redes sociales:

Post1
¿Qué API podemos escoger?

Muchas veces nos hemos cansado de decir que SharePoint tiene multitud de opciones para realizar una misma acción. En esta ocasión, es uno de los pocos casos en los que solamente se puede utilizar haciendo uso del modelo de objetos de servidor. Vayamos por partes y veamos por qué no podemos utilizar estos métodos en cada una de las opciones:

  • REST: no tiene extremo que lo soporte, aunque Microsoft en su documentación indica que sí tiene acceso y con un formato similar al resto de opciones. Probando todas las opciones posibles y no posibles, no lo hemos encontrado. También haciendo uso del complemento SPAPI Remote Explorer implementado por Steve Curran MVP de SharePoint indica que no es posible.
  • JSOM: Haciendo uso del modelo de objetos JavaScript según la documentación oficial hay un método como el siguiente:
     SP.Social.SocialFeedManager.createImageAttachment(name, description, imageData)
    

    *Según la documentación, los parámetros que espera son de tipo string, string y Stream. y este tipo no existe en JavaScript . Supusimos que sería una errata e intentamos pasar como parámetro un array de bytes, el propio fichero recogido en el navegador. Pero el resultado no fue el esperado. No tuvimos éxito.

Dado que de las otras dos opciones no ha sido posible, hemos tenido que utilizar el modelo de objetos de servidor. Los principales motivos por los que no queríamos utilizar este modelo son:

  • No funciona para Office 365
  • Necesidad de generar un servicio para realizar esta acción ya que para el renderizado de la red social se hace uso de los estándares web HTML5, CSS3 y JS

Implementación

En primer lugar, a nuestro proyecto le añadimos las siguientes librerías:

  • Microsoft.Office.Server
  • Microsoft.Office.Server.Profile

A continuación, añadimos un handler (la elección de hacer uso de un fichero .ashx debido a que solamente va a tener un método y es para algo puntual). En este caso, lo primero que debemos de hacer es verificar si se ha enviado el fichero . En caso de que se haya enviado correctamente, almacenarlo en una variable:

 if (context.Request.Files.Count > 0)
            {
                file = context.Request.Files[0];
            }

Seguido, agregamos esta imagen al feed haciendo uso de función CreateImageAttachment:

var post = new SPSocialPostCreationData();
            var feed = new SPSocialFeedManager();

            if (file != null)
            {
                var atachment = feed.CreateImageAttachment(file.FileName, string.Empty, file.InputStream);
                post.Attachment = atachment;
            }

y, después, subimos el post al feed de SharePoint:

  post.ContentText = "Estamos haciendo una prueba";
 var socialThead = feed.CreatePost(null, post);
  

 

En ENCAMINA, el resultado que hemos obtenido pasado por nuestro departamento de Diseño y UX ha sido el siguiente:

Test

 

¿Qué te parece? ¿A qué está chulo?

 

Conclusión

Hay en ocasiones en la que los requisitos de negocio no facilitan la mejor opción posible y, en esos momentos, es cuando debemos de ver todas las posibilidades que trae la plataforma y sacarle todo el jugo. Quizás Sharepoint no trae de serie la mejor red social posible, pero con esfuerzo y con mucho conocimiento de la plataforma se pueden lograr grandes resultados.

 

mm

Sobre Adrián Díaz

Adrián Díaz es Ingeniero Informático por la Universidad Politécnica de Valencia. Es MVP de Microsoft en la categoría Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnologías Microsoft más de 10 años y desde hace 3 años está centrado en el desarrollo sobre SharePoint. Actualmente es Software & Cloud Architect Lead en ENCAMINA.
Esta entrada ha sido publicada en social y etiquetada como , , . Enlace permanente .
Suscríbete a Desarrollando sobre SharePoint

Suscríbete a Desarrollando sobre SharePoint

Recibe todas las actualizaciones semanalmente de nuestro blog

You have Successfully Subscribed!

ENCAMINA, piensa en colores