javascript - 使用 Google Actions 的 Node.js 客户端将音频流式传输到 Google Home?
问题描述
我正在尝试将音频文件从 AWS 的 S3 云托管服务流式传输到我的 Google Home。音频是 Rasa 机器人输出的文本到语音渲染。该机器人输出响应用户输入,该输入通过同一 Google Home 设备上的 Google Assistant 捕获。Rasa bot 与 Dialogflow 代理集成,因此它可以在这些 Google 平台上运行。
因此,整个应用程序中的信号流如下:
1.) Google Home ---> Google Assistant
2.) 谷歌助手---> Dialogflow
3.) Dialogflow ---> Rasa Bot
4.) Rasa Bot ---> S3 上的音频文件
5.) 音频文件 ---> Google Home?
有人对我如何做到这一点有任何帮助吗?我的代码如下,下面也有一个快速解释:
const { actionssdk,dialogflow, } = require('actions-on-google')
const assistant = actionssdk();
app.post('/assistant', assistant);
assistant.intent('', conv => {
conv.ask(new MediaObject({
name: 'botsAudioResponse',
url: 'https://rapbot.s3.amazonaws.com/hi.mp3',
description: `An audio rendering of my Rasa bot's response`
}));
});
我让 Rasa 机器人向我的 Node.js 应用程序中的“/assistant”端点发送一个 POST 请求。然后,该端点调用 npm Google Actions 库中的 .assistant() 函数。该 .assistant() 函数是 { actions sdk } 对象的实例化,该对象来自“actions-on-google”npm 库。但是,当调用 conv.ask(...) 时,什么也没有发生!
我希望将一条消息打印到我的 Dialogflow 代理的文本框中,但它没有。我也尝试了简单的东西,比如 conv.ask('Hello!'),但也无法让它工作。当我在 assistant.intent() 中控制台记录 conv 参数时,它缺少很多我的 Google Actions Tester 控制台告诉我应该包含的信息(用户名等)
这个 Stack Overflow 链接真的很有帮助:[“Actions on Google——播放音频流?”][是否可以播放音频文件或流?
这是我从中获得 conv.ask(new Media Object({...}) 代码的地方,但我无法完全弄清楚如何确保我的助手实例引用正确的 Dialogflow 代理。所以,我怀疑是我正在调用 conv.ask() 方法,但它没有被发送到任何地方(或正确的地方)。
我尝试使用可以从 Google 下载的密钥设置 .JSON 文件作为终端窗口中的环境变量,但仍然——不走运!:( 哈哈
谢谢你的帮助!
解决方案
推荐阅读
- shell - ${$1:-"world"} 中的“错误替换”
- mysql - BigQuery:如何对 2.5 年的用户群进行同期群/留存分析?
- powershell - 如何将 2 个属性合并到 AD 对象的单个输出中?
- reactjs - 无法从“App.js”解析“./aws-exports”
- scala - 迭代数据框时任务不可序列化,scala
- python - Google Admin SDK 延迟
- firebase - Firebase 托管重写在本地工作但不在云中工作 - 错误?
- jquery - JQuery - 调用相同的页面但使用不同的模型数据
- javascript - 在使用 Datatables (JS) 下载文件之前和之后执行代码
- arrays - 在字典中快速添加键值对