Überprüfen, ob ein Echo-Device über ein Display verfügt

Wenn man einen Skill für Alexa entwickeln möchte, stellt man sich zu Beginn die Frage, ob man gegebenenfalls das Display eines Echo Shows oder Echo Spots nutzen möchte. Hier lassen sich zusätzliche Inhalte, wie zum Beispiel Bilder oder Texte anzeigen. Nun muss allerdings validieren, ob das Gerät überhaupt über ein Display verfügt, bevor man diese Informationen an das Device zurückschickt.

Wie man einen Skill mit C# entwickelt, habe ich bereits in dem einen oder anderem Beitrag hier gezeigt und nun möchte ich einen kleinen Code-Schnipsel mit euch teilen, welcher validiert, ob das Gerät über ein Display verfügt. Hierbei nutzen wir das Objekt SkillRequest, welches uns das Alexa.NET NuGet Package zur Verfügung stellt. Umgesetzt habe ich das ganze als Extension Method, so dass man die Methode direkt auf dem SkillRequest-Objekt aufrufen kann.

public static bool IsDisplaySupported(this SkillRequest skillRequest)
{
  return skillRequest?.Context?.System?.Device?.SupportedInterfaces != null
    && skillRequest.Context.System.Device.SupportedInterfaces.ContainsKey("Display");
}

Man kann hier sehen, dass geschaut wird, ob in dem Dictionary SupportedInterfaces ein Eintrag mit dem Namen Display enthalten ist. Die gleiche Logik lässt sich auch für Audio-Player und Video-App anwenden.

public static bool IsAudioPlayerSupported(this SkillRequest skillRequest)
{
  return skillRequest?.Context?.System?.Device?.SupportedInterfaces != null 
    && skillRequest.Context.System.Device.SupportedInterfaces.ContainsKey("AudioPlayer");
}

public static bool IsVideoAppSupported(this SkillRequest skillRequest)
{
  return skillRequest?.Context?.System?.Device?.SupportedInterfaces != null
    && skillRequest.Context.System.Device.SupportedInterfaces.ContainsKey("VideoApp");
}

Somit kann man die Antwort seines eigenen Skill leicht anpassen und läuft in keinen Fehler mehr, wenn man auf einem Device ohne Display Informationen zum Rendern eines Bildes schickt.

Alexa: Amazon Developer Account anlegen Alexa-Skill mit Storyline entwickeln BotTalk: Skill zu Amazon hochladen