拼写出字母的alexa技能用户输入

lol*_*ter 3 amazon-web-services alexa alexa-skill alexa-skills-kit alexa-voice-service

我希望Alexa能够接受我的自定义技能的可变长度的英文字母列表.它将允许用户基于字符串进行搜索.

这有两个步骤:

  1. 获得Alexa可以理解的单个字母的良好表示
  2. 枚举具有可变数量字母的样本话语

首先,一种方法是定义一个自定义槽,其中包含英文字母的枚举值:

SLOT_LETTER

ay
bee
see
dee
ee
eff
gee
... etc
Run Code Online (Sandbox Code Playgroud)

但这感觉很糟糕.亚马逊是否支持任何方式来实现这一目标,还是有更聪明的方式?

我真的不想使用北约语音("阿尔法布拉沃查理"用于"ABC"),因为它是一种糟糕的用户体验,很少有人真正了解它们.

对于第二个问题(示例话语),因为AMAZON.LITERAL我想定义类似的东西:

SpellIntent find me things starting with {first second|SLOT_LETTER}   
SpellIntent find me things starting with {first second third|SLOT_LETTER}
SpellIntent find me things starting with {first second third fourth|SLOT_LETTER}
Run Code Online (Sandbox Code Playgroud)

但我不认为亚马逊会让你使用自定义插槽定义一个可变长度的LITERAL(因为它们是不同的"类型")?

Jos*_*nta 7

它没有很好的记录,但你可以使用"a.","b.","c." 等代表字母,而不是声音.创建自定义插槽并将其用作值.这应该是你的插槽.

对于意图,创建一个意图,例如,五个插槽,所有插槽都具有相同的插槽类型.根据意图创建五个话语,填充一个,两个,三个,四个和五个插槽.当用户拼写某些内容时,将调用该意图.用户未指定的任何插槽都将为null.

在一个意图中没有用单词分隔的两个槽通常不能很好地执行.但试试吧,看看.对于像这样的受限制的词汇,它可以做得很好.

最后,如果它难以区分,比如说"b".和"v.",您可以尝试将NATO呼叫代码添加到列表中.Alpha,Bravo,Charlie等.然后,在你的处理过程中,只需获取插槽中任何值的第一个字符.

您可以启用"Star Lanes"技能并尝试"将呼叫标志设置为XY Z"意图.我在上述技能中做到了以上并且效果相当好.