如何在Alexa Skill中为飞行代码定义自定义广告位类型?

时间:2018-08-13 08:59:18

标签: alexa alexa-skills-kit alexa-skill alexa-slot

我想为航班代码创建德语自定义广告位类型。航班代码由航空公司的缩写组成,例如

EZY, DLH, AFR, ABY, AAL, RYR, DAL, ...

和3到5位数字,例如

352, 5832, 84544, ...

因此插槽类型示例应显示如下内容:

EZY582, AFR5583, RYR19, DAL2912, ...

那么,对于我来说,创建这种插槽类型的最佳选择是什么?记住,我使用德语。

首先,我尝试对承运人代码和航班号使用两种不同的插槽类型:

FLIGHT_CODE and AMAZON.NUMBER

有很多问题,即使语音提示还明确要求同时提供这两种广告位类型,该模型也只能识别FLIGHT_CODE。

第二,我尝试用语音上正确的值定义插槽类型:

"e. z. y. drei vier acht"

但“ e。z。y。”不会正确匹配。是否有获取此类组合类型的最佳实践?尤其是加入诸如“ E. Z. Y.”的缩写,这在德语中的发音会大不相同吗?预先谢谢你。

1 个答案:

答案 0 :(得分:0)

可能已经晚了,但是如果有人遇到相同的问题,这就是我解决的方法。我没有找到一种合适的方式来指定航班代码本身的插槽。但是,您可能会提示输入航空公司名称和3到5位数字。话语中是这样的:

{airline_name} {flight_number}

有一个名为AMAZON.Airline的内置插槽类型。因此,airline_name的类型将是AMAZON.AIRLINEAMAZON.NUMBER的类型是number。内置类型可以扩展以进行解析和验证。您可以按照以下指南操作:https://developer.amazon.com/docs/custom-skills/slot-type-reference.html#h2_extend_types

这样,您可以为每个航空公司分配一个ID和同义词:

Slot types: AMAZON.AIRLINE

Value | ID | Synonyms 
American Airlines | AA | American
LATAM Airlines | LA | LAN, LATAM
...

这样,您将可以访问JSON中的resolutions字段,并且可以获得航空公司ID。您还可以添加验证以比较扩展类型中的字段:

"dialog": {
            "intents": [
                {
                    "name": "FlightIntent",
                    "confirmationRequired": false,
                    "prompts": {},
                    "slots": [
                        {
                            "name": "airline_name",
                            "type": "AMAZON.Airline",
                            "confirmationRequired": false,
                            "elicitationRequired": false,
                            "prompts": {},
                            "validations": [
                                {
                                    "type": "hasEntityResolutionMatch",
                                    "prompt": "Slot.Validation.1129359808444.140964634934.1466054813690"
                                }
                            ]
                        },
...
"prompts": [
            {
                "id": "Slot.Validation.1129359808444.140964634934.1466054813690",
                "variations": [
                    {
                        "type": "PlainText",
                        "value": "Please tell me the name of the airline followed by the number"
                    }
                ]
            }