Dialogflow - 如何处理数字识别中的空白

Dialogflow - How to handle blanks in number recognition

在我的 Dialogflow 中,我使用实体 @sys.number 来识别用户说出的 12 位数字。根据用户拼写数字的方式,它不会被识别为单个 12 位数字,但有时会被识别为两个数字,3 和 9、6 和 6 或其他任何数字。但是,Dialogflow 按预期识别“123 456 789 123”,这对我来说似乎是一种非常随机的行为。

如何让 Dialogflow 将任意 12 位数字识别为 12 位数字?

到目前为止我尝试过的:

Google 为用户输入数字时的每次停顿添加空格,这就是为什么您的数字有时会出现随机空白的原因。

当我必须识别由 9 个字符(字母或数字)组成的产品代码时,我遇到了类似的问题。在我的方法中,我使用 @sys.any 参数作为输入。一旦用户输入了一个字符串,我就从输入中删除了所有的空格,这样我就能把这个句子拼成一个片段。之后我使用正则表达式提取代码。

  const response = conv.parameters.input;
  // remove whitespaces
  const textWithoutWhitespaces = response.replace(/\s/g,"");
  // Look into the string for a 12 digit number
  const regExp = new RegExp(/\d{12}/g);
  const result = regExp.test(textWithoutWhitespaces);

  if(result === true) {
    // continue
  }
  else { 
   // error
  };

如果找不到输入,我会 conv.ask() 并要求用户重新输入。否则我会继续代码。

让你的话语以数字结尾有意义吗?

如果是这样,我可能会尝试确保将数字放在末尾,然后我们@sys.any 来捕捉他们说的任何内容。到那时,将所有数字连接在一起可能会奏效,但显然你必须处理他们说的不是有效数字的情况。

或者让用户说 "One hundred and twenty three billion, four hundred and fifty six million, seven hundred and eighty nine thousand, six hundred and sixty six." 简单易行 :-p