existe-t-il un moyen simple d'utiliser SSML dans la section Fullfilment en utilisant les fonctions Actions-on-google. J'ai essayé toutes sortes de codage, mais aucun bon résultat. J'utilise le néerlandais comme langue par défaut.
Dans l'exemple ci-dessous, l'Assistant Google épelle chaque '
"status": 200, "headers": { "content-type": "application/json;charset=utf-8" }, "body": { "payload": { "google": { "expectUserResponse": true, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "<speak>Paul, je geluksnummer is 5<audio src=\"https://www.example.com/MY_MP3_FILE.mp3\"><desc>Geluid wordt afgespeeld</desc></audio></speak>" } } ], "suggestions": [ { "title": "Paars" }, { "title": "Geel" }, { "title": "Oranje" } ] } } } } }
Veuillez trouver ci-dessous les paramètres d'environnement:
Paramètres d'initiation Index.js:
{ "name": "codelab-level-three", "description": "Actions on Google Codelab Level 3", "author": "Google Inc", "private": true, "scripts": { "lint": "eslint .", "serve": "firebase serve --only functions", "shell": "firebase experimental:functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log" }, "dependencies": { "actions-on-google": "^2.0.0", "firebase-admin": "~5.8.1", "firebase-functions": "^0.8.1", "i18n": "^0.8.3" }, "devDependencies": { "eslint": "^4.19.0", "eslint-config-google": "^0.9.1" } }
package.json:
'use strict'; // Import the Dialogflow module and response creation dependencies // from the Actions on Google client library. const { dialogflow, BasicCard, Permission, Suggestions, Carousel, MediaObject, SimpleResponse, Table, Button // Image, } = require('actions-on-google'); // Import the firebase-functions package for deployment. const functions = require('firebase-functions'); // Instantiate the Dialogflow client. const app = dialogflow({debug: true});
La charge utile produite ressemble à ceci:
// Handle the Dialogflow intent named 'favorite color'. // The intent collects a parameter named 'color'. app.intent('favoriete kleur', (conv, {color}) => { const luckyNumber = color.length; const audioSound = 'https://www.example.com/MY_MP3_FILE.mp3'; // AoG currently only supports MP3! if (conv.user.storage.userName) { conv.ask(`<speak>${conv.user.storage.userName}, je geluksnummer is ${luckyNumber}<audio src="${audioSound}"><desc>Geluid wordt afgespeeld</desc></audio></speak>`); // Audio should have description conv.ask(new Suggestions('Paars', 'Geel', 'Oranje')); } else { conv.ask(`<speak>Je geluksnummer is ${luckyNumber}<audio src="${audioSound}"><desc>Geluid wordt afgespeeld</desc></audio></speak>`); conv.ask(new Suggestions('Paars', 'Geel', 'Oranje')); } });
3 Réponses :
Le problème le plus probable est que vous n'incluez pas de balise de fermeture
. Vous devriez donc probablement l'écrire comme quelque chose comme
conv.ask(`<speak>Je geluksnummer is ${luckyNumber}.` + `<audio src="${audioSound}"></audio></speak>`);
Merci de votre aide. En conséquence, le message d'erreur a disparu, mais le problème est toujours le même.
pour compléter ce que Prisoner a déjà dit, il y a d'autres problèmes.
app.intent('favoriete kleur', (conv, {color}) => { const luckyNumber = color.length; const audioSound = 'https://actions.google.com/sounds/v1/cartoon/clang_and_wobble.mp3'; // AoG currently only supports MP3! if (conv.user.storage.userName) { conv.ask(`<speak>${conv.user.storage.userName}, je geluksnummer is <audio src="${audioSound}"><desc>${luckyNumber}</desc></audio></speak>`); // Audio should have description conv.ask(new Suggestions('Paars', 'Geel', 'Oranje')); } else { conv.ask(`<speak>Je geluksnummer is <audio src="${audioSound}"><desc>${luckyNumber}</desc></audio></speak>`); conv.ask(new Suggestions('Paars', 'Geel', 'Oranje')); } });
J'espère que cela vous a aidé.
Merci Thomas et @Prisoner. La fermeture des balises a fait l'affaire en partie. J'ai également suivi le conseil d'utiliser un fichier MP3 pour le son. Je n'ai plus d'erreurs mais je n'entends pas l'audio dans Actions-on-Goolgle
Existe-t-il une sortie dans les journaux Firebase / Lambda? Des informations de débogage dans le simulateur?
Salut Thomas, il y a en effet un journal Firebase disponible. Mais c'est gros, quel genre d'informations recherchez-vous. Toutes les directions aideraient
La réponse à mon problème était simple: il suffit de lire le manuel. :-) Bien que .OGG et .MP3 soient pris en charge, le site Web devrait fournir HTTPS. Les sites Web qui ne sont pas sécurisés (comme HTTP) ne sont pas pris en charge. Vous trouverez ci-dessous l'exemple de fonction de test:
app.intent('favoriete muziek', conv => { const Optie = conv.parameters.optie; //Taalspecifieke meldingen const SoundLib = { '1': { description : 'Simple sound using .ogg', audiosound : 'https://actions.google.com/sounds/v1/alarms/alarm_clock.ogg', audiotext : 'You should hear an audio alarm signal', }, '2': { description : 'Music MP3 via HTTP', audiosound : 'http://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3', audiotext : 'You should hear a Jazz record called "Jazz in Paris" ', }, '3': { description : 'Longer MP3 file via HTTP', audiosound : 'http://www.navyband.navy.mil/anthems/anthems/netherlands.mp3', audiotext : 'You should hear now the Dutch National Anthem', }, '4': { description : 'short MP3 audio via HTTPS', audiosound : 'https://ia802508.us.archive.org/5/items/testmp3testfile/mpthreetest.mp3', audiotext : 'You should hear a short spoken intro text', }, }; const Sound = SoundLib[Optie]; var spraakzin = "<speak>This text is using <say-as interpret-as='verbatim'>SSML</say-as> followed by an audio file in a SimpleResponse box: <audio src='" + Sound.audiosound + "'>The audio file could not be processed</audio></speak>"; if (!conv.surface.capabilities.has("actions.capability.MEDIA_RESPONSE_AUDIO")) { conv.ask("Media response via audio is not supported on this device."); return; } conv.ask(new SimpleResponse({ speech: spraakzin, text: Sound.audiotext, })); });
Pour plus d'informations, cliquez ici: Exemples de SSML - regardez les prérequis de AUDIO
Grâce à l'aide des réactions ci-dessous, j'ai changé le code, mais le problème est toujours le même. Je n'entends pas le son et même la phrase autour du son n'est visible que dans l'environnement de test (pas de son).