Actions on google 为google action函数中的值创建实体和培训短语

Actions on google 为google action函数中的值创建实体和培训短语,actions-on-google,Actions On Google,我使用SDK创建了一个琐事游戏,它接受用户输入,然后将其与数据库中的值进行比较,以查看其是否正确 目前,我只是在对话中传递一个原始输入变量,这意味着当它错误地听取用户的意见时,它通常会失败,因为提取的确切字符串很少==到数据库中的值 具体来说,我希望它只提取数字,例如,它必须从“我的答案是10”的语音输入中提取“10” { "actions": [ { "description": "Default Welcome Intent", "name": "MA

我使用SDK创建了一个琐事游戏,它接受用户输入,然后将其与数据库中的值进行比较,以查看其是否正确

目前,我只是在对话中传递一个原始输入变量,这意味着当它错误地听取用户的意见时,它通常会失败,因为提取的确切字符串很少==到数据库中的值

具体来说,我希望它只提取数字,例如,它必须从“我的答案是10”的语音输入中提取“10”

  {
  "actions": [
    {
      "description": "Default Welcome Intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "welcome"
      },
      "intent": {
        "name": "actions.intent.MAIN"
      }
    },
    {
      "description": "response",
      "name": "Raw input",
      "fulfillment": {
        "conversationName": "rawInput"
      },
      "intent": {
        "name": "raw.input",
        "parameters": [{
          "name": "number",
          "type": "org.schema.type.Number"
        }],
        "trigger": {
          "queryPatterns":[
            "$org.schema.type.Number:number is the answer",
            "$org.schema.type.Number:number",
            "My answer is $org.schema.type.Number:number"
          ]
        }
      }
    }
  ],
  "conversations": {
    "welcome": {
      "name": "welcome",
      "url": "https://us-central1-triviagame",
      "fulfillmentApiVersion": 2
    },
    "rawInput": {
      "name": "rawInput",
      "url": "https://us-central1-triviagame",
      "fulfillmentApiVersion": 2
    }
  }
}

app.intent('actions.intent.MAIN', (conv) => {
  conv.data.answers = answersArr;
  conv.data.questions = questionsArr;
  conv.data.counter = answersArr.length;
  var thisQuestion = conv.data.questions;
  conv.ask((conv.data.answers)[0]));
});

app.intent('raw.input', (conv, input) => {

if(input == ((conv.data.answers)[0])){


       conv.ask(nextQuestion());
}


app.intent('actions.intent.TEXT', (conv,input) => {
 //verifying if input and db value are equal
// at the moment input is equal to 'my number is 10' (for example) instead of '10'

//therefore the string verification never works
conv.ask(nextQuestion());

});
在上一个项目中,我使用了dialogflow UI,并使用了@system.entities number参数以及创建一些训练短语,以便它理解不同的语音模式

我通过我的
conv
传递的
input
参数只是一个原始字符串,我希望使用某种实体模式对其进行过滤


如何使用JSON文件创建与培训短语/实体相同的效果

仅使用Action SDK是无法做到这一点的。您还需要一个自然语言处理系统(如Dialogflow)来处理这个问题。Action SDK本身将进行语音到文本的转换,并将使用actions.json配置帮助确定如何解释文本。但它只会从用户那里返回整个文本——它不会尝试确定它如何匹配意图,也不会确定其中可能存在哪些参数

为此,您需要一个NLP/NLU系统。您不需要使用Dialogflow,但需要一些进行解析的东西。试图用简单的模式匹配或正则表达式来做这件事会导致噩梦——找到一个好的系统来做


如果您想坚持自己可以编辑的内容,Dialogflow确实允许您下载其配置文件(它们只是JSON),编辑它们,并通过UI或API更新或替换配置。

对于此项目,您使用Actions SDK而不是Dialogflow有何原因?使用Dialogflow,您可以利用ML更好地匹配潜在实体,而使用Actions SDK,您需要自己进行匹配。我宁愿在IDE中完成所有操作,而不是在web UI和IDE之间跳跃。谢谢,我刚刚发布了一个类似的问题,但我想答案与此完全相同!我注意到,当从其他项目下载json时,它们被分解为每个单独的意图,这是否意味着我需要为我拥有的每个json运行这个
gactions更新--action\u package eachfile.json--project projectd
?我想你的意思是“当[you]从Dialogflow项目下载JSON。Dialogflow JSON格式不同于Action SDK的actions.JSON。您不会使用
gactions
来基于它们进行更新。我的观点是,如果您想要编辑配置,您可以编辑Dialogflow配置,您不需要使用web UI。