我是新手写Alexa的技能,想写一个技巧来存储说话者的话 例如,如果我说'Alexa,保存{无论我说什么}',它应该将单词保存在某些字符串中 根据我的理解,意图模式应该像
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>
和
之类的话语 gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello world");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show (window);
gtk_main ();
return 0;
在这种情况下,我如何存储'{无论我说什么}'?
答案 0 :(得分:15)
要捕获自由格式语音输入(而不是已定义的可能值列表),您需要使用AMAZON.LITERAL
插槽类型。 Amazon documentation for the Literal slot type描述了与您类似的用例,其中创建了一项技能来获取任何短语并将其发布到社交媒体网站。这是通过创建StatusUpdate意图来完成的:
{
"intents": [
{
"intent": "StatusUpdate",
"slots": [
{
"name": "UpdateText",
"type": "AMAZON.LITERAL"
}
]
}
]
}
由于它使用AMAZON.LITERAL
插槽类型,因此该意图将能够捕获任意短语。但是,为了确保语音引擎能够很好地捕获真实世界的短语,您需要提供各种示例语句,这些语句类似于您希望用户说出的各种事物。
鉴于在您描述的情况中,您尝试捕获非常动态短语,您希望额外考虑的文档中有几件事情。 :
如果您使用AMAZON.LITERAL类型来收集自由格式文本 插槽中可能包含的字数变化很大, 请注意以下事项:
- 覆盖这个全范围(最小值,最大值,以及介于两者之间)将会 需要一大堆样本。尽量提供几百个 样本或更多以解决槽值单词中的所有变化 如上所述。
- 将插槽中的短语保持足够短,以便用户可以 说完整个短语而不需要停顿。
冗长的口头输入会导致精确度较低的体验,因此请避免 设计一个需要不止一些的口语界面 槽值的单词。用户不能没有说的短语 暂停对于一个插槽值来说太长了。
那就是说,这里是文档中的示例Sample Utterances,再次:
StatusUpdate发布更新{arri | UpdateText}
StatusUpdate发布更新{晚餐时间| UpdateText}
StatusUpdate发布更新{out at lunch | UpdateText}
...(更多样本显示带有4-10个单词的短语)
StatusUpdate发布更新{今晚将由杂货店停止| UpdateText}
如果您提供足够的不同长度的示例来准确描述预期用户话语的范围,那么您的意图将能够准确捕获真实用例中的动态短语,您可以在{{1}中访问这些短语。 }槽。基于此,您应该能够实现特定于您需求的意图。
答案 1 :(得分:4)
重要提示:自2018年10月22日起,不推荐使用AMAZON.LITERAL。使用AMAZON.LITERAL构建的较早技能仍然可以使用,但是当您更新这些较早技能时,必须从AMAZON.LITERAL迁移。所有新技能。
代替使用AMAZON.LITERAL,您可以使用自定义插槽来诱使alexa将自由文本传递到后端。
您可以使用此配置进行操作:
{
"interactionModel": {
"languageModel": {
"invocationName": "siri",
"intents": [
{
"name": "SaveIntent",
"slots": [
{
"name": "text",
"type": "catchAll"
}
],
"samples": [
"{text}"
]
}
],
"types": [
{
"name": "catchAll",
"values": [
{
"name": {
"value": "allonymous isoelectrically salubrity apositia phantomize Sangraal externomedian phylloidal"
}
},
{
"name": {
"value": "imbreviate Bertie arithmetical undramatically braccianite eightling imagerially leadoff"
}
},
{
"name": {
"value": "mistakenness preinspire tourbillion caraguata chloremia unsupportedness squatarole licitation"
}
},
{
"name": {
"value": "Cimbric sigillarid deconsecrate acceptableness balsamine anostosis disjunctively chafflike"
}
},
{
"name": {
"value": "earsplitting mesoblastema outglow predeclare theriomorphism prereligious unarousing"
}
},
{
"name": {
"value": "ravinement pentameter proboscidate unexigent ringbone unnormal Entomophila perfectibilism"
}
},
{
"name": {
"value": "defyingly amoralist toadship psoatic boyology unpartizan merlin nonskid"
}
},
{
"name": {
"value": "broadax lifeboat progenitive betel ashkoko cleronomy unpresaging pneumonectomy"
}
},
{
"name": {
"value": "overharshness filtrability visual predonate colisepsis unoccurring turbanlike flyboy"
}
},
{
"name": {
"value": "kilp Callicarpa unforsaken undergarment maxim cosenator archmugwump fitted"
}
},
{
"name": {
"value": "ungutted pontificially Oudenodon fossiled chess Unitarian bicone justice"
}
},
{
"name": {
"value": "compartmentalize prenotice achromat suitability molt stethograph Ricciaceae ultrafidianism"
}
},
{
"name": {
"value": "slotter archae contrastimulant sopper Serranus remarry pterygial atactic"
}
},
{
"name": {
"value": "superstrata shucking Umbrian hepatophlebotomy undreaded introspect doxographer tractility"
}
},
{
"name": {
"value": "obstructionist undethroned unlockable Lincolniana haggaday vindicatively tithebook"
}
},
{
"name": {
"value": "unsole relatively Atrebates Paramecium vestryish stockfish subpreceptor"
}
},
{
"name": {
"value": "babied vagueness elabrate graphophonic kalidium oligocholia floccus strang"
}
},
{
"name": {
"value": "undersight monotriglyphic uneffete trachycarpous albeit pardonableness Wade"
}
},
{
"name": {
"value": "minacious peroratory filibeg Kabirpanthi cyphella cattalo chaffy savanilla"
}
},
{
"name": {
"value": "Polyborinae Shakerlike checkerwork pentadecylic shopgirl herbary disanagrammatize shoad"
}
}
]
}
]
}
}
}
答案 2 :(得分:3)
您可以尝试使用插槽类型AMAZON.SearchQuery。所以你的意图就是这样的
{
"intents": [
{
"intent": "SaveIntent",
"slots": [
{
"name": "UpdateText",
"type": "AMAZON.SearchQuery"
}
]
}
]
}
答案 3 :(得分:2)
截至2018年底,我正在使用SearchQuery
来获取用户所说的内容。
它确实有效,我已经在生产系统上使用了它。
但是您必须问用户一些问题并填补空缺。
例如:
query
的SearchQuery的广告位类型(选择所需的名称)I want to watch {query}
或{query}
或I want {query}
之类的广告位提示中添加示例话语const message = 'What movie do you want to watch?'
handlerInput
.responseBuilder
.speak(message)
.reprompt(message)
.addElicitSlotDirective('query')
.getResponse();
答案 4 :(得分:0)
已更新:此答案不是真的。评论中提到的Amazon.Literal
Slot类型应该允许这样做。
Alexa目前不支持访问用户原始语音输入。将来可能会这样,或者您可以查看其他语音到文字API,例如Google's。
目前使用Alexa执行此操作的唯一方法是设置一个用户可以说会保存的单词列表。
为此,您可以按照Amazon的一个使用自定义广告位type的示例进行操作。然后将用户会说的所有可能的单词放入该类别中。
答案 5 :(得分:0)
(8/5/17)不幸的是,随着AMAZON.LITERALS的消除,此功能已从亚马逊删除。
然而,根据您对捕获自由格式输入的兴趣,您可能会对输入MODE
感到满意,该输入会捕获一个单词,名称,城市,数字,字母,符号,一次将它们串在一起形成一个变量,中间没有消息。
我已经开发了一种密码输入模式,可以对其进行修改以收集和连接用户输入。虽然您的输入速度会较慢,但如果您优化了lambda函数,则可以在输入几个句子时获得快速的用户体验。结构是重要的。代码可以很容易地适应。
如何向Amazon Alexa技能套件(ASK)混合字符串输入数字? https://stackoverflow.com/a/45515598/8408056
答案 6 :(得分:0)
这是实现您所寻找的更好可能的方法。尝试了几种方法后,我得到了问Alexa的语句的完整词。
您需要在您的 Alexa 技能中进行以下设置(您可以根据需要选择意图名称、插槽名称和插槽类型)
设置意图
设置自定义广告位类型
在设置您的 Alexa 技能后,您可以调用您的技能,保留一些对启动请求的响应并说出您想要的任何内容,然后您可以捕获整个单词或文本,如下所示。
"intent": {
"name": "sample",
"confirmationStatus": "NONE",
"slots": {
"sentence": {
"name": "sentence",
"value": "hello, how are you?",
"resolutions": {
"resolutionsPerAuthority": [
{
"authority": "xxxxxxx",
"status": {
"code": "xxxxxxx"
}
}
]
},
"confirmationStatus": "NONE",
"source": "USER"
}
}
}
注意*:在这种方法中,如果有多个意图,您将需要正确处理话语。