Действия Google с SSML отклонены из-за наличия тегов HTML

На прошлой неделе я отправил свое первое действие в Google.

Я написал код, используя Dialogflow и WebhookClient, и выбрал два языка - английский и хинди.

Мое действие было одобрено для английского языка, но вернуло статус "отказано" для хинди с обзором "ऐप प्रतिक्रियाओं में एचटीएमएल टैग हैं |" («Ответы приложений содержат HTML-теги»)

У меня есть 2 связанных вопроса относительно этого обзора -

  1. I am using ssml that I learnt from the following reference 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);
   }

Это правильный способ сделать это?

  1. Ниже приведен пример, приведенный в обзоре с отклонением. Но пример ответа - это тот, который использовался в версии 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"
    }
  }
}

person Arushi Pant    schedule 26.09.2018    source источник


Ответы (1)


Похоже, что-то странно в том, как displayText генерируется из SSML, который вы предоставляете. Как правило, это должно происходить за кулисами для вас, но похоже, что в этом случае это не так - возможно, из-за используемого набора символов?

Вы можете обойти это, явно задав SSML и текст самостоятельно. Поэтому вместо строки agent.add(ssml) вы можете создать переменную text, содержащую только текст того, что вы хотите показать, и добавить его с чем-то вроде

agent.add(new SimpleResponse({
  speech: ssml,
  text:   text
}));
person Prisoner    schedule 26.09.2018
comment
Спасибо. Ваше предложение сработало. Мое действие одобрено. Единственное, что я получал ошибку сервера в моем коде при использовании agent.add Итак, я добавил новый SimpleResponse как - conv.ask (new SimpleResponse ({speech: ssml, text: text})); agent.add (conv); - person Arushi Pant; 28.09.2018