Ryszard Rzepa bygger Google Home-app på heltid for Sol. 📸: Ole Petter Baugerød Stokke
Ryszard Rzepa bygger Google Home-app på heltid for Sol. 📸: Ole Petter Baugerød StokkeVis mer

Slik bygger Sol app til Google Home

- Det er en chatbot i forkledning, forklarer utvikler Ryszard Rzepa.

Sist måned ble den etterlengtede stemmeboksen Google Home lansert i Norge. Dagen etter kunne vi blant annet lese i Tek.no at Elkjøp tror de vil selge en halv million Google Home-bokser med taleassistent i Norden.

Det er tydelig at Google-boksen kan dukke opp i mange norske hjem framover.

En av dem som har vært med fra lansering er nyhetsaggregator-siden Sol.no.

Vi satt oss ned med utvikleren bak Sol sin voice-app, Ryszard Rzepa, for å finne ut av hvordan man egentlig bygger en app til Google Home.

Bygge chatbot

- Dette er jo egentlig en chatbot i forkledning, forklarer Ryszard.

Han jobber, tro det eller ei, fulltid med å utvikle voice-app for Sol.no.

«Det er viktige å tenke på design av samtalen.»

Det viktigste mener han er å ha fokus på å lage en god samtale med brukeren.

- Det er viktige å tenke på design av samtalen. Du må kunne håndtere en haug med forskjellige caser, og tenke på hvor dypt en samtale kan gå, forteller han.

Sols Google Home app er en chatbot i forkledning forklarer Ryszard Rzepa. 📸: Ole Petter Baugerød Stokke
Sols Google Home app er en chatbot i forkledning forklarer Ryszard Rzepa. 📸: Ole Petter Baugerød Stokke Vis mer

Verktøyet Ryszard bruker for å designe disse samtalene heter Dialogflow. Et online Google-verktøy som brukes til å designe chatbot-funksjonalitet til en rekke plattformer. Du kan bygge botter til blant annet Facebook Messenger, Slack, Twitter og nå også Google Assistant, som Google Home er basert på.

I Dialogflow bygger Ryszard støtte for alt du måtte finne på å spørre Sol.no om. Alt fra frasene som leder deg inn i Sol sin app, slik som: «Hei Google, kan jeg få snakke med Sol», til dypere spørsmål som: «Fortell meg nyheter fra Porsgrunn».

Samtaletrådene kalles intents, altså intensjoner. Under intents definerer man opp forskjellige fraser som beskriver en intensjon, og kobler på entities.

Entities er nøkkelord som kan videreformidles til en backend-tjeneste for å gi data tilbake.

Ryszard bruker SDK-en til Actions for Google i sin Node-backend. 📸: Ole Petter Baugerød Stokke
Ryszard bruker SDK-en til Actions for Google i sin Node-backend. 📸: Ole Petter Baugerød Stokke Vis mer

Backend i Node

Når en bruker stiller spørsmålet «Fortell meg nyheter fra Porsgrunn», er det en backend Ryszard har skrevet i Node som svarer.

«Google Cloud Functions fungerer ved at serveren våkner til live når den har en forespørsel.»

I Dialogflow kan man nemlig definere opp hvilket endepunkt som skal kontaktes for å få svar på en forespørsel fra brukeren.

Det er i praksis bare et URL-felt man fyller ut. Hviket som helst backendspråk kan velges, og tjenesten kan tjenes fra hvor som helst. Likevel holder Ryszard en knapp på Node-backend, tjent gjennom Google Cloud Functions.

- Google Cloud Functions fungerer ved at serveren våkner til live når den har en forespørsel. Som jo fungerer perfekt til dette formålet, forklarer Ryszard.

Når forespørselen har nådd serveren bruker Ryszard Actions for Google-SDK-en til å tolke den. SDK-en henter ut nøkkelord og holder oversikt over samtalen. Deretter hentes det ut artikkel-snutter fra Sol sitt REST-API basert på nøkkelordene.

Syntetisk snakke-notasjon

Responsen tilbake til brukeren er på et XML-basert format som kalles SSML. SSML er en åpen web-standard som er godkjent av W3C, og står for Speech Synthesis Markup Language. Standarden ble originalt skapt av selskapet Sun og er basert på deres Java Speech Markup Language. Google Assistant bruker et subset av SSML-standarden.

<speak>
  Here are <say-as interpret-as="characters">SSML</say-as> samples.
  I can pause <break time="3s"/>.
  I can play a sound
  <audio src="https://www.example.com/MY_MP3_FILE.mp3">didn't get your MP3 audio file</audio>.
  I can speak in cardinals. Your number is <say-as interpret-as="cardinal">10</say-as>.
  Or I can speak in ordinals. You are <say-as interpret-as="ordinal">10</say-as> in line.
  Or I can even speak in digits. The digits for ten are <say-as interpret-as="characters">10</say-as>.
  I can also substitute phrases, like the <sub alias="World Wide Web Consortium">W3C</sub>.
  Finally, I can speak a paragraph with two sentences.
  <p><s>This is sentence one.</s><s>This is sentence two.</s></p>
</speak>

- Med SSML kan jeg for eksempel definere at det skal spilles musikk i bakgrunnen. Det er veldig bra for å gjøre samtalen med Sol mer levende og menneskelig, forklarer Ryszard.

Dialogflow brukes til å designe chatten som brukeren interagerer med via Google Home-boksen. 📸: Ole Petter Baugerød Stokke
Dialogflow brukes til å designe chatten som brukeren interagerer med via Google Home-boksen. 📸: Ole Petter Baugerød Stokke Vis mer

Skal man gi ut appen og teste den, trenger man riktignok ett system til.

Svak dokumentasjon

Actions for Google er et separat Google-verktøy i tillegg til Dialogflow. Kort forklart bygger du chatten i Dialogflow, og oppretter, tester og gir ut voice-appen din via Actions for Google.

En arbeidsflyt Ryszard forklarer at han har brukt mye tid på å finne ut av.

- Dokumentasjonen på dette var ikke lett å finne ut av. Jeg prøvde først å lese på Google sine utviklersider. Men der endte jeg opp med et eksempel som ikke fungerte. Heldigvis fant jeg en artikkel på Medium som funka, forklarer han.

«Google trenger bedre eksempler på dette.»

- Google trenger bedre eksempler på dette. De har én dokumentasjons-side med informasjon om Dialogflow, og én side med informasjon om Actions For Google. Men ingenting om hvordan man faktisk bruker dem sammen.

Actions for Google brukes til å teste, registrere og deploye appen din. Slik at den er tilgjengelig i Google Assistant og Google Home. 📸: Ole Petter Baugerød Stokke
Actions for Google brukes til å teste, registrere og deploye appen din. Slik at den er tilgjengelig i Google Assistant og Google Home. 📸: Ole Petter Baugerød Stokke Vis mer

Og dette må du for å kunne gi ut en voice-app.

- Jeg lærte blant annet at det var mye lurere å bruke Actions for Google-SDK-en i Node-serveren min, enn Dialogflows eget SDK. Den er altfor komplisert. Men dette får man ikke nødvendigvis vite noe sted. Altså at begge SDK-ene kan brukes til å håndtere forespørsler fra Google Assistant, forteller Ryszard.

Klassisk norsk tjeneste

Fremtiden for Sol-appen på Google Home tror Ryszard hovedsakelig handler om å forbedre design av gode samtaler. Likevel har han tanker om ny funksjonalitet han vil bygge inn.

- Du skal kunne knytte dette opp mot Google-kontoen din. Vi kan blant annet be om tillatelse til å bruke geolokasjon. Da kan vi gi enda bedre utvalg nyheter til brukeren, forklarer han.

- Siden Sol hovedsakelig henter titler og utsnitt fra mange kilder har vi muligheten til å lokalisere. I tillegg hadde det vært kult om vi kunne la brukeren sende et varsel til mobilen, med lenke til saken. For eksempel hvis de vil lese videre på mobilen.

Det er likevel en litt mer klassisk norsk tjeneste som ligger foran i røret.

- Vi skal legge inn støtte for været, smiler Ryszard.

(For ordens skyld: kode24 eies av Scandinavia Online, som også eier SOL.no)