3.8 KiB
3.8 KiB
Plan d'implémentation - Fonction Callback Suno
Objectif
Créer une cloud function qui servira de callback pour l'API Suno afin de recevoir les notifications lorsque la génération de musique est terminée.
Problèmes identifiés
- Besoin d'une URL de callback pour l'API Suno
- Gestion des notifications de fin de génération
- Mise à jour automatique du statut dans Firestore
- Traitement des erreurs de callback
Solutions appliquées
✅ 1. Création de la fonction callback
- Créé
/functions/src/callback.js - Fonction
sunoCallbackavec méthode POST uniquement - Validation des données reçues
- Gestion des erreurs avec logs émojis
✅ 2. Traitement des données callback
- Extraction des paramètres de l'API Suno :
id: Identifiant de la générationstatus: Statut de la générationaudio_url: URL du fichier audiovideo_url: URL du fichier vidéoimage_url: URL de l'image de couverturelyric: Paroles généréestitle: Titre de la chansontags: Style musicalduration: Durée de la chansonerror_message: Message d'erreur si échec
✅ 3. Mise à jour Firestore
- Recherche du document correspondant par ID
- Mise à jour des champs :
status: Nouveau statutaudioUrl: URL audio si disponiblevideoUrl: URL vidéo si disponibleimageUrl: URL image si disponiblelyrics: Paroles si disponiblestitle: Titre si disponiblestyle: Style si disponibleduration: Durée si disponibleerrorMessage: Message d'erreur si échecupdatedAt: Timestamp de mise à jour
✅ 4. Configuration de l'URL callback
- Mis à jour
SUNO_CALLBACK_URLdansmusic.js - URL :
https://us-central1-musicland-app.cloudfunctions.net/sunoCallback - Intégration dans le payload de génération
✅ 5. Export de la fonction
- Ajouté l'export dans
functions/index.js - Fonction accessible via Firebase Functions
Structure de la fonction callback
exports.sunoCallback = onRequest({
cors: true,
methods: ["POST"],
}, async (req, res) => {
// Validation de la méthode
// Extraction des données
// Recherche du document Firestore
// Mise à jour des données
// Réponse de succès/erreur
});
Gestion des erreurs
- ✅ Validation de la méthode HTTP (POST uniquement)
- ✅ Vérification de la présence de l'ID
- ✅ Vérification de l'existence du document Firestore
- ✅ Gestion des erreurs de mise à jour
- ✅ Logs avec émojis pour faciliter le debugging
Réponses de la fonction
Succès (200)
{
"success": true,
"message": "Callback traité avec succès",
"id": "generation_id",
"status": "completed"
}
Erreurs
- 405 : Méthode non autorisée
- 400 : ID manquant
- 404 : Document non trouvé
- 500 : Erreur interne du serveur
Tests à effectuer
- Tester la fonction avec un payload de test
- Vérifier la mise à jour Firestore
- Tester les cas d'erreur
- Vérifier les logs
- Tester l'intégration avec l'API Suno
Déploiement
- Déployer les functions :
firebase deploy --only functions - Vérifier l'URL de la fonction déployée
- Tester la fonction en production
Notes importantes
- La fonction utilise
onRequestpour accepter les callbacks HTTP - CORS activé pour permettre les appels externes
- Seules les requêtes POST sont acceptées
- Les logs utilisent des émojis pour faciliter le debugging
- La fonction met à jour automatiquement le timestamp
updatedAt
Fichiers modifiés
- ✅
/functions/src/callback.js(créé) - ✅
/functions/src/music.js(SUNO_CALLBACK_URL mis à jour) - ✅
/functions/index.js(export ajouté) - ✅
/plans/suno-callback-implementation.md(ce fichier)