Notificaciones de estado de Apps de Apple Store en Slack

En tumeteo estamos adoptando Slack como sistema centralizado de información, y una de las primeros canales que hemos creado en el proyecto es el de “stores”, donde queremos tener de un vistazo el estado de las apps, versiones publicadas y cualquier notificación desde las tiendas de cada plataforma (iOS, Android y Windows).    Se nota el empuje de Javier (@javieralvear_) que desde Sydney viene con aires y fuerzas renovadas.

Así que nos hemos creado unos scripts que revisen nuestra cuenta de gMail donde recibimos las notificaciones, y mande al canal “stores” los emails que nos manda cada tienda con el cambio de estado de cada App.

Seguro que a muchos de vosotros os parece interesante y le podéis sacar mucho jugo para situaciones parecidas.

 

Doy por supuesto que sabéis crear un “hook” de Slack y que sabéis crear Scripts de Google Apps. SI no es el caso, decídmelo por los comentarios y os digo como en cada caso.

Os dejo el script que ahora mismo, revisa la cuenta de gMail en busca de las notificaciones de la App Store indicando los cambios de estado de las Apps de iOS que Marcos (@marcdaywalker) va subiendo:

var postUrl = "https://hooks.slack.com/services/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";
var postChannel = "#stores";
var msgsToCheck = "Your app status is";
var senderToCheck = "no_reply@email.apple.com";

function postGmailToSlack() { 
   var threads = GmailApp.getInboxThreads();
   for(var i in threads) {
      var subject = threads[i].getFirstMessageSubject();

      if (subject.substring(0, msgsToCheck.length) == msgsToCheck) {
 
         var emailMsgsInThread = threads[i].getMessages();
         for (im = 0; im < emailMsgsInThread.length; im++) { 
            var m = emailMsgsInThread[im];
           
            if (m.getFrom().indexOf(senderToCheck)>=0) {

               // Ok, the msg is from Apple and is about the App status
 
               var body = m.getPlainBody();
 
               sendHttpPost(threads[i].getFirstMessageSubject() + "nn" + 
                  body, "Apple Store");
 
               m.moveToTrash();

            } // end if sender
         } // end for mails in thread
      } // end if subject
   } // end for theads
} // end function
 

function sendHttpPost(message, username) {
   var jsonData = {
      "channel" : postChannel,
      "username" : username,
      "icon_emoji": ":ghost:",
      "text" : message
   };
   var payload = JSON.stringify(jsonData);
   var options = {
      "method" : "post",
      "contentType" : "application/json",
      "payload" : payload
   };

   UrlFetchApp.fetch(postUrl, options);
}

 

Referencias