我有一个插入后端和DialogFlow / ApiAI的聊天机器人。 我试图在Alexa中设置一项技能,这样我就能抓住所有与我的技能相关的技能,然后将其转发到我的后端,以便我可以使用我现有的基础设施和convo设计。
我一直在努力与Alexa建立一个抓住一切并转发它的意图。 根据我的理解,您应该使用AMAZON.SearchQuery,但是当我尝试设置意图时,我收到以下错误:
构建失败 示例话语" CATCH_ALL {any}"意图" CATCH_ALL"必须包含一个载体短语。具有短语类型的示例意图话语不能仅包含插槽。错误代码:MissingCarrierPhraseWithPhraseSlot -
有谁知道怎么做?我也尝试使用AMAZON.Literal,但它似乎已被弃用,我使用它时无法构建技能。 我有点卡住了。如果有人有解决方案会很棒......
感谢。
答案 0 :(得分:5)
我终于做到了这样做:
{
"interactionModel": {
"languageModel": {
"invocationName": "test",
"intents": [
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": []
},
{
"name": "AMAZON.StopIntent",
"samples": []
},
{
"name": "CATCHALL",
"slots": [
{
"name": "any",
"type": "AMAZON.LITERAL"
}
],
"samples": [
"{hey|any}",
"{hey hey|any}",
"{hey hey hey|any}",
"{hey hey hey hey|any}",
"{hey hey hey hey hey|any}"
]
}
],
"types": []
}
}
}
意图CATCHALL的样本表示您要捕获的单词数。所以,我会抓住一个和这五个单词之间的任何句子。
我不确定在我提交应用程序时这是否会成为一个问题。
请注意,除英语(美国)以外的任何语言都不支持AMAZON.LITERAL,因此这不是我的解决方案,因为它是法语和英语聊天机器人。所以我一开始就回来了......
编辑:这是没有LITERAL的解决方案:
{
"interactionModel": {
"languageModel": {
"invocationName": "mon invocation",
"intents": [
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": [
"que puis-je faire"
]
},
{
"name": "AMAZON.StopIntent",
"samples": [
"je veux quitter"
]
},
{
"name": "CATCH_ALL",
"slots": [
{
"name": "any",
"type": "ANYTHING"
}
],
"samples": [
"{any}"
]
}
],
"types": [
{
"name": "ANYTHING",
"values": [
{
"name": {
"value": "hey"
}
},
{
"name": {
"value": "hey hey"
}
},
{
"name": {
"value": "hey hey hey"
}
},
{
"name": {
"value": "hey hey hey hey"
}
},
{
"name": {
"value": "hey hey hey hey hey"
}
},
{
"name": {
"value": "hey hey hey hey hey hey"
}
},
{
"name": {
"value": "hey hey hey hey hey hey hey"
}
},
{
"name": {
"value": "hey hey hey hey hey hey hey hey"
}
},
{
"name": {
"value": "hey hey hey hey hey hey hey hey hey"
}
},
{
"name": {
"value": "hey hey hey hey hey hey hey hey hey hey"
}
},
{
"name": {
"value": "hey hey hey hey hey hey hey hey hey hey hey"
}
},
{
"name": {
"value": "hey hey hey hey hey hey hey hey hey hey hey hey"
}
}
]
}
]
}
}
}
答案 1 :(得分:3)
不幸的是,目前还没有解决方案。 Alexa不支持以您希望的方式获取所有文本的方法。
答案 2 :(得分:0)
您可以使用一些随机单词创建一个自定义广告位。
{
"interactionModel": {
"languageModel": {
"invocationName": "demo",
"intents": [
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": []
},
{
"name": "AMAZON.StopIntent",
"samples": []
},
{
"name": "EveryThingIntent",
"slots": [
{
"name": "EveryThingSlot",
"type": "BAG_OF_WORDS"
}
],
"samples": [
"{EveryThingSlot} "
]
}
],
"types": [
{
"name": "BAG_OF_WORDS",
"values": [
{
"name": {
"value": "Hello World"
}
}
]
}
]
}
}
}
答案 3 :(得分:0)
您可以将 AMAZON.SearchQuery 替换为 AMAZON.Person 。通常AMAZON.SearchQuery要求在词组中加上一个词组。使用 AMAZON.Person ,不需要在词组中插入词组。它将接受您传递给Intent的任何值。
toggleSelection = () => {