我可以通过以下内容从我的DialogFlow实现内联编辑器webhook播放声音。
function saySSML (request, response) {
const app = new DialogflowApp({request: request, response: response});
const textToSpeech = '<speak>'
+ 'I can play a sound'
+ '<audio src="https://actions.google.com/sounds/v1/animals/animal_bark_and_growl.ogg">a digital watch alarm</audio>'
+ '</speak>';
app.ask(textToSpeech);
}
但是,我无法弄清楚如何在Firebase存储中播放音频文件。我已尝试将音频网址替换为文件的存储位置,并在点击Firebase存储中的文件时将其替换为DownloadUrl1网址。
我还考虑按照https://firebase.google.com/docs/storage/web/create-reference创建存储引用 但是当我添加对存储服务的引用时,我得到'firebase not defined'错误。
function saySSML (request, response) {
const app = new DialogflowApp({request: request, response: response});
// Get a reference to the storage service, which is used to create references in your storage bucket
var storage = firebase.storage();
// Create a storage reference from our storage service
var storageRef = storage.ref();
const textToSpeech = '<speak>'
+ 'I can play a sound'
+ '<audio src="https://firebasestorage.googleapis.com/v0/b/andrewdittmer-c301f.appspot.com/o/alarm_clock.ogg?alt=media&token=d66a4055-5365-4061-b50d-0b6a126841f3">a digital watch alarm</audio>'
+ '</speak>';
app.ask(textToSpeech);
}
有没有人能够成功地做到这一点?
感谢您提供任何帮助/指示。
答案 0 :(得分:2)
Google智能助理的SSML解析器非常严格。您的网址中的&
需要进行转义,因此结果应为&
。 Line可能看起来像这样:
+ '<audio src="https://firebasestorage.googleapis.com/v0/b/andrewdittmer-c301f.appspot.com/o/alarm_clock.ogg?alt=media&token=d66a4055-5365-4061-b50d-0b6a126841f3">a digital watch alarm</audio>'
或者,如果您已经使用Firebase,并且您的音频资源是静态的,则可能需要将音频存储在Firebase Hosting中。