Google "having HTML tags" 拒绝使用 SSML 的操作
Google Action with SSML rejected for "having HTML tags"
我上周在 Google 上提交了我的第一个行动。
我使用 Dialogflow 和 WebhookClient 编写了代码,并针对 2 种语言 - 英语和印地语。
我的 Action 获得了英语版的批准,但又获得了印地语版的 "denied" 状态,评论为“ऐप प्रतिक्rie” ("App responses have HTML tags")
我有 2 个关于此评论的相关问题 -
- 我正在使用从以下参考资料中学到的 ssml material -
看来,我完全按照文件做的。
我的代码看起来像这样 -
function repeatWord(agent) {
let sessionContext = agent.getContext(KEY_SESSION);
let sessionParams = sessionContext.parameters;
let currentWord =
sessionParams.words[sessionParams.currentIndexPosition];
let ssml;
if(sessionParams.userLang === 'hi'){
ssml = `<speak>\n ठीक है। शब्द <sub alias =
'${currentWord[KEY_PRONOUNCE]}'>${currentWord[KEY_WORD]}
</sub> है।
<break time='500ms'/>\n हिंदी में, इसका मतलब होगा
${currentWord[KEY_MEANING]} । </speak>` ;
agent.add(new Suggestion('अगला शब्द'));
agent.add(new Suggestion('दोहराना'));
} else {
ssml = `<speak>\n Ok! Let's do this again.
\n The word is <sub alias =
'${currentWord[KEY_PRONOUNCE]}'>${currentWord[KEY_WORD]}
.</sub>
<break time='500ms'/>\n In English, it would mean
${currentWord[KEY_MEANING]} .</speak>` ;
agent.add(new Suggestion('next word'));
agent.add(new Suggestion('repeat'));
}
agent.add(ssml);
}
这样做正确吗?
下面给出了review被拒的例子。但是,示例响应是版本 1 中使用的响应 -
<speak><p><s>ठीक है। शब्द <sub alias='sthaalikaa'>स्थालिका </sub> है।</s> <s> हिंदी में, इसका मतलब होगा थाली ।</s></p></speak> <speak><p><s> हमारा पहला शब्द आज <sub alias='sthaalikaa'>स्थालिका </sub> है।</s> <s> हिंदी में, इसका मतलब होगा थाली । </s></p></speak>
我在版本 2 中的新回复如下所示 -
<speak>\n ठीक है। शब्द <sub alias='adhyaapikaa'>अध्यापिका </sub> है।\n <break time='500ms'/>\n हिंदी में, इसका मतलब होगा शिक्षक (महिला) । </speak>
我的版本 1 是否有可能重新提交审核?如何更新版本以供审核?它正在模拟器中更新。
模拟器中的响应记录为 -
{
"conversationToken": "[\"learn\",\"select-track\",\"session_vars\"]",
"expectUserResponse": true,
"expectedInputs": [
{
"inputPrompt": {
"richInitialPrompt": {
"items": [
{
"simpleResponse": {
"textToSpeech": " ",
"displayText": " "
}
},
{
"simpleResponse": {
"textToSpeech": "<speak>\n ठीक है। शब्द <sub alias='vaatikaa'>वाटिका </sub> है।\n <break time='500ms'/>\n हिंदी में, इसका मतलब होगा वाटिका । </speak>",
"displayText": "<speak>\n ठीक है। शब्द <sub alias='vaatikaa'>वाटिका </sub> है।\n <break time='500ms'/>\n हिंदी में, इसका मतलब होगा वाटिका । </speak>"
}
}
],
"suggestions": [
{
"title": "अगला शब्द"
},
{
"title": "दोहराना"
}
]
}
},
"possibleIntents": [
{
"intent": "assistant.intent.action.TEXT"
},
{
"intent": "9c81a50f-4016-42f1-af46-43c5935cfd7a"
},
{
"intent": "720a2df8-c900-43bb-a2bd-bc42ced8661e"
},
{
"intent": "6e209797-e4f1-43aa-bbe6-3ee36bd3b416"
},
{
"intent": "c5b09a55-3b1e-47c8-9500-508adaf5fe87"
}
],
"speechBiasingHints": [
"$answer",
"$track"
]
}
],
"responseMetadata": {
"status": {
"message": "Success (200)"
},
"queryMatchInfo": {
"queryMatched": true,
"intent": "6e209797-e4f1-43aa-bbe6-3ee36bd3b416"
}
}
}
从您提供的 SSML 生成 displayText
的方式似乎有些奇怪。通常,这应该在幕后为您处理,但在这种情况下听起来并非如此 - 可能是因为使用的字符集?
您可以通过自己明确设置 SSML 和文本来解决此问题。因此,您可以构建一个 text
变量,而不是 agent.add(ssml)
行,它只包含您想要显示的文本,并添加类似
的内容
agent.add(new SimpleResponse({
speech: ssml,
text: text
}));
我上周在 Google 上提交了我的第一个行动。
我使用 Dialogflow 和 WebhookClient 编写了代码,并针对 2 种语言 - 英语和印地语。
我的 Action 获得了英语版的批准,但又获得了印地语版的 "denied" 状态,评论为“ऐप प्रतिक्rie” ("App responses have HTML tags")
我有 2 个关于此评论的相关问题 -
- 我正在使用从以下参考资料中学到的 ssml material -
看来,我完全按照文件做的。
我的代码看起来像这样 -
function repeatWord(agent) {
let sessionContext = agent.getContext(KEY_SESSION);
let sessionParams = sessionContext.parameters;
let currentWord =
sessionParams.words[sessionParams.currentIndexPosition];
let ssml;
if(sessionParams.userLang === 'hi'){
ssml = `<speak>\n ठीक है। शब्द <sub alias =
'${currentWord[KEY_PRONOUNCE]}'>${currentWord[KEY_WORD]}
</sub> है।
<break time='500ms'/>\n हिंदी में, इसका मतलब होगा
${currentWord[KEY_MEANING]} । </speak>` ;
agent.add(new Suggestion('अगला शब्द'));
agent.add(new Suggestion('दोहराना'));
} else {
ssml = `<speak>\n Ok! Let's do this again.
\n The word is <sub alias =
'${currentWord[KEY_PRONOUNCE]}'>${currentWord[KEY_WORD]}
.</sub>
<break time='500ms'/>\n In English, it would mean
${currentWord[KEY_MEANING]} .</speak>` ;
agent.add(new Suggestion('next word'));
agent.add(new Suggestion('repeat'));
}
agent.add(ssml);
}
这样做正确吗?
下面给出了review被拒的例子。但是,示例响应是版本 1 中使用的响应 -
<speak><p><s>ठीक है। शब्द <sub alias='sthaalikaa'>स्थालिका </sub> है।</s> <s> हिंदी में, इसका मतलब होगा थाली ।</s></p></speak> <speak><p><s> हमारा पहला शब्द आज <sub alias='sthaalikaa'>स्थालिका </sub> है।</s> <s> हिंदी में, इसका मतलब होगा थाली । </s></p></speak>
我在版本 2 中的新回复如下所示 -
<speak>\n ठीक है। शब्द <sub alias='adhyaapikaa'>अध्यापिका </sub> है।\n <break time='500ms'/>\n हिंदी में, इसका मतलब होगा शिक्षक (महिला) । </speak>
我的版本 1 是否有可能重新提交审核?如何更新版本以供审核?它正在模拟器中更新。
模拟器中的响应记录为 -
{
"conversationToken": "[\"learn\",\"select-track\",\"session_vars\"]",
"expectUserResponse": true,
"expectedInputs": [
{
"inputPrompt": {
"richInitialPrompt": {
"items": [
{
"simpleResponse": {
"textToSpeech": " ",
"displayText": " "
}
},
{
"simpleResponse": {
"textToSpeech": "<speak>\n ठीक है। शब्द <sub alias='vaatikaa'>वाटिका </sub> है।\n <break time='500ms'/>\n हिंदी में, इसका मतलब होगा वाटिका । </speak>",
"displayText": "<speak>\n ठीक है। शब्द <sub alias='vaatikaa'>वाटिका </sub> है।\n <break time='500ms'/>\n हिंदी में, इसका मतलब होगा वाटिका । </speak>"
}
}
],
"suggestions": [
{
"title": "अगला शब्द"
},
{
"title": "दोहराना"
}
]
}
},
"possibleIntents": [
{
"intent": "assistant.intent.action.TEXT"
},
{
"intent": "9c81a50f-4016-42f1-af46-43c5935cfd7a"
},
{
"intent": "720a2df8-c900-43bb-a2bd-bc42ced8661e"
},
{
"intent": "6e209797-e4f1-43aa-bbe6-3ee36bd3b416"
},
{
"intent": "c5b09a55-3b1e-47c8-9500-508adaf5fe87"
}
],
"speechBiasingHints": [
"$answer",
"$track"
]
}
],
"responseMetadata": {
"status": {
"message": "Success (200)"
},
"queryMatchInfo": {
"queryMatched": true,
"intent": "6e209797-e4f1-43aa-bbe6-3ee36bd3b416"
}
}
}
从您提供的 SSML 生成 displayText
的方式似乎有些奇怪。通常,这应该在幕后为您处理,但在这种情况下听起来并非如此 - 可能是因为使用的字符集?
您可以通过自己明确设置 SSML 和文本来解决此问题。因此,您可以构建一个 text
变量,而不是 agent.add(ssml)
行,它只包含您想要显示的文本,并添加类似
agent.add(new SimpleResponse({
speech: ssml,
text: text
}));