Créez une compétence Alexa Jukebox privée pour vos MP3 personnels et la radio Internet
De Wikiprompt, l’encyclopédie libre de prompts
Créez une compétence Alexa Jukebox privée pour vos MP3 personnels et la radio Internet Une invite complète pour créer une compétence Alexa privée qui joue des MP3 personnels depuis un bucket cloud et une radio internet, avec des instructions détaillées de configuration, de création et de déploiement.
Contenu du PromptEnregistrer
🌐
Créez-moi une compétence Alexa privée qui joue ma propre musique depuis un bucket cloud, plus la radio internet
Je veux que mon Amazon Echo joue mes propres MP3 au lieu d'être obligé d'utiliser Amazon Music ou Spotify. Créez une compétence Alexa privée pour cela. Faites autant que possible vous-même : utilisez les CLI et les API, déployez et testez vous-même, et ne me demandez que les choses qu'une personne peut faire (se connecter, cliquer sur Autoriser, tester sur l'Echo).
Configuration
- Ma musique se trouve dans un bucket compatible S3 (AWS S3 ou Cloudflare R2) sous un préfixe music/. Chaque dossier sous ce préfixe est un genre/playlist (music/Coffee Jazz/) ou un artiste/album (music/Artist/Album/).
- Je créerai une clé d'accès pour le bucket et vous la donnerai. Conservez-la dans un fichier de configuration et ne l'imprimez jamais. La compétence n'a besoin que d'un accès en lecture ; les outils de téléversement ont besoin d'un accès en écriture.
- Mon Echo et mon compte développeur Amazon utilisent la même connexion Amazon.
Construction
1. Une compétence personnalisée hébergée par Alexa (Node.js) avec un nom d'invocation "jukebox" (utilisez deux mots si Amazon rejette un seul mot) et l'interface AudioPlayer activée.
2. Modèle vocal : une PlayIntent avec un slot AMAZON.SearchQuery ("joue {query}", "mets {query}", "branche-toi sur {query}", "mélange {query}"), une ShuffleAllIntent, une WhatsPlayingIntent, une ListStationsIntent, et toutes les intentions AudioPlayer intégrées (pause, reprendre, suivant, précédent, boucle activée/désactivée, mélange activé/désactivé, recommencer).
3. Bibliothèque : listez tout ce qui se trouve sous music/ avec ListObjectsV2 (suivez le jeton de continuation), construisez les dossiers à partir des préfixes de clés, ne gardez que les fichiers .mp3/.m4a/.aac, et mettez en cache le résultat pendant 5 minutes. Faites correspondre les phrases parlées aux noms de dossiers et de fichiers de manière approximative : ignorez les numéros de piste et les espaces ("ama piano" = amapiano), transformez les nombres en chiffres ("thirteen beaches" = 13 Beaches), et gérez les alias de genres (dnb, drum and bass, hiphop, lo fi).
4. Lecture : donnez à Alexa une URL HTTPS GET pré-signée pour chaque fichier. Rendez-la valide pendant au moins 12 heures pour que les longues playlists et la pause/reprise n'expirent pas en plein milieu de la lecture. Gardez le bucket privé. Stockez la file d'attente de lecture dans le jeton AudioPlayer (dossier, graine de mélange, position) pour qu'il n'y ait pas de base de données, et mettez en file la piste suivante sur PlaybackNearlyFinished. Les dossiers se mélangent et bouclent. Un dossier dont tous les fichiers commencent par des numéros de piste est un album et se joue dans l'ordre. Une seule chanson continue avec le reste de son dossier.
5. Radio : une liste de stations de flux HTTPS MP3/AAC/HLS, avec de bonnes stations électroniques underground (Rinse FM, NTS, Bassdrive, Intergalactic FM, Kiosk Radio, Refuge Worldwide, et ainsi de suite) plus les actualités (BBC World Service, NPR). Testez chaque URL avec curl d'abord et supprimez celles en HTTP simple, car Alexa les refuse. Prenez en charge "joue rinse fm", "radio drum and bass", "radio techno" et "les actualités", et faites en sorte que suivant/précédent change de station. Les flux en direct chutent et Alexa traite une chute comme une fin, donc remettez en file le même flux avec un nouveau jeton sur PlaybackNearlyFinished, et réessayez une fois sur PlaybackFailed.
6. Journalisez une ligne par requête (type, intention, jeton, décalage, erreur) pour que les problèmes de lecture apparaissent dans CloudWatch.
Déploiement sans la console web
- Installez le CLI ASK (npm i -g ask-cli). Si ask configure ne fonctionne pas dans votre shell, exécutez ask util generate-lwa-tokens --no-browser, faites-moi coller le code à usage unique, et écrivez ~/.ask/cli_config vous-même. Obtenez l'ID de vendeur depuis GET https://t.co/8eS787CaBt.
- Le code de la compétence hébergée est un dépôt git (trouvez-le avec ask smapi get-alexa-hosted-skill-metadata). Poussez vers master pour déployer, avec ask util git-credentials-helper comme assistant d'identification git. L'assistant a besoin de ask-resources.json et .ask/ask-states.json à côté du dépôt. Si les poussées commencent à échouer avec 403, effacez l'identification en cache du trousseau macOS.
- Le runtime hébergé peut exécuter une ancienne version de Node, donc épinglez une version du SDK S3 qui la prend en charge, ou signez les URL avec une petite bibliothèque SigV4.
- Téléversez le modèle vocal avec ask smapi set-interaction-model, vérifiez que le manifeste de la compétence liste AUDIO_PLAYER, et testez avec ask smapi simulate-skill. Le simulateur de la console web ne peut pas jouer l'audio, donc une erreur "problème avec la réponse de la compétence demandée" y est attendue.
Quand cela fonctionne, dites-moi comment ajouter des routines dans l'application Alexa (Quand : voix "coffee jazz" → Action : Personnalisé "demande à jukebox de jouer coffee jazz") pour que je puisse simplement dire "Alexa, coffee jazz". Et comment jouer les stations de radio internet que j'aime.
Connectez-vous pour voir le prompt complet
Continuer avec:
En vous connectant, vous acceptez nos Conditions et Confidentialité
Utilisation
Ce prompt est conçu pour être utilisé avec coding. Copiez le contenu ci-dessus et collez-le dans votre outil d’IA préféré.
Pour de meilleurs résultats, personnalisez les espaces réservés (indiqués par des crochets ou des majuscules) selon vos besoins.
Références
- Catégorie: Prompts coding
- Source: https://x.com/levelsio/status/2112624509714849840
Discussion
0 commentaires