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

问题描述

一个场景中多次调用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')

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...