我发现this example使用Catalog URL Reference来填充Alexa Skill中的自定义插槽。
问题是我不知道如何填充此目录。
我能够使用Ask cli这样创建模型目录:
ask api create-model-catalog -n catalog_name -d "description"
这会以catalogId
的形式生成"catalogId"
:"amzn1.ask.interactionModel.catalog.blabla"
就像第一个链接中的GitHub示例中的一样。
问题是我不知道如何将值(例如上例中的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."
}
]
}
在文档中,没有如何处理此问题的示例,因此我被困在这一点。
感谢您的帮助
答案 0 :(得分:4)
要使用Alexa技能创建和使用目录,您必须:
将目录文件上传到存储桶或另一个公共存储端点。
然后,您必须指定一个具有以下内容的JSON文件(例如catalog.json):
{
"type": "URL",
"url": "[your catalog url]"
}
ask api create-model-catalog --catalog-name "IngredientsCatalog"
--catalog-description "Ingredients"
ask api create-model-catalog-version --file .\catalog.json --catalog-id [your catalog-id]
ask api get-model-catalog-update-status -c [your catalog-id] -u [request id]
"types": [
{
"name": "Ingredient",
"valueSupplier": {
"type": "CatalogValueSupplier",
"valueCatalog": {
"catalogId": "[your catalog-id]",
"version": "[the desired version number]"
}
}
}
]
答案 1 :(得分:1)
我可以在这里添加一些可能会有所帮助的
在上述答案的第1步中,根据我的测试,S3存储桶必须是公开的。另外,以下是您要使用的JSON格式,包括使用同义词(官方Amazon example中未描述)。请注意,您不必包含该示例中所示的ID。
{
"values": [
{
"name": {
"value": "hair salon",
"synonyms": [
"hairdresser",
"beauty parlor"
]
}
},
{
"name": {
"value": "hospital",
"synonyms": [
"emergency room",
"clinic"
]
}
},
]
}