Como criar um cartão doméstico no Alexa

8

Estou tentando desenvolver minha primeira habilidade e não encontro informações adequadas sobre como criar um cartão doméstico

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/providing-home-cards-for-the-amazon-alexa-app#creating-a-basic-home-card- para exibir texto

diz que tive que adicioná-lo à resposta JSON, não entendo exatamente onde está a resposta JSON?

Qualquer ajuda é muito apreciada.

Cartman
fonte

Respostas:

4

No tutorial da Amazon:

Ao usar a biblioteca Java:

Crie um objeto SimpleCard.

Chame os métodos setTitle () e setContent () do objeto para definir o título e o conteúdo.

Passe o objeto do cartão para

SpeechletResponse.newTellResponse() 
   or 
SpeechletResponse.newAskResponse() 

para obter um SpeechletResponse que inclua o cartão.

Portanto, basicamente na solução Java, coloque os dados de json para chamadas de função Java no código.

Um exemplo mais completo sobre o SpechletResponse está no HelloWorldSpeechlet .

Você pode pegar um repositório pronto como uma solução base para sua função Lambda (o código acima faz parte de um) e modificar a fonte como desejar.

Você criará uma habilidade com intenções no portal do desenvolvedor, criará a função Lambda, por exemplo. em Java (pelo menos Node.js e Python também é possível) e coloque-o em execução na AWS e mapeie junto com a habilidade no Developer Portal.

Depois disso, vem o lugar do jsoning: a fase de teste. Você envia os dados do json para o serviço e verifica-os no json.

Nota lateral: No caso de cartão, a resposta deve conter cartão, portanto, colocar json nesse contexto é um pouco errado. Você só faz o serviço Alexa gerá-lo.

Versão Java das habilidades alexa, contendo todo o código necessário, que você precisará:

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

mico
fonte
Responda à pergunta 'where': no ​​código Java / python / Node.js da sua função Lambda.
Mico
Este foi um exemplo conduzido em Java, outros têm suas próprias peculiaridades de como colocar exatamente os valores, colocar o princípio permanecerá.
Mico
5

Seção Criando um cartão doméstico básico para exibir texto

Para criar um cartão simples, inclua a cardpropriedade na sua resposta JSON: Defina typecomo Simple.

  • Defina as propriedades titlee contentpara o texto a ser exibido.
  • Use um “\r\n”ou “\n”dentro do contentpara inserir quebras de linha.
 {
   "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."
     }
   }
 }

O snippet acima greyé snippet JSON. Observe o "card":texto no snippet.

soluço
fonte
1
Mas onde devo adicionar o JSON? na função lambda?
Cartman
0

No código, pode ser assim se você estiver usando o 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();
    },
};

O cartão é inicializado na resposta assim:

.withSimpleCard('title', 'content')

Com isso, ele é automaticamente adicionado à saída json

Elizabeth Hunter
fonte