Chatbotit ovat hieman yksinkertaistaen ainoastaan uusi tapa toteuttaa sovelluksen käyttöliittymä. Toki varsin mielenkiintoinen sellainen. Erilaiset chat-kanavat ovat nykyään laajasti käytettyjä sekä työssä että vapaa-ajalla.
Mikä olisikaan luontevampaa kuin tarjota käyttäjälle palveluja tässä modernissa kanavassa?
Microsoftin Bot Frameworkin tarjoama FormFlow on mielekiintoinen tuttavuus Sen avulla chatbotilla voi toteuttaa lomakkeen. Kiehtova ajatus mikäli ratkaisu on jo olemassa ja lomake on luontevaa tarjota myös chat-palvelussa.
Tässä kirjoituksessa käydään läpi yksinkertaisen lomakkeen korvaaminen chatbotilla.
Esimerkki – Käyttöoikeuden tilaaminen sovellukseen x
Kuvitellaan ratkaisu jolla tilataan käyttöoikeudet sovellukseen x:
- käyttäjä täyttää (Forms:lla toteutetun) tilauslomakkeen
- lomake tallennetaan Flow:n avulla SharePoint-listalle
- käynnistyy hyväksymisprosessi
- hyväksymisen jälkeen käyttäjälle luodaan ohjelmallisesti tunnus sovellukseen.
Karkeasti ottaen näin.
Kaikki on valmista. Suurin työ on ollut hyväksymistyönkulun viilaamisessa sekä automaattisessa tunnuksen luonnissa.
Mitä jos tarjoaisimme mahdollisuuden tilata käyttöoikeuden myös chatissa?
Voimme hyödyntää jo tehtyä ratkaisua. Mikä parasta, chatbot -lomake on kevyt toteuttaa.
Chatbotin luominen Azureen
Aivan aluksi luodaan Azureen Bot-palvelu. Tämä on helpointa tehdä valmista mallipohjaa (template) käyttäen.
Klikataan Azure portaalissa New, haetaan sanalla ’bot’ ja valitaan tulosjoukosta Web App Bot.
Aloitetaan Web App Bot:in luonti Create-painikkeella.
Nimetään palvelu ja käydään vaihtamassa Bot template lomakkeeksi (Form). Valmiit mallit löytyvät myös FAQ-pohjaiselle botille (Question and Answer) sekä luonnollista kieltä ymmärtävälle botille (LUIS, Language understanding).
Lopuksi luodaan palvelu (Create). Valmiin Web App Bot:in hallintanäkymässä on kaksi mielenkiintoista kohtaa:
- Build
- Test in Web Chat
Buildin takaa pääsee käsiksi botin koodeihin. Testiosiossa käännettyä bottia voi kokeilla livenä (kuva alla).
Luotu template pitää sisällään esimerkkibotin, jonka avulla voi tilata voileivän täytteineen. Koodiin pääsee helpoiten tutustumaan online editorin avulla (Build -> Open online code editor).
Botin varsinainen toteutus löytyy kokonaisuudessaan Sandwich.cs -tiedostosta. SandwichOrder -luokassa (1) kerrotaan mitkä leivän ominaisuudet käyttäjältä kysytään ja missä järjestyksessä. Käytännössä nämä ovat muuttujia.
Valintojen vaihtoehdot määritellään ylempänä (2) listoina (enum).
Oman lomakebotin toteuttaminen
Takaisin alkuperäiseen aiheeseen. Esimerkissämme käyttäjätunnuksen tilaaminen on toteutettu yksinkertaisella Forms-lomakkeella.
Lomake on yksinkertainen myös botti-koodina. Vaihdetaan valintalistat halutuiksi (käyttäjän rooli ja alue, kuvassa kohta 1), jonka jälkeen määritellään mitä tietoja käyttäjältä kysytään (kuvan kohta 2).
Kerättävät tiedot ovat:
- Käyttäjän rooli (valinta)
- Käyttäjän sähköposti (tekstikenttä)
- Alue jolla käyttäjä toimii (valinta)
- Päivä jolloin tunnus astuu voimaan (päivämäärä)
- Lisätiedot (vapaaehtoinen tekstikenttä)
FormFlow generoi kysymykset muuttujien nimistä. Kysymysteksteihin voi vaikuttaa Describe ja Prompt -määrityksillä.
- Describe kuvaa muuttujan sisältöä tarkemmin. Bot käyttää kuvaustekstiä kysymyksessä muuttujan nimen sijasta.
- Prompt:illa voi määritellä esitettävän kysymyksen tarkalleen.
Pattern -määrityksellä voi kuvata minkä muotoinen syöte hyväksytään (sähköpostiosoite, puhelinnumero, hetu jne). Tähän ei esimerkiksi Forms tarjoa mitään työkalua.
Optional -määreellä voidaan kertoa ettei kenttään ole pakko antaa arvoa.
Lomakkeemme on valmis. Se pitää vielä kääntää siirtymällä konsoliin ja antamalla Build.cmd -komento.
Miltä bot-lomake näyttää?
Lomaketta voi testata Azuren tarjoamassa web chatissa. Tällä kertaa julkaistaan botti suoraan Teams-palveluun. Tämä tehdään Channels-osiossa.
Pienen viiveen jälkeen botti alkaa vastaamaan Teamsissa. Tunnuksen tilaaminen botilta näyttää tältä.
Käyttäjä voi tehdä valintoja (esim. alue) kätevästi klikkaamalla.
Entä jos vahingossa kirjoittaa sähköpostiosoitteen väärin? Kirjoittamalla Back pääsee syöttämään uudelleen edellisen ”kentän” arvon. FormFlow tarjoaa kaikki perustoiminnallisuudet mitä lomakkeen tietojen onnistuneeseen syöttämiseen tarvitaan. Ne löytyvät help-komennolla.
Mikäli käyttäjä huomaa lopussa syöttäneensä jonkun tiedon väärin, hän vastaa kieltävästi viimeiseen kysymykseen. Botti opastaa korjaamaan pieleen mennen kentän.
Kohtuullinen suoritus viidellätoista rivillä omaa koodia.
Lopuksi botti pitää kytkeä olemassa olevaan ratkaisuun. Tämä onnistuu esimerkiksi luomalla uuden http-kutsulla käynnistyvän työnkulun Flow-palveluun. Botti välittää keräämänsä tiedot eteenpäin kutsumalla sitä. Säästetään se kotitehtäväksi.
Yhteenveto
Yksinkertaisten chatbottien toteuttaminen ei ole hankalaa. Todellisten bottiratkaisujen toteuttaminen ei kuitenkaan ole aivan näin yksinkertaista. Yhden sovelluksen tunnuksien tilaamisen sijaan mielekkäämpää on rakentaa täysverinen IT Support -botti, jonka avulla käyttäjä
- voi tilata mitä tahansa organisaatiossa käytössä olevia tunnuksia, lisenssejä, laitteita, AD-ryhmiä jne. Itselleen tai vaikka alihankkijoille. Yksi botti jonka avulla voisi täyttää minkä tahansa IT-organisaation perinteisen lomakkeen.
- saa tietoa käyttökatkoista ja häiriöistä. Ihan vain kysymällä. ”Hei, onko meidän sähköposti just nyt hajalla?”
- voi kysyä yleisiä kysymyksiä ja saisi niihin vastaukset. Tyyliin ”Miten tilaan uuden puhelimen?”
- voi avata keikan mikäli botti ei osaa auttaa
HR support -botti on toinen kiinnostava ajatus:
- ”Montako lomapäivää minulla on jäljellä?”
- ”Miten pitää toimia jos sairastuu?”
- ”Onko meillä käytössä liikuntaseteleitä tai vastaavaa?”
- ”Milloin joulukuun palkat maksetaan?”
- ”Kuka meillä on pääluottamusmies?”
- ”Haluaisin pitää viikon palkatonta vapaata”
Näitä toteutuksia varten saa kaivaa Visual Studion esille ja yhdistää erilaisia FormFlow, LUIS ja QnA -ratkaisuja yhdeksi botiksi.
Suurin este bottien hyödyntämisessä ei ole niiden vaatima työmäärä vaan organisaatiossa käytettävä kieli. Microsoftin BotFrameworkin kielen ymmärtämiseen liittyvät herkut kun eivät tue suomea.