Nicolas j leclercq 6 Q Wdec F Ky YA unsplash

09.11.2021

Entwickeln eines Alexa Skills mit Python

Thomas Eldridge - Tech Evangelist.jpg
Thomas Eldridge

Lesen Sie den folgenden Artikel für eine detaillierte Beschreibung der Integration unserer Wetter-API in Amazon Alexa, einschliesslich eines Schritt-für-Schritt-Video-Tutorials, in dem ich den Prozess der Erstellung eines Alexa Skills mit der Developer Console von Grund auf illustriere.

Wir bei Meteomatics sind stolz darauf, sehr genaue Wettervorhersagen über einen einzigen RESTful-API-Endpunkt zu liefern, der einfach zu bedienen ist und einen einzigen Zugriffsmechanismus auf eine der weltweit umfangreichsten Wetter- und Klimadatenbanken (>7 Petabyte) bietet. Unsere technologisch unerfahrenen Kunden können URLs mit Hilfe unserer Schritt-für-Schritt-Anleitung erstellen, während erfahrenere Nutzer API-Konnektoren für alle gängigen Programmiersprachen und jede Software finden. Wir sind jedoch immer auf der Suche nach Möglichkeiten, die Interaktion mit unseren Daten noch einfacher zu gestalten, und im Jahr 2021 kann das nur eines bedeuten.

Ja, Meteomatics entwickelt die Kompatibilität mit Sprachassistenten!

Das Schlüsselwort hier ist "entwickeln". Selbst wenn ein Nutzer immer nur eine Absicht hat, wenn er mit einem Sprachassistenten spricht (z. B. eine Vorhersage für das Wochenende zu erhalten), erfordert die korrekte Interpretation all der verschiedenen Möglichkeiten, wie dies formuliert werden könnte ("Sagen Sie mir das Wetter für Samstag und Sonntag", "Wie wird es dieses Wochenende?", ...) eine Menge ausprobieren. Natürlich wäre diese eine Fähigkeit allein eine schlechte Nutzung der Fülle von Wetterdaten, die von Meteomatics zur Verfügung stehen, so dass wir auch andere Sätze interpretieren müssen, die verschiedenen Anfragen entsprechen, ohne sie mit den anderen Aussagen zu verwechseln.

Glücklicherweise hat Amazon in den letzten Jahren das Alexa Skills Kit (ASK) entwickelt, um die Erstellung von benutzerdefinierten Tools zu erleichtern, die dann jedem Alexa-fähigen Gerät1, einschliesslich Smartphones mit der Alexa-App, zur Verfügung gestellt werden können. In diesem Artikel werde ich über meine Erfahrungen mit dem Alexa Skills Kit unter Verwendung von Python sprechen, unseren Prototyp eines Meteomatics-Skills demonstrieren und einige unserer Pläne für die zukünftige Entwicklung vorstellen.

Wie man einen Alexa-Skill erstellt

Definitionen

Zunächst einmal möchte ich Jargon so weit wie möglich vermeiden, aber es gibt ein paar Begriffe, die Amazon ganz speziell im Zusammenhang mit dem Alexa-Frontend2 verwendet, und es lohnt sich, ein paar davon hervorzuheben, bevor es losgeht. Ein Alexa Voice Skill (AVS) - oder, häufiger, einfach "Skill" - ist der Name, den Amazon für die Tools gewählt hat, die für Alexa-fähige Geräte entwickelt werden. Mehrere gültige "Absichten" können unter den weiter gefassten Begriff des Skills fallen. So möchten Nutzer unseres Meteomatics-Skills vielleicht wissen, wie nass es in den nächsten Tagen sein wird, oder sie möchten sich über den Rückgang der Polkappen in den letzten 20 Jahren informieren. Die Antworten auf diese beiden Fragen sind in den Meteomatics-Daten zu finden, können also beide von derselben Fertigkeit3 verarbeitet werden, spiegeln aber ganz unterschiedliche Absichten des Benutzers wider (wenn auch solche, die hoffentlich recht leicht zu unterscheiden sind).

Ausserdem kann jeder Intent geringfügigen Abweichungen unterliegen, z. B. die Vorhersage für die nächsten Tage statt für die gesamte nächste Woche. Anstatt für unterschiedlich lange Vorhersagen und unterschiedliche Startzeiten eine neue Absicht zu definieren, kann dieselbe Absicht mit leichten Variationen in Form von "Slots" verwendet werden. Wie ich bereits in der Einleitung erwähnt habe, sollten die Benutzer nicht jedes Mal, wenn sie Alexa um dieselbe Sache bitten wollen, auf eine identische Syntax beschränkt sein - schliesslich sprechen wir Menschen nicht so. Die verschiedenen Möglichkeiten, wie ein Benutzer dieselbe Absicht angeben kann, werden als "Äusserungen" bezeichnet, und die Herausforderung bei der Entwicklung eines Alexa-Skills besteht darin, all die verschiedenen Äusserungen, die derselben Absicht entsprechen sollen, ohne Überschneidungen mit anderen Absichten zu finden.

Die Skill-Entwickler-Konsole

Ok, das ist genug, um anzufangen. Wie gehen wir nun vor, um einen Alexa-Skill zu schreiben? Amazons eigene Anleitung schlägt vor, den Quellcode für die Verarbeitung von Sprache (das Skill Developer Kit oder SDK) auf Ihren PC herunterzuladen, bevor Sie das Cloud-Hosting für die Verarbeitung von Sprache in Text konfigurieren. Wenn Sie jedoch, wie ich, all dies eher einschüchternd finden, dann keine Panik! Es ist jetzt möglich, Ihren Skill von Anfang bis Ende vollständig in der Entwicklerkonsole zu entwickeln - auf die Sie über einen Webbrowser zugreifen können - und das bedeutet, dass Ihr Skill sofort mit einer Verbindung zu AWS Lambda initialisiert wird.

Das Frontend

Sobald Sie einen Skill erstellt haben, sehen Sie eine Schnittstelle mit mehreren Registerkarten. In meinem Beispiel unten sehen Sie, dass meine Fertigkeit Meteomatics heisst und dass wir uns derzeit auf der Registerkarte Build befinden. Auf dieser Registerkarte befindet sich das Frontend der Fertigkeit, und in der Seitenleiste sehen Sie die beiden Intents, an denen ich gearbeitet habe: MyWeatherNowIntent und WeatherWhenWhereIntent. Da ich den WeatherWhereWhenIntent hervorgehoben habe, können wir im Hauptfenster ausserdem die Äusserungen4 sehen, die auch die Slots anzeigen, die dieser Intent erwartet. An anderer Stelle in der Konsole können Sie die Datentypen für diese Slots festlegen und Alexa mitteilen, ob diese alle erforderlich sind, um die Absicht zu erfüllen (und wenn ja, wie der Benutzer aufgefordert werden soll, sie bereitzustellen, falls sie vergessen wurden).

Alexa developer console

Der Zweck des Frontends und der Grund, warum eine Verbindung zu einem Cloud-Server in der Fertigkeit überhaupt erforderlich ist, besteht darin, die vom Benutzer gesprochene Sprache in eine Eingabe zu übersetzen, die vom Code im Backend verwendet werden kann. Dies geschieht alles in einer Blackbox - was auch gut so ist, denn die Verarbeitung natürlicher Sprache ist kompliziert -, so dass wir einfach zur Registerkarte Code wechseln können, wo das Backend gespeichert ist, und uns ansehen, wie die Antwort verarbeitet wird.

Backend alexa developer console

Das Backend

Falls es nicht sofort ersichtlich ist, verwende ich Python, um meine Fähigkeiten zu entwickeln - es ist nicht nur die Sprache, mit der ich am meisten vertraut bin, sondern ich habe auch entdeckt, dass es relativ wenige online zugängliche Ressourcen in Python gibt (die meisten AVS-Entwickler scheinen JS zu bevorzugen), so dass ich hoffe, dass es ein nützliches Beispiel sein wird.

Im obigen Codeschnipsel gibt es einige Dinge, die hervorzuheben sind. Erstens können Sie sehen, dass die beiden sichtbaren IntentHandler-Klassen einige Eigenschaften gemeinsam haben - in der Tat trifft dies auch auf alle anderen Handler zu. Diese Eigenschaften sind: sie erben von der Klasse AbstractRequestHandler; sie enthalten eine can_handle()-Methode mit identischer Syntax (die einfach True/False zurückgibt, je nachdem, ob der Handler für den Intent geeignet ist); sie enthalten eine handle()-Methode, in die alle mit dem Intent verbundenen Funktionen geschrieben werden; und sie geben beide ein handler_input-Objekt zurück, das über speak()- und ask()-Methoden und ein Antwortattribut verfügt. Die speak()-Methode nimmt den Text auf, den Alexa als Ergebnis der Handler-Logik sagen soll, während die ask()-Methode einen beliebigen Text aufnimmt, mit dem Alexa den Benutzer nach einer Wartezeit (standardmässig acht Sekunden) erneut auffordern soll.

Das Argument handler_input ist eine Instanz des HandlerInput-Objekts, das Sie oben im Skript sehen können. Dieses Objekt ist ein absoluter Albtraum, da seine Attribute in der Regel selbst Objektinstanzen mit eigenen Objektinstanzattributen sind (siehe Zeile 50 für ein Beispiel einer bescheidenen Anzahl solcher verschachtelter Objekte - viele wünschenswerte Attribute sind noch tiefer verschachtelt). Ich würde nicht empfehlen, zu viel Zeit damit zu verbringen, sich mit dieser Struktur vertraut zu machen: Suchen Sie stattdessen im Internet nach dem, was Sie erreichen wollen, und kopieren Sie den Code5.

Obwohl Sie ein helpers.py-Skript in meinem Code-Tab sehen können, wird Ihr erster Skill dieses nicht standardmässig haben - ich habe es einfach erstellt, um die Funktionen, die die Meteomatics-API kontaktieren, getrennt zu halten. Was jedoch wichtig ist, ist die Anforderungsdatei. Diese wird mit dem Zugang zu den ASK-Paketen initialisiert, aber wenn Sie Pakete für Ihre eigenen Zwecke hinzufügen möchten, müssen Sie diese ergänzen. Am einfachsten ist es, die Backend-Funktionalität Ihres Skills offline in einer IDE zu entwickeln, eine neue Arbeitsumgebung zu erstellen und dort die erforderlichen Pakete zu installieren. Sobald sich der Code verhält, kann er in die Entwicklerkonsole verschoben werden, und die Anforderungsdatei kann von der Offline-Umgebung aus mit dem Befehl

pip freeze > requirements.txt

Kopieren Sie diese Anforderungen und fügen Sie sie am Ende der Datei in der Entwicklerkonsole ein (stellen Sie sicher, dass Sie die Pakete nicht überschreiben, die standardmässig vorhanden sind).

Am Ende des Skripts lambda_function.py werden Sie sehen, dass die Standard-Handler bereits zu einem SkillBuilder-Objekt hinzugefügt werden. Dies ist im Wesentlichen die Art und Weise, wie ASK die verschiedenen im Skript enthaltenen Handler kompiliert. Stellen Sie sicher, dass Sie alle neuen Handler zum SkillBuilder hinzufügen, indem Sie diese Syntax wiederholen, und beachten Sie, dass die Reihenfolge, in der Sie sie hinzufügen, manchmal wichtig sein kann!

Testen

Jetzt können wir die Registerkarte "Test" verschieben. Um Ihren Skill zu testen, müssen Sie zunächst "Entwicklung" in der Dropdown-Box oben auf dem Bildschirm auswählen. Dann können Sie damit beginnen, die Reaktion von Alexa auf verschiedene Äusserungen zu testen. Sie können Alexa dazu bringen, Ihre Sprache in Text umzuwandeln. Wenn Sie in einem geschäftigen Büro sitzen und es Ihnen peinlich ist, den ganzen Tag mit Ihrem Computer zu sprechen, können Sie auch Sätze in den Simulator eingeben.

Testing alexa developer console 1

Auf der linken Seite sehen Sie einen Beispieldialog, den ich mit Alexa geführt habe. Da einige Alexa-Geräte immer zuhören, wäre es dumm, wenn sie auf alles reagieren könnten, was sie hören und was nach einer Absicht des Skills klingt. Daher muss Ihr Skill zunächst mit einer Startphrase aufgerufen werden. Ich bin gerne höflich zu meinen Robotern, also bitte ich Alexa, "bitte meteo matics zu starten"6 – Sie müssen das nicht tun: Es reicht aus, den Skill-Aufrufnamen zu verwenden. Da Alexa nun weiss, dass sie nach Intents sucht, die mit dem Meteomatics-Skill verknüpft sind, kann ich eine Äusserung verwenden, die auf meinen MyWeatherNowIntent verweist. Die Antwort von Alexa ist etwas wortreich: Aufgrund der Art und Weise, wie ich das Backend kodiert habe, versucht sie zunächst, meinen genauen Live-Standort zu ermitteln. Nachdem dies nicht gelungen ist7, versucht sie, die auf dem Gerät registrierte Adresse8 zu ermitteln, was nicht möglich ist, da ich mich auf meinem Laptop befinde (auf meinem Telefon funktioniert es jedoch).

Diese erste Absicht beinhaltet keine Steckplätze. Ort, Datum und Uhrzeit werden entweder vom Gerät oder aus dem Python-Skript bezogen. Ich wollte sehen, wie Slots funktionieren, und habe daher eine zweite Absicht entwickelt, die zusätzliche Informationen vom Benutzer erfordert. Ich möchte über die Feiertage in meine Heimatstadt zurückkehren und möchte wissen, wie es bei unserem traditionellen Familienspaziergang am Weihnachtsmorgen aussieht, also beschloss ich, Alexa zu fragen. Zunächst ist die Enttäuschung gross - sie sagt, dass sie die gesuchte Antwort nicht finden kann - aber der Fehler ist tatsächlich darauf zurückzuführen, dass die vorherige Sitzung beendet ist und Alexa versucht, den eingebauten Wetter-Skill zu verwenden, anstatt den von Meteomatics. (Dies könnte vermieden werden, wenn ich den SessionEndHandler im Backend umprogrammieren würde).

Alexa commands weather data

Ich formuliere also meine Frage neu und kombiniere diesmal den Startsatz und die Abfrage. Jetzt antwortet Alexa wie erwartet, aber wir haben immer noch nicht ganz unsere Prognose: Ich habe vergessen zu sagen, für wann ich die Informationen brauche. Da ich dies zu einem erforderlichen Zeitfenster für diese Absicht gemacht habe, fragt mich Alexa nach der Uhrzeit, die ich angebe, und Alexa gibt mir die Prognose. . Sieht aus, als würde es kalt werden, aber nicht zu "verrückt"9 – ich werde meine Reise buchen!

Fehlersuche

Das hat alles reibungslos geklappt, aber ich möchte Sie davor warnen, zu erwarten, dass Ihr erster Skill sofort nach dem Auspacken funktioniert. Die Fehlersuche bei Alexa kann ein wahrer Albtraum sein, da die JSON-Anfrage und -Antwort für jede Äusserung nicht wirklich viele Informationen darüber enthält, was in Ihrem Backend kaputt sein könnte.

Daher sollte ich kurz das nützlichste Debugging-Tool vorstellen, das ich bei der Arbeit in der Entwicklerkonsole gefunden habe.

Auf der Registerkarte Code sehen Sie oben im Fenster eine Menüoption namens CloudWatch Logs10. Hier speichert Alexa Informationen über die Backend-Vorgänge Ihres Skills. Für jede Sitzung wird automatisch ein neues Protokoll erstellt, das mit einem Zeitstempel versehene Berichte über jede von Alexa gesendete Anfrage sowie die Python-Konsolenfehlerausgabe enthält, wenn Ihr Code abstürzt. Ich habe auch das Logging-Modul importiert und mehrere wichtige Prüfungen auf der .info-Ebene protokolliert. Hier ist ein Schnappschuss des Protokolls von unserer letzten Unterhaltung mit Alexa:

Log alexa conversation

Video Tutorial

Sehen Sie sich das Video-Tutorial an, in dem ich den Prozess der Erstellung einer Fertigkeit mit der Entwicklerkonsole von Grund auf erläutere.

Wenn Sie Fragen zu meinem Arbeitsablauf haben, wenden Sie sich an [email protected] und ich melde mich bei Ihnen.

Weiterentwicklung des Meteomatics-Skills

Was ich bisher in diesem Artikel hoffentlich gezeigt habe, ist, dass es ziemlich einfach ist, Skills zu entwickeln, die mehrere Benutzerintentionen verarbeiten und mit externen APIs interagieren, wenn man erst einmal den Fachjargon hinter sich gelassen hat und versteht, wie man einen Alexa-Skill von Anfang bis Ende erstellt und debuggt. Im Meteomatics-Skill greife ich sowohl auf die Meteomatics-API als auch auf die Google-Geokodierungs-API zu, was in beiden Fällen nicht komplizierter ist als der Zugriff auf diese APIs über ein typisches Python-Skript. Die grössten Herausforderungen bei der Entwicklung eines Skills sind a) das Entwerfen eines Voice User Interface (VUI), das die verschiedenen Möglichkeiten, wie Menschen nach denselben Dingen fragen können, eindeutig erfasst und gleichzeitig Überschneidungen mit anderen Intents vermeidet, und b) die Entscheidung, wie die oft recht komplexen API-Antworten11 in Text umgewandelt werden können, den Alexa lesen und der Benutzer verstehen kann. Ich möchte Meteomatics-Kunden, die diesen Artikel lehrreich fanden, dazu ermutigen, mit der Einbindung unserer Daten in ihre Skills zu experimentieren: Wir würden uns freuen, Ihre Ideen zu sehen!

Unser Meteomatics-Skill ist noch nicht bereit für die Öffentlichkeit. Da er sich noch in der Entwicklung befindet, lohnt es sich, abschliessend darüber zu sprechen, welche Pläne wir für den Skill in der Zukunft haben, einschliesslich dessen, was ASK derzeit unterstützen kann. Wenn Sie ein Nutzer von Meteomatics-Daten sind oder sich einfach nur für unser Produkt interessieren, würden wir uns freuen, Ihre Ideen für nützliche Funktionen zu hören!

Ein wesentlicher Vorteil der Meteomatics-Wetterdaten ist, dass sie in einer unglaublich hohen Auflösung verfügbar sind. Dies hat uns zu MyWeatherNow inspiriert, das letztendlich die Geolokalisierung des Geräts nutzt, um automatisch die aktuelle Situation für Ihren genauen Standort zu ermitteln. Natürlich ist dies keine nützliche Funktion - höchstwahrscheinlich wissen Sie bereits, wie das Wetter an Ihrem Standort in dieser Sekunde ist. Das Prinzip könnte jedoch erweitert werden, um die Vorhersage für Ihren aktuellen Standort zu erhalten. Vorhersagen sind mit einer VUI etwas schwierig bereitzustellen, da eine Menge Informationen in einem einzigen Satz zusammengefasst werden müssen. Nehmen wir zum Beispiel eine Radiowettervorhersage, die die Situation für ein geografisches Gebiet in wenigen Sätzen zusammenfasst. Radiovorhersagen werden von Menschen erstellt, die gut darin sind, aus komplexen Daten einen Gesamteindruck zu gewinnen und diesen in Worte zu fassen; die Formalisierung der Logik, die ein Computer für dieselbe Aufgabe benötigt, ist viel komplizierter.

Eine vielleicht praktischere Verwendung von Geolokalisierungsdaten ist das Einstellen eines Wetteralarms oder einer Erinnerung. Alexa-Skills können sich Sitzungsattribute merken und sie später abrufen oder sie nutzen, um zu bestimmen, wann die nächste Aktion durchgeführt werden soll.

Wenn Sie Wäsche zum Trocknen aufhängen oder planen wollen, wann Sie das Haus eines Freundes verlassen, um nicht nass zu werden, könnte es nützlich sein, Alexa im Voraus anzuweisen, Sie eine halbe Stunde vor Beginn des Regens zu informieren. Diese Art von Anwendung nutzt die unglaublich zuverlässigen und spezifischen Wetterdaten, die von Meteomatics zur Verfügung stehen, und ist sicherlich vielversprechend.

Oder Sie sind auf dem Weg zu einem bestimmten Ort und möchten wissen, wie das Wetter sein wird, wenn Sie dort ankommen. Auch hier sind die Meteomatics-Daten perfekt geeignet; der begrenzende Faktor ist hier die AVS VUI. Aufgrund der vielen verschiedenen Adressformate weltweit ist es schwierig, einen Datentyp zu erstellen, der diese Informationen in einem Slot erfasst. Amazon hat einen eingebauten Datentyp für Adressen in den Vereinigten Staaten implementiert, aber um diese Möglichkeit weltweit zu nutzen, müssten ähnliche Typen für den Rest des Globus entwickelt werden.

Weniger spezifische Orte sind einfacher zu implementieren. Im WeatherWhenWhere-Intent verlange ich zum Beispiel, dass der Benutzer eine Stadt und ein Land angibt12. Hier wird die hohe Auflösung der Meteomatics-Daten jedoch weniger relevant, aber unsere API hat eine andere Stärke, die in diesem Zusammenhang nützlich ist, nämlich die Fähigkeit, grosse Mengen von Wetterdaten schnell zu verarbeiten. Im Backend für WeatherWhereWhen tue ich dies, indem ich Temperaturdaten über ein grosses Gebiet anfordere und einen räumlichen Durchschnitt bilde. Diese Art der Verarbeitung könnte sich als nützlich erweisen, wenn man für einen Urlaub packt, von einfachen Abfragen wie "wie wird die durchschnittliche Tagestemperatur in Barcelona nächste Woche sein" bis hin zu komplizierteren wie "werden die Bedingungen13 in Banff am Montag gut zum Skifahren sein". Durch die Kombination der zahlreichen von Meteomatics verfügbaren Parameter mit Funktionen, die von anderen APIs ausgeliehen wurden, gibt es keinen Grund, warum so komplizierte Fragen wie "Welches ist die beste Stadt in Norditalien mit weniger als 200.000 Einwohnern, in der man ein Immobilienprojekt entwickeln kann?" nicht auch beantwortet werden können. Diese Art von Frage scheint seltsam spezifisch und nicht etwas, das wir wahrscheinlich explizit in einen Skill programmieren würden, aber sie gibt eine Vorstellung vom Umfang der Fragen, die an die Meteomatics API gestellt und von ihr beantwortet werden können.

Es gibt noch viele weitere Schritte auf dem Weg zu einem vollständigen, offiziellen Meteomatics Alexa Skill. Wir hoffen, dass dieser Artikel einen Eindruck von den aufregenden Möglichkeiten vermittelt hat, die sich vor uns ausbreiten. Achten Sie auf die weitere Entwicklung von VUIs für Alexa und andere sprachgesteuerte Geräte, und natürlich würden wir uns freuen, wenn Sie uns mitteilen, was Sie sich als nächstes wünschen.

  1. In Zukunft werden wir an dieser Stelle über unsere Experimente mit anderen Sprachbenutzerschnittstellen berichten.
  2. Die Sprachnutzeroberfläche; das Backend bezieht sich auf den gesamten Code, der die vom Alexa-Frontend interpretierte Sprache verarbeitet.
  3. Alternativ könnte man auch denken, dass es sinnvoller ist, getrennte Skills für "Wetter" und "Klimatologie" zu haben - es spricht ja nichts dagegen, dieselbe Meteomatics-API in mehreren Skills zu verwenden.
  4. Bisher nur eine Äusserung, aber ich bin mir sicher, dass Sie den Bedarf für eine Weitere sehen, die die Reihenfolge der Slots ändert, sowie viele andere Möglichkeiten.
  5. Eine Reihe von nützlichen Python-Beispielen finden Sie auf GitHub.
  6. Um einen Ein-Wort-Aufrufnamen zu registrieren, müssen Sie einen Nachweis über Ihre geistigen Eigentumsrechte erbringen. Da sich dieser Skill noch in der Entwicklung befindet, verwende ich diesen Aufforderungsnamen, damit Alexa auf Sprache reagiert, die wie "Meteomatics" klingt.
  7. Möglicherweise, weil ich es nicht richtig kodiert habe…
  8. Eigentlich als Breiten- und Längengrad angegeben und mit Google in eine Adresse umgewandelt.
  9. Natürlich ist eine Vorhersage, die so weit im Voraus erstellt wird, vielen Änderungen unterworfen, und Informationen über Windböen sind nicht verfügbar.
  10. Es gibt mehrere Optionen für den Serverstandort in einem Dropdown-Menü, und es ist nicht immer offensichtlich, mit welchem dieser Server Ihr Skill kommuniziert: Wenn Sie die Protokolle Ihrer letzten Sitzung nicht sehen können, versuchen Sie die anderen Standorte.
  11. Eine Meteomatics-API-Antwort an den Python-Konnektor ist zum Beispiel normalerweise ein Pandas DataFrame, den ich manipulieren musste, um die Zahlen zu erhalten, von denen ich annahm, dass sie einen Benutzer am meisten interessieren würden.
  12. Dies ist für einige Orte viel zu allgemein - es gibt zum Beispiel 91 Washingtons in den USA.
  13. Sie könnten Ihre eigene Interpretation verschiedener Meteomatics-Parameter für diesen Zweck entwerfen oder einen der direkt über die API verfügbaren Freizeitindizes verwenden.
Thomas Eldridge - Tech Evangelist.jpg
Thomas Eldridge

Schreiben Sie mir eine Nachricht!

Sie haben Fragen zu einem meiner Artikel oder wollen sich einfach nur mit mir über Technik und Wetterdaten unterhalten? Dann schicken Sie mir eine Nachricht, ich freue mich auf Sie!