为什么要在Dialogflow中使用动作

流浪者

我是Dialogflow的新手,所以我的问题可能太简单了。但是,我不明白actions在Dialogflow中命名的目的是什么我已经在youtube上观看了视频,并且其中的人在使用网络actions挂钩时正在使用例如,他们的源代码中可能有一个if条件(例如,在python中)

if action == 'action_name':
...

)在这种情况下执行某些特殊操作。

但是,由源代码检索的json输出具有以下形式:

{
  "id": "123d9e8e-314f-451b-8b15-5e3b55baa980",
  "timestamp": "2018-03-16T17:03:05.987Z",
  "lang": "en",
  "result": {
    "source": "agent",
    "resolvedQuery": "Hello",
    "action": "input.welcome",
    "actionIncomplete": false,
    "parameters": {},
    "contexts": [],
    "metadata": {
      "intentId": "effe6b2b-3372-4f89-882f-ff937b2b2abb",
      "webhookUsed": "false",
      "webhookForSlotFillingUsed": "false",
      "intentName": "Welcome"
    },
    "fulfillment": {
      "speech": "Hello, how can I help you?",
      "messages": [
        {
          "type": 0,
          "speech": "Hello, how can I help you?"
        }
      ]
    },
    "score": 1
  },
  "status": {
    "code": 200,
    "errorType": "success",
    "webhookTimedOut": false
  },
  "sessionId": "491d57cb-0af2-45ac-a658-9e47ec6658ce",
  "alternativeResultsFromKnowledgeService": {}
}

由于json数据包含IntentName为什么当您直接在json中获取的名称时为什么要action为此特定命名一个唯一原因intentintent

囚犯

我倾向于以两种方式来考虑这一点,具体取决于我要构建的内容。(或者有时这两种方式的组合。)

  1. Intent Name是可人类使用的名称,而Action是更适合Webhook使用的名称,并且更直接地映射到函数。

  2. 由于您可以让多个Intent使用同一个Action,因此可以方便地将用户可以说几种不同的方式(以及他们可能一起发送的参数)映射到同一方法。尽管您可以通过在代码中列出所有不同的Intent名称来做到这一点,但在Dialogflow端这样做更容易。

实际上-使用最适合您的方法。我倾向于以非常相似的方式命名我的Intent和Action,但是根据对代码最有意义的东西(有时还包括其他可能发送的值)进行分支。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章