gpt4 book ai didi

Alexa 自定义插槽类型 : No value in intent

转载 作者:行者123 更新时间:2023-12-04 15:08:05 25 4
gpt4 key购买 nike

我已经在亚马逊开发者论坛上发布了这个问题,但那里没有得到答复。我想 Stackoverflow 从一开始就应该是首选:

根据我的理解,如果我使用自定义槽类型,即使其可能值的列表不包含口语,口语仍会传递给函数。文档说

A custom slot type is not the equivalent of an enumeration. Values outside the list may still be returned if recognized by the spoken language understanding system.



现在我有一个自定义插槽类型 LIST_OF_PERSONSMatthias|Max和一句话
EmployeeDetailsIntent {Person} 

如果我用一个不在 LIST_OF_PERSONS 中的值来调用这个 intent Intent 仍然被调用,但 JSON 不包含插槽的“值”键:
"request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.a943e233-0713-4ea5-beba-d9287edb6083",
"locale": "de-DE",
"timestamp": "2017-03-09T14:38:29Z",
"intent": {
"name": "EmployeeDetailsIntent",
"slots": {
"Person": {
"name": "Person"
}
}
}
}

这是“按设计工作”还是错误?那么我如何访问 Intent 中的口语?如 this.event.request.intent.slots.Person.value未定义?

我的代码位于 AWS lambda 中,我使用的是 nodejs alexa-sdk 1.0.7 版。我的技能语言是德语。

最佳答案

(免责声明:这篇文章总结了我自己的“解决方法”。它可能是也可能不是“最佳方法”。似乎对我有用,所以我想我会在这里简要分享/记录它)

我最近遇到了类似的问题,如下所示:
"tell me about {townName}"
如果我说 "tell me about London" , 有用。

如果我说 "tell me about" (故意丢失 {townName} ),程序“死亡”(并返回一个与您的类似的 JSON,未定义 this.event.request.intent.slots.townName.value)

虽然我不是 100% 确定这是一个“功能”(即我们需要编写更智能的代码来解决这个问题)还是“问题”(即 Alexa 团队需要解决或修复)。这种情况最近在我的认证过程中引起了一个真正的问题。

为了解决这个问题,我实现了一个解决方法(或修复,无论你怎么称呼它),以避免 Alexa 因这种极端情况而“死亡”。

来自 Alexa skill-sample-nodejs-trivia index.js文件,我找到了一个片段函数,它帮助我解决了这个问题(为了简单起见,我对我的例子做了一些编辑):

function isAnswerSlotValid(intent) {
var answerSlotFilled = intent && intent.slots &&
intent.slots.townName && intent.slots.townName.value;
return answerSlotFilled
}

(即此函数返回 True 用于插槽 townName 的有效值和 False 用于未定义/否则)。

在定义 intent 时,我可以使用此函数来“绕过”空槽值场景:

var startHandlers = Alexa.CreateStateHandler(states.START,{

// bla bla bla//

"AnswerIntent": function() {

// handel missing slot value
var answerSlotValid = isAnswerSlotValid(this.event.request.intent);

if (answerSlotValid && moreConditions) {
// do something fun
}
else {
// handle empty slot scenario
}
}

// bla bla bla//

}

有兴趣看看是否有更好/更“正确”的解决方案来更优雅地处理空/未定义的插槽。

关于Alexa 自定义插槽类型 : No value in intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42721603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com