How to create Alexa Catalog for URL 广告位参考

How to create Alexa Catalog for URL Reference for slots

我发现 this example that is using the Catalog URL Reference 用于填充 Alexa Skill 中的自定义插槽。

问题是我不知道如何填充这个目录。

我能够像这样使用 ask cli 创建模型目录:

ask api create-model-catalog -n catalog_name -d "description"

这使我得到 catalogId 形式的 "catalogId" : "amzn1.ask.interactionModel.catalog.blabla" 就像第一个 link 中的 GitHub 示例中的那个 link.

问题是我不知道如何将值(例如上例中的 ingredients.json)放入该目录。

我试过使用

ask api create-model-catalog-version -c catalogId -f ingredients.json

但是我得到的是

Call create-model-catalog-version error.
Error code: 400
{
  "message": "Request is not valid.",
  "violations": [
    {
      "message": "'source' field of the request is invalid."
    }
  ]
}

在文档中,没有关于如何处理这个问题的示例,所以我被困在了这里。

感谢您的帮助

为了在您的 alexa 技能中创建和使用目录,您必须:

  1. 将目录文件上传到存储桶或另一个 public 存储端点。

  2. 之后,您必须指定一个包含以下内容的 JSON 文件(例如 catalog.json):

{
  "type": "URL",
  "url": "[your catalog url]"
}
  1. 使用 ask api 创建目录,如您所述,获取您的目录 ID:
ask api create-model-catalog --catalog-name "IngredientsCatalog"
--catalog-description "Ingredients"
  1. 使用包含目录的文件创建模型目录版本 URL:
ask api create-model-catalog-version --file .\catalog.json --catalog-id [your catalog-id]
  1. 此调用将提供一个命令来跟踪创建版本状态。类似于:
ask api get-model-catalog-update-status -c [your catalog-id] -u [request id]
  1. 如果版本创建成功,那么你可以在你的技能交互模型上设置:
            "types": [
                {
                    "name": "Ingredient",
                    "valueSupplier": {
                        "type": "CatalogValueSupplier",
                        "valueCatalog": {
                            "catalogId": "[your catalog-id]",
                            "version": "[the desired version number]"
                        }
                    }
                }
            ]

我可以在这里添加一些可能有用的内容:

在上述答案的第 1 步中,根据我的测试,S3 存储桶必须是 public。此外,下面是您要使用的 JSON 格式,包括亚马逊官方 example 中未描述的同义词的使用。请注意,您不必包含该示例中所示的 ID。

{                
  "values": [
      {
          "name": {
              "value": "hair salon",
              "synonyms": [
                  "hairdresser",
                  "beauty parlor"
              ]
          }
      },
      {
          "name": {
              "value": "hospital",
              "synonyms": [
                  "emergency room",
                  "clinic"
              ]
          }
      },

  ]
}