我正在尝试开发我的第一项技能,但是找不到有关如何创建家庭卡的正确信息。

https://developer.amazon.com/public/solutions/alexa/alexa-skills -kit / docs / provider-home-cards-the-amazon-alexa-app#creatinga-basic-home-card-to-display-text

说我必须添加它对于JSON响应,我不知道JSON响应到底在哪里?

任何帮助都将不胜感激。

#1 楼

来自Amazon教程:


使用Java库时:

创建SimpleCard对象。

调用对象的setTitle()和setContent()方法来设置标题和内容。

将card对象传递给

SpeechletResponse.newTellResponse() 
   or 
SpeechletResponse.newAskResponse() 


以获取包括卡片的SpeechletResponse 。


因此,基本上,在Java解决方案中,将json到Java函数调用中的数据放入代码中。

关于SpechletResponse的完整示例位于HelloWorldSpeechlet中。 >
您可以将现成的存储库用作Lambda函数的基础解决方案(以上代码是其中的一部分),并根据需要修改源代码。

您将使用在开发人员门户中的意图,例如创建Lambda函数。 Java(至少可以使用Node.js和Python),并使其在AWS中运行,并与Developer Portal中的技能一起映射。

之后是jsoning的位置:测试阶段。您将json数据推送到服务中,并在json中进行验证。

侧面说明:在卡片的情况下,响应中应包含卡片,因此在此上下文中放置json可能会导致误导。
您只能使Alexa服务生成它。

Java版本的Alexa技能,其中包含您需要的所有必需代码:

https://github.com/amzn/alexa-skills-kit-java/blob/master/README.md

评论


回答“哪里”的问题:Lambda函数的Java / python / Node.js代码中。

–mico
17年7月11日在19:30

这个例子是用Java编写的,其他人也有自己的古怪之处,即如何正确放置值,放置原理。

–mico
17年7月11日在19:31

#2 楼

部分创建基本的家庭卡以显示文本


要创建简单的卡,请在JSON响应中包括card属性:
type设置为Simple


titlecontent属性设置为要显示的文本。
“\r\n”中使用“\n”content插入换行符。



 {
   "version": "1.0",
   "response": {
     "outputSpeech": {"type":"PlainText","text":"Text to speak back to the user."},
     "card": {
       "type": "Simple",
       "title": "Example of the Card Title",
       "content": "Example of card content. This card has just plain text content.\nThe content is formatted with line breaks to improve readability."
     }
   }
 }


grey中的上述代码段是JSON代码段。请注意代码段中的"card":文本。

评论


但是我应该在哪里添加JSON?在lambda函数中?

–卡特曼
17年7月7日在19:28

#3 楼

在代码中,如果您使用的是node.js,它可能看起来像这样。

const LaunchRequestHandler = {
    canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'LaunchRequest';
    },
    handle(handlerInput) {
        var reprompt = '';
        const speakOutput = 'Protokollaufnahme gestartet.';
        return handlerInput.responseBuilder
            .speak(speakOutput)
            .reprompt(reprompt)
            .withSimpleCard('Protokollaufnahme', speakOutput)
            .withShouldEndSession(false)
            .getResponse();
    },
};


卡片在响应中被初始化,如下所示:

.withSimpleCard('title', 'content')


与此自动将其添加到json输出中