Categorías: social

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:


¿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:

 

¿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.

 

Compartir
Publicado por
Adrián Díaz

Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continuas navegando, estás dando tu consentimiento para aceptar las cookies y también nuestra política de cookies (esperemos que no te empaches con tanta cookie 😊)