合并来自多个 webhook 请求的简单响应时的错误

Bug at merging Simple Responses from multiple webhook requests

在一个场景中多次调用 webhook 并发送简单响应时,合并简单响应时出现错误。

来自第一个 webhook 调用的提示

{
    "override": false,
    "firstSimple": {
        "speech": "<speak><audio src=\"https://www.example.com/audio/file1.mp3\"></speak>",
        "text": "Text 1"
    }
}

第二次 webhook 调用提示

{
    "override": false,
    "firstSimple": {
        "speech": "<speak><audio src=\"https://www.example.com/audio/file2.mp3\"></audio> <audio src=\"https://www.example.com/audio/file3.mp3\"></audio></speak>",
        "text": " Text 2"
    }
}

在发送给用户的响应中合并了提示

{
    "firstSimple": {
        "speech": "<speak><speak><audio src=\"https://www.example.com/audio/file1.mp3\"></speak> <audio src=\"https://www.example.com/audio/file2.mp3\"/> <audio src=\"https://www.example.com/audio/file3.mp3\"/></speak>",
        "text": "Text 1 Text2"
    }
}

所以对于两个 speak 标签,SSML 是无效的并且没有被说出来。 有时语音对象完全丢失。

我已经为此创建了 Github issue

所以发现合并Bug与无效的SSML有关。遗憾的是,Google 没有针对 SSML 错误的错误消息。

为了解决语音对象完全丢失的问题,我将 conv.add(new Simple('Text')) 更改为 conv.prompt.firstSimple = new Simple('Text')conv.prompt.lastSimple = new Simple('Text')