Erstellen Sie einen privaten Alexa-Jukebox-Skill für persönliche MP3s und Internetradio
Von Wikiprompt, der freien Prompt-Enzyklopädie
Erstellen Sie einen privaten Alexa-Jukebox-Skill für persönliche MP3s und Internetradio Ein umfassender Prompt zum Erstellen eines privaten Alexa-Skills, der persönliche MP3s aus einem Cloud-Bucket und Internetradio abspielt, mit detaillierten Anweisungen für Einrichtung, Build und Bereitstellung.
Prompt-InhaltSpeichern
🌐
Erstelle mir einen privaten Alexa-Skill, der meine eigene Musik aus einem Cloud-Bucket abspielt, plus Internetradio
Ich möchte, dass mein Amazon Echo meine eigenen MP3s abspielt, anstatt gezwungen zu sein, Amazon Music oder Spotify zu nutzen. Baue einen privaten Alexa-Skill dafür. Erledige so viel wie möglich selbst: nutze CLIs und APIs, stelle es bereit und teste es selbst, und frage mich nur nach Dingen, die nur ein Mensch tun kann (Anmelden, Klicken auf Erlauben, Testen auf dem Echo).
Setup
- Meine Musik liegt in einem S3-kompatiblen Bucket (AWS S3 oder Cloudflare R2) unter einem music/ Präfix. Jeder Ordner darunter ist ein Genre/Playlist (music/Coffee Jazz/) oder ein Künstler/Album (music/Artist/Album/).
- Ich erstelle einen Zugriffsschlüssel für den Bucket und gebe ihn dir. Bewahre ihn in einer Konfigurationsdatei auf und drucke ihn niemals aus. Der Skill benötigt nur Lesezugriff; die Upload-Tools benötigen Schreibzugriff.
- Mein Echo und mein Amazon-Entwicklerkonto verwenden denselben Amazon-Login.
Build
1. Ein Alexa-gehosteter (Node.js) Custom-Skill mit dem Aufrufnamen "jukebox" (verwende zwei Wörter, wenn Amazon ein Wort ablehnt) und der AudioPlayer-Schnittstelle aktiviert.
2. Sprachmodell: ein PlayIntent mit einem AMAZON.SearchQuery-Slot ("play {query}", "put on {query}", "tune in to {query}", "shuffle {query}"), ein ShuffleAllIntent, ein WhatsPlayingIntent, ein ListStationsIntent, und alle eingebauten AudioPlayer-Intents (pause, resume, next, previous, loop on/off, shuffle on/off, start over).
3. Bibliothek: Liste alles unter music/ mit ListObjectsV2 auf (folge dem Continuation-Token), baue Ordner aus den Key-Präfixen, behalte nur .mp3/.m4a/.aac-Dateien, und cache das Ergebnis für 5 Minuten. Gleiche gesprochene Phrasen locker an Ordner- und Dateinamen ab: ignoriere Tracknummern und Leerzeichen ("ama piano" = amapiano), wandle Zahlenwörter in Ziffern um ("thirteen beaches" = 13 Beaches), und behandle Genre-Aliasse (dnb, drum n bass, hiphop, lo fi).
4. Wiedergabe: gib Alexa eine vorsignierte HTTPS-GET-URL für jede Datei. Mache sie mindestens 12 Stunden gültig, damit lange Mixe und Pause/Fortsetzen nicht mitten in der Wiedergabe ablaufen. Halte den Bucket privat. Speichere die Wiedergabewarteschlange im AudioPlayer-Token (Ordner, Shuffle-Seed, Position), damit es keine Datenbank gibt, und stelle den nächsten Track bei PlaybackNearlyFinished in die Warteschlange. Ordner mischen und loopen. Ein Ordner, dessen Dateien alle mit Tracknummern beginnen, ist ein Album und spielt in Reihenfolge. Ein einzelner Song führt mit dem Rest seines Ordners fort.
5. Radio: eine Stationsliste mit HTTPS-MP3/AAC/HLS-Streams, mit guten Underground-Elektronik-Stationen (Rinse FM, NTS, Bassdrive, Intergalactic FM, Kiosk Radio, Refuge Worldwide und so weiter) plus Nachrichten (BBC World Service, NPR). Teste jede URL zuerst mit curl und entferne die reinen HTTP-URLs, weil Alexa sie ablehnt. Unterstütze "play rinse fm", "drum and bass radio", "techno radio" und "the news", und mache next/previous zum Wechseln der Stationen. Live-Streams brechen ab und Alexa behandelt einen Abbruch als Ende, also stelle denselben Stream mit einem neuen Token bei PlaybackNearlyFinished erneut in die Warteschlange, und versuche es einmal erneut bei PlaybackFailed.
6. Protokolliere eine Zeile pro Anfrage (Typ, Intent, Token, Offset, Fehler), damit Wiedergabeprobleme in CloudWatch sichtbar werden.
Bereitstellen ohne die Web-Konsole
- Installiere die ASK-CLI (npm i -g ask-cli). Wenn ask configure in deiner Shell nicht funktioniert, führe ask util generate-lwa-tokens --no-browser aus, lass mich den Einmalcode einfügen, und schreibe ~/.ask/cli_config selbst. Erhalte die Vendor-ID von GET https://t.co/8eS787CaBt.
- Der Code des gehosteten Skills ist ein Git-Repo (finde es mit ask smapi get-alexa-hosted-skill-metadata). Pushe auf master zum Bereitstellen, mit ask util git-credentials-helper als Git-Credential-Helper. Der Helper benötigt ask-resources.json und .ask/ask-states.json neben dem Repo. Wenn Pushe mit 403 fehlschlagen, lösche das gecachte macOS-Keychain-Credential.
- Die gehostete Laufzeit kann eine alte Node-Version ausführen, also pinne eine S3-SDK-Version, die sie unterstützt, oder signiere URLs mit einer kleinen SigV4-Bibliothek.
- Lade das Sprachmodell mit ask smapi set-interaction-model hoch, überprüfe, dass das Skill-Manifest AUDIO_PLAYER auflistet, und teste mit ask smapi simulate-skill. Der Simulator der Web-Konsole kann kein Audio abspielen, daher ist ein "problem with the requested skill's response"-Fehler dort erwartbar.
Wenn es funktioniert, sage mir, wie ich Alexa-App-Routinen hinzufüge (Wann: Stimme "coffee jazz" → Aktion: Benutzerdefiniert "ask jukebox to play coffee jazz"), damit ich einfach "Alexa, coffee jazz" sagen kann. Und wie ich Internetradio-Stationen abspiele, die ich mag.
Melde dich an, um den vollständigen Prompt zu sehen
Weiter mit:
Mit der Anmeldung akzeptierst du unsere Nutzungsbedingungen und Datenschutz
Verwendung
Dieser Prompt ist für die Verwendung mit coding gedacht. Kopiere den Inhalt oben und füge ihn in dein bevorzugtes KI-Tool ein.
Für beste Ergebnisse passe die Platzhalter (eckige Klammern oder Großbuchstaben) an deine Anforderungen an.
Referenzen
- Kategorie: coding-Prompts
- Quelle: https://x.com/levelsio/status/2112624509714849840
Diskussion
0 Kommentare