问题描述
在一个场景中多次调用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无效并且不会被说出。
有时语音对象完全丢失。
解决方法
因此发现合并的Bug与无效的SSML有关。不幸的是,Google没有针对SSML错误的错误消息。
作为解决语音对象完全丢失的问题的一种解决方法,我将conv.add(new Simple('Text'))
更改为conv.prompt.firstSimple = new Simple('Text')
或conv.prompt.lastSimple = new Simple('Text')
。