All posts by Sascha Wolter

About Sascha Wolter

Developer, Trainer, and Speaker with Passion for Innovation, User Experience (i.e. Voice), and the Internet of Things in all flavors.

Heuristiken für Sprach-Assistenten und Chatbots neu aufgegriffen 1/10

Seit Jahrzehnten werden unterschiedlichste Prinzipien und Heuristiken für das Gelingen vom Benutzungsschnittstellen propagiert. Zu den bekanntesten zählen die „10 Usability Heuristics for User Interface Design“ von Jakob Nielsen:

  • Sichtbarkeit des Systemstatus (Visibility of system status)
  • Übereinstimmung zwischen System und Wirklichkeit (Match between system and the real world)
  • Nutzerkontrolle und -freiheit (User control and freedom)
  • Konsistenz und Standards (Consistency and standards)
  • Fehlervermeidung/Fehlervorbeugung (Error prevention)
  • Erkennen statt Erinnern (Recognition rather than recall)
  • Flexibilität und Effizienz (Flexibility and efficiency of use)
  • Ästhetisches und minimalistisches Design (Aesthetic and minimalist design)
  • Anwendern helfen, Fehler zu erkennen, zu beurteilen und zu beheben (Help users recognize, diagnose, and recover from errors)
  • Hilfe und Dokumentation (Help and documentation)

Doch sind diese Faustregeln von 1995 auch heute, nach mehr als 20 Jahre, noch gültig? Insbesondere im Zusammenhang mit zunehmend natürlichen Interaktionsformen wie Konversations KIs (Conversational AIs).

Dieser Blogpost widmet sich zu Beginn dem ersten Punkt. Anregungen sind natürlich sehr willkommen…

Sichtbarkeit des Systems

Auch für Konversations KIs gilt: Das System informiert den Nutzer immer darüber, was gerade passiert – rechtzeitig und durch angemessene Rückmeldung.

Sprach-Assistenten und Chatbots sollten immer kommunizieren, was sie wissen und was sie können. Gerade im Zusammenhang mit Sprachassistenten ist es essentiell, dem Nutzer den aktuellen Status und Handlungsmöglichkeiten zu vermitteln, da weitere Hinweise wie sie üblicherweise auf einem Bildschirm zu finden sind in der Regel fehlen.

Sowohl Chatbots als auch Sprachassistenten sollten bestätigen, dass sie Eingabe des Nutzers verstanden haben („Okay“, „Verstanden“ etc.) und ähnlich zu Meilensteinen angeben, wo im Prozess man sich befindet. Dies gibt dem Benutzer die Gewissheit, dass er gehört wurde und dass er den Überblick über das Gespräch behält. Dies hilft auch dabei, den Dialog flüssig erscheinen zu lassen.

Zusätzlich ist es wichtig, dem Nutzer mitzuteilen, ob die Konversation zu Ende ist und, falls sie fortdauert, welche weitere Eingaben erlaubt bzw. erforderlich sind. Um die Konversation aufrecht zu erhalten, sollte der Assistent immer auffordernd agieren und zum Beispiel eine klare Frage stellen. Gehen Sie nicht davon aus, dass die Benutzer wissen, was sie tun sollen. Dieser Aufforderungscharakter hilft Nutzern, das Gespräch zu beginnen bzw. fortzuführen. Das Ende sollte ebenfalls mit einer entsprechenden Aussage signalisiert werden.

Sprachassistenten nutzen für den Status der Konversation üblicherweise zusätzlich eine visuelle Rückmeldung und Klänge (sogenannte Earcons). Sprich: Wenn das Gerät leuchtet oder blinkt, erwartet es eine Eingabe. Bei Chatbots bietet es sich an, wesentliche Eingabemöglichkeiten durch Schaltflächen (Quick-Replies) darzustellen. Falls neben Sprach- und Textinteraktion auch anderen Medien möglich sind, kann eine multimodale Interaktion dazu genutzt werden, um die Sichtbarkeit des Systems zu erhöhen.

Alexa Programming Languages and Tools

Building Alexa Skills means you have a Voice User Interface (VUI) and the fulfilling programming logic. For simplicity think of the frontend for the VUI and the backend for the programming logic. There are several ways doing the fulfillment of an Alexa Skill. Often developer use Amazon Web Services (AWS) Lambda which is a perfect fit: Simply enter the Lambda’s ARN (Amazon Resource Name) inside the Skill’s configuration. AWS Lambda supports code written in Node.js (JavaScript), Java, Python, C#, or Go.

There is also an alternative approach: You can enter a SSL/TLS secured https-address as the endpoint for other technologies and programming languages independently from AWS. Under the hood, there is only JSON via REST going back and forth. Thus every technology supporting that might work. In case you prefer your own infrastructure to AWS Lambda, please make sure to secure everything accordingly and always provide valid responses as described here.

Dealing with Java Script Notification Objects (JSON) might be tedious. Therefore, it is good to have some helpers out there, which can make your life easier – despite the preferred technology. Here is a brief list for your convenience:

JavaScript / Node.js

Alexa Skills Kit SDK for JavaScript / Node.js (Lambda)
Skillinator (prototype Alexa Skills for Alexa Skills Kit SDK for JavaScript / Node.js (Lambda))
Alexia (framework for creating Skills using Node.js)
alexa-app (Node module to simplify the development of Alexa Skills)
Several libraries used to build both custom Skills and smart home Skills
Creating SSML (Speech Synthesis Markup Language) using the builder pattern
Jovo (Node.js based development framework for voice apps)

Java / Kotlin

Java Alexa Skills Kit SDK (Lambda)
Alexa States SDK for Java (extends the Java Alexa Skills Kit SDK)
Aleksa (framework for writing Skills in Kotlin)

Python

Flask-Ask
Python Alexa

C# / .NET

Alexa Skills SDK for .NET
AlexaSkillsKit.NET (same object model as Java Alexa Skills Kit SDK)

PHP

Amazon alexa php library
Voice Skill Management System (Skeleton)
PHP Library for Amazon Alexa Skills
Amazon Alexa PHP Library
AlexaApp (classes to make creating Skills with Laravel and Lumen)
Alexa Custom Skill for Patami Framework

Go

Alexa SDK for native Go on AWS Lambda

Command Line Tools (CLI)

Alexa Skills Kit Command Line Interface (ASK CLI)
Bespoken CLI (Develop, Debug, and Test Live on Your Laptop)

Designing / Protoyping / Platforms

Cognigy (Voice and Chat AI without any coding)
Sayspring (Voice Prototypes for Amazon Alexa)
Storyline (Create voice apps without coding)
PullString (Design, Prototype, and Publish Voice Apps)
Alpine.ai (Voice-enabled applications)
slotinaotr.io (easy batch-input of slots)
BotTalk (Create Complex Alexa Skills with simple markup language)
VoiceX (Low Fidelity Prototyping Tool)

Voice, SSML, and Polly

Talestreamer (using rich, multilayered audio)
polly-s3 (renders text-to-speech for Alexa using AWS Polly)

Testing / Virtual Alexa Devices

Echosim.io (Alexa Skill Testing Tool)
Reverb (works in your browser, or on your tablet or phone)

Analytics for Voice

Chatbase
dashbot

Anything missing? Feel free to send me suggestions to complete the list, please!

Alexa Links (English/Deutsch)

Here is a brief list of some Alexa related links (both from Amazon and *independent). I hope those are handy if you like to start, discuss, or simply need help with Alexa. Suggestions are welcome.

Hier ist eine kurze Liste einiger hilreicher Links zu Alexa (sowohl von Amazon als auch *unabhängig). Ich hoffe, diese sind hilfreich. Sollte was fehlen, dann bitte einfach Bescheid sagen.

Docs

Alexa Skills Kit
Alexa Skills Kit in Deutschland (Deutsch)

Code

Alexa Skill Building Cookbook
Alexa Github Repository
Sascha Wolter Github Repository (Deutsch)

Design

Amazon Alexa Voice Design Guide
Amazon Alexa Sprachdesign Guide (Deutsch)

Slides and Media

Slidedeck “Build Voice-Enabled Experiences with Alexa”
Slidedecks from “AWS re:INVENT 2017” (search for Alexa)
Amazon Press Room – Images and Videos
Sayspring Design Resources – Free downloads and resources to design and promote Skills

Video-Trainings (Screencasts, Webinare etc.)

Alexa Developers on YouTube
Amazon Alexa on Twitch
Videos from “AWS re:INVENT 2017” (search for Alexa)
Amazon Alexa Developer Channel Germany on YouTube (Deutsch)

Boards and Communities

Amazon Developer Forums
Alexa Developers Slack Channel*
stackoverflow Alexa-tagged questions*
Amazon Alexa projects on hackster.io*
Amazon Alexa Entwickler für D-A-CH auf Facebook* (Deutsch)
Das inoffizielle deutsche Alexa und Echo Forum.* (Deutsch)

Support and Feature Requests

Amazon Developer Support and Contact
Amazon Developer Support (Deutsch)
Alexa Skills – Developer Voice And Vote

Twitter

@alexadevs – Alexa Developers
@maxamorde – Max Amordeluso, Alexa Evangelist EU*
@muttonia – Andrea Muttoni, Alexa Evangelist UK/EU*
@saschawolter – Sascha Wolter, Alexa Evangelist DE/AT/EU* (Deutsch)

Tools and SDKs

Skillinator: Node.js Codegenerator
Alexa Skills Kit SDK for Node.js
Alexa Programming Languages and Tools

API, Docs, and Code

Alexa Account Linking: 5 Steps to Seamlessly Link Your Alexa Skill
Why a Custom Slot is the Literal Solution (related to transcripption, Speech to Text, free text etc.)

Custom Endpoint/Fullfilment (i.e. using PHP)

Host a Custom Skill as a Web Service
Amazon Alexa lokal (Tunneling, ngrok, etc.)* (Deutsch)

Optimizing Audio

How Loud Is Too Loud? Tips for Setting Your Alexa Skill’s Audio Volume Level
Normalizing the Loudness of Audio Content

Alexa for Business (an AWS service)

Alexa for Business
Alexa for Business FAQs