Från labbet

Prototyp Sound Service

En ljudtjänst som gör det möjligt att spela upp ljud, musik eller att skapa text-till-tal-meddelanden som hörs på alla våra kontor samtidigt genom våra Sonos-högtalare. Tjänsten styrs av en Slackbot.

Tech used

  • Sonos web API
  • Slack API
  • Ruby on Rails

Press to view video

Bakgrund och problem

I år var Prototypveckan speciell eftersom det var första gången vi alla träffades fysiskt sedan pandemins början; så vi hade väntat över två år på detta! Det blev väldigt tydligt att många saknat att träffas då de flesta prototyper som togs fram under veckan fokuserade just på interaktionen kollegor emellan, oavsett fysiskt avstånd.

För att få kontoren att kännas mer sammankopplad blev vår lösning att skapa engemensam ljudtjänst. Vi har Sonos-högtalare på alla våra kontor, och bestämde oss därför för att använda Sonos web API för att utveckla en tjänst som gör det möjligt att spela upp ljud på alla högtalare på samtliga kontor parallellt. Vi valde att kalla ljudtjänsten för 'Prototyp Sound Service'.

Ide och lösning

Vår ide handlade om att kunna spela upp ljud, musik eller att skapa text-till-tal-meddelanden på alla våra kontor samtidigt genom våra Sonos-högtalare. Målet var att skapa en tjänst som var enkel att använda för alla, så därför bestämde vi oss för att bygga en app för Slack. Tanken är att tjänsten även ska kunna användas för att påminna oss om våra återkommande möten; så som vår dagliga stand-up, veckodemos och Dev Coffee.

Implementation och resultat

För att lyckas ta fram lösningen skapade vi först ett kodprojekt för att koppla ihop Sonos API, Slack API och AWS-databasen i RedwoodJS-ramverket. Efter en del research och försök insåg vi dock att det inbyggda autentiseringsstödet i Redwood fungerar bra för ensidiga applikationer, men att det inte är lika moget för en mer serverbaserad autentisering. Därför bestämde vi oss istället för att skapa ett nytt projekt med Ruby on Rails. Vi använde sedan Sonos API för att hämta våra högtalare på de olika kontoren via vår autentiseringstoken.

Med hjälp av Slack API implementerade vi en Prototyp Sound Service-bot, som skulle göra det möjligt för oss att välja vilket kontor (alternativt alla kontor) som ska påverkas av en uppspelningsförfrågan, samt vilken typ av ljud som ska spelas upp. Tjänsten har stöd för att skapa ljud vid text-till-tal, samt möjlighet att välja i ett bibliotek av redan befintliga ljudeffekter. Det går att välja bland judeffekter som redan finns lagrade i vår databas, eller att klistra in en mp3-fil som bara används en gång. Vi gjorde det även möjligt för användaren att ladda upp nya ljudeffekter till ett backoffice-gränssnitt.

Vi skapade också en enkel landningssida med lite information om hur man använder tjänsten. Där inkluderade vi också instruktioner för att dirigera användaren till back-office-gränssnittet.

Insikter och reflektioner

Att jobba med autentisering är alltid komplicerat. Vi experimenterade med flera olika funktioner för att autentisera via Sonos, men var sedan tvungna att hitta en annan lösning. Med facit i hand hade det varit bättre att använda oss av en genväg för att lösa problemet från början istället för två dagar in i projektet.

Vi lärde oss också att det går att göra väldigt mycket med Slack-appar, och att det dessutom är möjligt att skapa ganska komplicerade flerstegsformulär inne i apparna. Att använda Sonos API för att ansluta de olika enheterna fann vi däremot mer komplicerat att arbeta med.

Om vi hade haft möjlighet att vidareutveckla ljudtjänsten hade en tilläggsfunktion kunnat vara att ställa in automatiskt genererade meddelanden, såsom Slack-påminnelser eller hälsningar till hela företaget eller på de specifika kontoret, som hade kunde aktiveras i samband med att kontoret öppnar och stänger om dagarna.