如何从另一个意图返回带有槽值的意图?
我想通过在另一个意图中返回其插槽值来触发一个意图。
这是我的JSON文件的示例:
{
"interactionModel": {
"languageModel": {
"invocationName": "movie antakshari",
"intents": [
{
"name": "SchoolIntent",
"slots": [
{
"name": "Subject",
"type": "subjects"
}
],
"samples": ["{subjects}"]
},
{
"name": "teachersIntent",
"slots": [],
"samples": ["teachers"]
},
],
"types": [
{
"name": "subjects",
"values": [
{
"name": {"value": "maths"}
},
{
"name": {"value": "english"}
}
]
}
]
}
}
}
这是我的index.js文件:
const teacherIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'teacherIntent';
},
handle(handlerInput) {
if (some condition) {
// Here I want to return the schoolIntentHandler with a slot value maths
}
}
}
答案 0 :(得分:0)
您可以通过ElicitIntent来实现。但是,当您引起您的意图时,针对特定意图的广告位将变得清晰(重置为null)。为了克服这个问题,在引起意图之前,请以一种独特的方式将您的广告位值放入会话属性中,以将其标识为广告位,例如 SLOT_key 。当它进入所需的意图时,从会话属性中获取广告位值并将其用于您的逻辑。
答案 1 :(得分:0)
意图调用由用户话语驱动。用户必须说些什么,以便Alexa Service可以将用户所说的内容与模型中的意图相匹配。
在您的情况下,您需要通过正确引导用户来使用户调用schoolIntent。即您需要从此处返回语音,以使用户说出与schoolIntent相匹配的内容
handle(handlerInput) {
if (some condition) {
// Here I want to return the schoolIntentHandler with a slot value maths
//
// You need to return a speech from here that will make user to utter something that matches schoolIntent.
}
}