无需登录 数据私有 本地保存

Alexa Skill 意图模型验证器 - 检查 JSON 语法

45
0
0
0

常见问题

什么是Alexa意图模型?

Alexa意图模型(Interaction Model)是一个JSON格式的配置文件,它定义了您的Alexa Skill能够理解的所有用户意图和对应的处理逻辑。意图模型告诉Alexa如何将用户的语音请求分类到正确的意图中,并从请求中提取有用的参数信息。一个完整的意图模型必须包含intents数组和invocationName字段,还可以包含types数组来定义自定义Slot类型。意图模型是Alexa Skill开发中最核心的配置文件,其质量直接决定了用户体验的好坏。

意图模型中有哪些必需字段?

Alexa意图模型JSON的最外层需要包含以下字段:intents是一个数组,包含所有意图的定义,是必需字段;invocationName是一个字符串,定义Skill的唤醒词,也是必需字段;types是一个数组,用于定义自定义Slot类型,是可选字段。在每个意图对象内部,name字段(字符串类型,意图名称)和samples字段(数组类型,示例语句列表)是必需的。slots字段是可选的,但如果意图需要从用户输入中提取参数,则需要定义slots。本工具的验证功能会自动检查这些必需字段是否存在。

常见的JSON错误有哪些?

在编写Alexa意图模型时,常见的JSON错误包括:语法层面的错误,如缺少逗号、多余的尾随逗号、括号未正确闭合、字符串未使用双引号等;结构层面的错误,如数组和对象的嵌套层级错误、字段放置在错误的父级下等;语义层面的错误,如意图名称未以大写字母开头、samples不是数组类型、invocationName包含不允许的字符等。本工具的验证功能可以自动检测大多数语法和结构层面的错误,并提供修复建议。对于语义层面的问题,工具也会给出相应的提示和规范说明。

invocationName的命名规范是什么?

Alexa Skill的invocationName需要遵循Amazon制定的命名规范。主要规则包括:必须由两个或更多单词组成(单词之间用空格分隔);不能包含Alexa、Echo、Amazon、Skill等品牌相关词汇;不能是其他已有Skill正在使用的唤醒词;必须是用户能够自然说出的日常短语;不能包含特殊字符、数字或缩写(除非是常见的缩写如US等);长度建议在2到5个单词之间。好的唤醒词应该简短、易记、发音自然,让用户能够轻松地记住并说出。例如"coffee helper""weather buddy"等都是符合规范的唤醒词示例。

如何定义自定义Slot类型?

自定义Slot类型定义在意图模型的types数组中。每个自定义类型是一个对象,包含name(类型名称字符串)和values(值数组)两个字段。values数组中的每个元素是一个对象,包含value(值字符串)和可选的nameResolution值(用于同义词匹配)。例如定义一个咖啡类型的自定义Slot:types数组中添加一个对象,name设为"COFFEE_TYPE",values数组包含value为"americano""latte""cappuccino"等的对象。定义好自定义Slot类型后,就可以在任何意图的slot中引用该类型作为type值。自定义类型帮助Alexa更好地理解特定领域的参数值。

Samples中如何引用Slot?

在示例语句中引用Slot使用花括号语法。将Slot的名称用花括号包裹起来放在示例语句中对应的位置即可。例如如果一个意图有一个名为"size"的Slot,示例语句可以写为"I want a {size} coffee"。当Alexa识别用户输入时,会将匹配到的"small""medium""large"等值提取到size槽位中。您可以在同一条示例语句中引用多个Slot,也可以在同一条示例语句中多次引用同一个Slot的不同位置。花括号中引用的Slot名称必须与该意图的slots数组中定义的name字段完全一致。

Alexa提供了哪些内置Slot类型?

Alexa提供了大量以AMAZON开头的内置Slot类型,覆盖常见的数据类型和概念。常用的内置类型包括:AMAZON.NUMBER(数字)、AMAZON.DATE(日期)、AMAZON.TIME(时间)、AMAZON.DURATION(时间段)、AMAZON.COLOR(颜色)、AMAZON.Country(国家)、AMAZON.US_STATE(美国州名)、AMAZON.Language(语言名)、AMAZON.Genre(音乐流派)、AMAZON.VideoDevice(视频设备名)、AMAZON.SearchQuery(通用搜索查询)等。内置类型无需在types数组中定义,可以直接在slot的type字段中引用。使用内置类型可以简化模型定义并利用Alexa预训练的识别能力。