首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Alexa自定义插槽中类似“‘any”类型的行为

Alexa自定义插槽中类似“‘any”类型的行为
EN

Stack Overflow用户
提问于 2018-05-04 22:20:27
回答 1查看 188关注 0票数 0

我想要完成以下场景: Alexa和用户之间的一个小对话,有以下两个意图:

  • NameIntent:“我的名字是{name}"

其中{name}AMAZON.US_FIRST_NAME,插槽设置为必需并定义了提示符。

  • ActivityIntent:“我喜欢{activity}"

在这里,它变得更加困难。我为{activity}定制了一个插槽,并为它定义了一些值,比如“钓鱼、运动”等等,但显然还有更多的答案。如果我现在回复一些我没有定义的东西(例如“飞镖”),Alexa总是回到最初的意图,因为它似乎是一个名字。

示例:

->:“欢迎光临,你叫什么名字?”我的名字是LaunchRequest。

-> NameIntent:“欢迎彼得。你喜欢做什么?”-> ->:“欢迎飞镖。你喜欢做什么?”

我只是想让Alexa接受用户说的任何值,在Dialogflow中,这只需使用{any}实体即可完成。我在alexa博客上关注了this blog article,在那里他们似乎能够捕捉到你给它起的任何昵称,即使是没有定义的昵称,这也是我想在这里完成的。

Alexa :我如何使用Alexa捕获任何类型的输入,超出我在技能构建器中定义的任何短语?我怎样才能确保这个短语的意图是正确的呢?

我对此感到有点沮丧,特别是当您使用ElicitSlotDirectives专门询问用户一个插槽时,它会跳转到一个完全不同的意图。

2个意图处理程序的代码:

代码语言:javascript
复制
const NameIntentHandler = {
    canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'IntentRequest'
            && handlerInput.requestEnvelope.request.intent.name === 'NameIntent';
    },
    handle(handlerInput) {
        const { intent } = handlerInput.requestEnvelope.request;
        const name = intent.slots.name.value;

        const speechText = `Welcome ${name}. What is your favourite activity?`;
        return handlerInput.responseBuilder
            .speak(speechText)
            .reprompt(speechText)
            .withShouldEndSession(false)
            .getResponse();
    },
};

const ActivityIntentHandler = {
    canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'IntentRequest'
            && handlerInput.requestEnvelope.request.intent.name === 'ActivityIntent';
    },
    handle(handlerInput) {
        const { intent } = handlerInput.requestEnvelope.request;
        const activity = intent.slots.activity.value;

        const speechText = `You like ${activity}.`;
        return handlerInput.responseBuilder
            .speak(speechText)
            .reprompt(speechText)
            .withShouldEndSession(false)
            .getResponse();
    },
};
EN

回答 1

Stack Overflow用户

发布于 2018-05-05 20:36:23

似乎Alexa在将活动话语与您的ActivityIntent相关联时遇到了问题,而是再次调用NameIntent。依靠亚马逊来找出基于插槽类型的使用意图对我来说并不是一直有效。如果你张贴你的意图代码,那将会非常有帮助。

看看来自亚马逊hereAmazon's Voice Design Guide的JavaScript示例可能会有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50177168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档