Google webhook 调用的操作 - 为语音响应添加延迟

Actions on Google webhook call - add a delay to speech response

我正在尝试制作自己的 Google 辅助操作。我正在向我的 Google 助理发回 Json 回复。 Google 助理收到回复并阅读文本。目前一切顺利。

现在我想做以下事情。 Google 助手应该阅读: “Test 123”然后延迟 1 秒...然后最后读“Test321”

我应该如何调整我的 Json 响应以使其适用于延迟?可能吗?

我通过 ASP.NET

生成 JSON 响应对象

我的主Class

[HttpPost]
public async Task<IActionResult> PostWebHook()
{

    Google_Assistant_Request_Json.RequestJson request = new Google_Assistant_Request_Json.RequestJson(); //Request Object
    Google_Assistant_Response_Json.ResponseJson response = new Google_Assistant_Response_Json.ResponseJson(); //Response Object

    string body;
    using (var reader = new StreamReader(Request.Body))
    {
        
        body = await reader.ReadToEndAsync();
        request = JsonConvert.DeserializeObject<Google_Assistant_Request_Json.RequestJson>(body);

            response.session.id = request.session.id;
            response.prompt.@override = false;
            response.prompt.firstSimple.speech = "Test123";
            response.prompt.lastSimple.speech = "Test321";
      
    }

    return Ok(response);
}

最简单的方法是使用 SSML as your speech response and to include a <break> 标记来生成暂停。

因此您的 SSML 可能类似于:

<speak>
Test 123 <break time="1s"/> Test 321
</speak>

请注意,这应该是您在回复中用于“语音”字段的内容。 “文本”字段应包含 SSML 标记,并且默认情况下无法确保文本的第二部分在 1 秒延迟后出现 - 显示所有文本立刻。 (有一些涉及 Interactive Canvas and the SSML <mark> 标签的高级技术,但是这些技术对其使用有一些限制。)

根据您的代码,它可能看起来像这样:

response.prompt.firstSimple.speech = "<speak>Test123 <break time='1s'/> Test321</speak>";
response.prompt.firstSimple.text   = "Test123 Test321";

或者,如果您有充分的理由同时使用 firstSimplelastSimple

response.prompt.firstSimple.speech = "<speak>Test123 <break time='1s'/></speak>";
response.prompt.firstSimple.text   = "Test123";
response.prompt.lastSimple.speech  = "<speak>Test321</speak>";
response.prompt.lastSimple.text    = "Test321";