En el post de hoy voy a contar diversos «tips» para facilitar un poco la vida en la primera toma de contacto con la API Social de SharePoint
Si analizamos las opciones que nos da, vemos una gran cantidad de opciones como las siguientes:
Es decir, SharePoint incluye todos los ingredientes de base que tiene una Red Social, y lo mejor de todo es que los podemos utilizar para nuestro beneficio. Pero como no es oro todo lo que reluce, no todo es realizar llamadas a la API Rest.
Tip 1
¿Como hacemos para enviar una mención al publicar un post? La primera idea que se nos viene a la cabeza es incluirla en el texto que voy a enviar si añado la @ y pongo el nombre de usuario, con eso funciona fijo. Si lo comprobáis os daréis cuenta de que SharePoint no es tan listo. Bueno, en parte si que tiene esa inteligencia, pero para ello cuando nosotros enviemos un post en el que vamos a realizar una mención, tendremos que realizar una modificación en la llamada Rest e indicarle que dentro de los valores que se envían se realiza una mención, tal y como se muestra en nuestro código:
Name = followers[id]; Name = remplazar(Name, '#', '%23'); valor = "@{0} " + valor; var feedManagerEndpoint = appweburl + "/_api/social.feed"; $.ajax({ url: feedManagerEndpoint + "/actor(item=@v)/Feed/Post?@v='" + Name + "'", type: "POST", data: JSON.stringify({ 'restCreationData': { '__metadata': { 'type': 'SP.Social.SocialRestPostCreationData' }, 'ID': null, 'creationData': { '__metadata': { 'type': 'SP.Social.SocialPostCreationData' }, 'ContentItems': { 'results': [ { '__metadata': { 'type': 'SP.Social.SocialDataItem' }, 'AccountName': followers[id], 'ItemType': 0, 'Uri': null } ] }, 'ContentText': valor, 'UpdateStatusText': false } } }), headers: { "accept": "application/json;odata=verbose", "content-type": "application/json;odata=verbose", "X-RequestDigest": digest }, success: function () { }, error: function (xhr, ajaxOptions, thrownError) { alert("POST error:\n" + xhr.status + "\n" + thrownError); } });
Tip 2
Otra de las cosas curiosas que nos encontramos cuando empezamos a jugar con la API Rest y es que por defecto cuando nosotros solicitamos la información de un determinado POST, si este tiene muchas respuestas solo nos trae dos. ¿Porqué?
Este funcionamiento está enfocado a la nueva forma de desarrollar en la que solo pedimos lo que vamos a utilizar y cuanta menos información se envie, pues mucho mejor. En casi todas las redes sociales esto funciona como si fuera un estándar: en las conversaciones con más de 3 respuestas se agrupan y solo se muestran las dos últimas respuestas:
Si ya queremos profundizar sobre el contenido de la conversación, tenemos que pulsar encima del texto para leer la información completa. Para ello, en la API REST tenemos dos opciones, por un lado, ésta consulta en la que solo se muestran dos respuestas como mucho:
var feedManagerEndpoint = appweburl + "/_api/social.feed"; $.ajax({ url: feedManagerEndpoint + "/actor(item=@v)/Feed/Post?@v='" + Name + "'", type: "POST", data: JSON.stringify({ 'restCreationData': { '__metadata': { 'type': 'SP.Social.SocialRestPostCreationData' }, 'ID': null, 'creationData': { '__metadata': { 'type': 'SP.Social.SocialPostCreationData' }, 'ContentText': valor, 'UpdateStatusText': false } } }), headers: { "accept": "application/json;odata=verbose", "content-type": "application/json;odata=verbose", "X-RequestDigest": $("#__REQUESTDIGEST").val() }, success: getMyFeed(selectFollow), error: function (xhr, ajaxOptions, thrownError) { alert("POST error:\n" + xhr.status + "\n" + thrownError); } });
Ahora bien, si lo que queremos es obtener todo el contenido de un determinado post podemos obtenerlo realizando la siguiente acción:
//http://<mySiteUri>/_api/social.feed/Post sel = id; var feedManagerEndpoint = appweburl + "/_api/social.feed"; $.ajax({ url: feedManagerEndpoint + "/Post", type: "POST", data: JSON.stringify({ 'ID': guidPost[id] } ), headers: { "accept": "application/json;odata=verbose", "content-type": "application/json;odata=verbose", "X-RequestDigest": $("#__REQUESTDIGEST").val() }, success: feedPost, error: function (xhr, ajaxOptions, thrownError) { alert("POST error:\n" + xhr.status + "\n" + thrownError); } });
Como podemos ver, la única diferencia entre uno y otro es que le enviamos el ID del Post que queremos ver y en otro obtenemos toda la información de todos los post.
Tras estos dos artículos hemos comprobado que los aspectos sociales que hay en SharePoint son muy útiles para los desarrolladores y que también le podemos sacar mucho valor añadido a lo que ya viene por defecto en SharePoint.
En los próximos días espero que se publique una aplicación en la Office Store llamada FollowTalk en la que podremos ver todas estas características en funcionamiento y que posteriormente la iremos completando con muchas más utilidades.
Referencia
Msdn: http://msdn.microsoft.com/en-us/library/dn155789.aspx
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 😊)