Alexa技能-在插槽填充过程中实现另一个插槽

时间:2019-01-21 17:11:09

标签: alexa alexa-skills-kit alexa-skill alexa-slot alexa-app

我正在研究一种按姓名或专业搜索医生的技能。

我的意图是:FindDoctor

它有3个插槽:TypeNameSpecialty

这就是我现在拥有的:

当用户说:

  

“我想找医生”

然后我的代码将控件委派给Alexa并要求提供Type

  

“好吧,您要用名字还是专业来找到它?”

如果用户要求输入NameSpecialty

  

“按专业”

我的代码将在必要的插槽中委派,以满足用户的意图:

  

“完美,这是专业的名称?”

用户将实现它:

  

“创伤学”

我的代码将调用一个API并找到结果:

  

“这是最近的创伤学家。...等”


这就是我想要得到的:

如果漫游器询问Type,会发生什么:

  

“好吧,您要用名字还是专业来找到它?”

用户说:

  

“整形专家”。

然后,我要填写插槽Specialty,不需要Type

但是在填充广告位时,我将用户“ a {Specialty}”作为可能的答案,我没有填写广告位Specialty,而是始终填写广告位Type


因此,假设我总是向用户询问他想找到什么。当我在Type插槽中填写Alexa时,有什么方法可以满足另一个插槽要求?

1 个答案:

答案 0 :(得分:1)

如果我的理解正确,您想从一个意图中填补多个空缺。这是一个可能看起来像的例子:

{
  "intents": [
    {
      "name": "FindDoctorIntent",
      "samples": [
        "Find a doctor",
        "Find doctor {DoctorName}",
        "{Specialty}",
        "Find a {Specialty}"
      ],
      "slots": [
        {
          "name": "Specialty",
          "type": "LIST_OF_SPECIALTIES"
        },
        {
          "name": "DoctorName",
          "type": "AMAZON.US_FIRST_NAME" // or whatever type is best suited for your usecase
        }
      ]
    }
  ],
  "types": [
    {
      "name": "LIST_OF_SPECIALTIES",
      "values": [
        {
          "id": "traumatologist",
          "name": {
            "value": "traumatologist",
            "synonyms": [
              "traumatologist",
              "Traumatology",
                ...
            ]
          }
        },
        {
          "id": "other docter type",
          "name": {
            "value": "other type..",
            "synonyms": [
                 ...
            ]
          }
        }
      ]
    }
  ]
}

以下是一些有用的其他资源: Using Dialog Management to Capture A and B or C Slots

另一个好问题..如果您的两种类型相似:Multiple intents sharing the same slot value