Ziggo Sport Teammate
The Supply Group
Inleiding
Tijdens deze opdracht hebben we een conversationele interface gemaakt voor Ziggo Sport Totaal: Teammate.
Je kunt, wanneer je samen met Teammate naar een sportwedstrijd kijkt, contextuele vragen over de
wedstrijd vragen zoals: "wat gebeurde er net" of "wie zijn de aanvoerders".
Het leuke aan dit concept, is dat je het op ontelbare manieren kunt uitbreiden. Ik heb hierbij onderzoek
gedaan bij sportliefhebbers om te kijken welke functionaliteiten voor hen nuttig waren.
Een voorbeeld hiervan zijn de Unibet-odds. Hiermee kun je kijken welk team er het best voorstaat
a.d.h.v. live Unibet kansen.
Deze opdracht was voor mij het leukst om uit te werken, omdat hier veel back-end bij kwam kijken. Deze taak heb ik dan ook bijna volledig op me genomen. Van de Alexa-endpoint tot onze eigen API.
Gebruikersonderzoek
Functionaliteit
Na het concepten merkten we binnen de groep dat het niet moeilijk was om een feature-list te maken. De ene functionaliteit na de andere kwam aan bod, en we kwamen al snel tot de conclusie dat we deze natuurlijk nooit allemaal uit konden werken in een tijdsbestek van 4 weken. Hierom heb ik besloten om een gebruikers-onderzoek te doen naar functionaliteiten binnen ons concept.
Bij dit onderzoek heb ik me uitsluitend gericht op sportkijkers, zowel fanatiek als meekijkers.
Ik heb dit onderzoek bewust gedaan nadat er een werkend prototype was. Met dit prototype kan ik duidelijk ons product uitleggen met een paar simpele voorbeelden van functionaliteiten, zoals het opvragen van spelerinformatie en het huidige balbezit.
Bij het ondervragen van zowel de fanatieke sportkijkers als de meekijkers heb ik duidelijke verschillen gezien in de suggesties van functionaliteiten. Waar de fanatiekelingen het hadden over specifieke features zoals Unibet-odds kwamen de meekijkers met wat simpelere features zoals de uitleg van bepaalde spelregels.
Hieronder zijn alle features te vinden die uit mijn gebruikersonderzoek naar voren kwamen.
Type sportkijker | Feature | Uitgewerkt? | Commentaar |
---|---|---|---|
Fanatiek | Live gokkansen van Toto | Voor deze feature hebben we een live-feed van Unibet gebruikt omdat deze accurater en sneller is. | |
Fanatiek | Stadioninformatie | ||
Fanatiek | Spelerstatistieken | Bij deze feature kun je vragen naar het aantal goals, assists, prijzen, wedstrijden, gele en rode kaarten. Hiernaast kun je ook het salaris, gewicht, lengte, leeftijd en nationaliteit opvragen. | |
Fanatiek | Line-up | Bij deze feature wordt er een overlay over heel het scherm gelegd met de line-up van de huidige wedstrijd. Ook de wisselspelers zijn hierin te zien. | |
Fanatiek | Gemiste momenten bij later inspringen van een wedstrijd | In het uitwerken van deze feature is veel aandacht gestoken. Wanneer je Teammate vraagt om de highlights van de wedstrijd worden deze in eerste instantie alleen aan je verteld d.m.v. audio. Je kunt hier echter nog op reageren door bijvoorbeeld te zeggen: kan ik deze zien? Hierna wordt een compilatie van alle highlights in het klein over de live-wedstrijd geplaatst. | |
Meekijker | Huidige speler(s) op het scherm | Voor deze feature is momenteel geen API van derden beschikbaar. Omdat dit ons toch een super vette en nuttige feature leek, hebben we onze eigen API hierop aangepast met zelf-ingevoerde data. | |
Meekijker | Uitleg spelsituaties | Voor deze feature hebben we naast een hoorbare uitleg ook een visuele uitleg als overlay op het eerste scherm gerealiseerd. | |
Meekijker | Aanvoerders | ||
Meekijker | Balbezit |
Niveau van product
Tijdens het bouwen van deze applicatie heb ik me bezig gehouden met het programmeren op 3 platformen:
- Alexa Skill Builder
- Alexa end-point (AWS)
- Custom API
Alexa Skill Builder
Voordat Alexa een bepaalde functie kan aanroepen, moet ze weten welke functie dit is. Om dit te bepalen programmeer je enkele "intents". Dit zijn zinnen die de gebruiker kan stellen, en hieraan wordt dan een functie gekoppeld. In deze intents kun je ook slots definieren die de gebruiker moet vullen, denk hierbij aan getallen of namen.
Alexa end-point (AWS)
Nadat Alexa een functie heeft welke uitgevoerd moet worden, wordt er in het end-point script een functie uitgevoerd. Omdat snelheid een belangrijke factor is binnen ons concept, heb ik ervoor gekozen om dit script binnen AWS's Lambda te programmeren i.p.v. in PHP. De volledige code van het endpoint is hier te zien.
Custom API
Omdat API's van derden voor live sport-wedstrijden relatief duur zijn, hebben we zelf database opgezet met alle informatie die nodig is voor onze eind-demo. Youri heeft deze database ontworpen, ingericht en gevuld met data. Ik heb a.d.h.v. zijn database een API gebouwd voor de Alexa-endpoint.
Front-end
Buiten de back-end moest natuurlijk ook de front-end naadloos samenwerken met de back-end. Hiervoor was een goede samenwerking noodzakelijk met o.a. uniforme naamgeving van functies en variabelen. Ik heb hiervoor nauw samengewerkt met Connie en Kevin waarbij zij uitstekend werk hebben geleverd.
Het eindresultaat is hieronder te zien met een aantal features van ons uiteindelijke product.
Communicatie
De eindpresentatie van dit project was op zijn zachtst gezegd anders dan alle anderen. We mochten hierbij slechts 3 slides tonen waardoor we de rest in de demo moesten stoppen. Op zich was dit voor ons geen probleem omdat we een werkend prototype hadden, maar het vergde wel enige inspanning om na te gaan wat we in die drie slides lieten zien.