首页 > 解决方案 > 使用 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 文件作为终端窗口中的环境变量,但仍然——不走运!:( 哈哈

谢谢你的帮助!

标签: javascriptnode.jsstreaming

解决方案


推荐阅读