Como capturar o texto reconhecido do Echo?

13

Eu sei que algumas habilidades podem capturar texto falado, como ao adicionar listas de tarefas e listas de compras, e habilidades de terceiros também podem fazer isso, por exemplo. SMS com Molly .

Então, como eles fazem isso? Existe uma chamada de API que captura o texto reconhecido e o armazena em algum lugar?

Graham Chiu
fonte

Respostas:

8

As habilidades personalizadas podem capturar texto e enviá-lo para a API da sua habilidade.

Se você não está completamente familiarizado com o funcionamento do Alexa Skills, aqui está um breve resumo:

  • Primeiro, você registra sua Habilidade na Amazon , fornecendo um esquema de intenções e exemplos de declarações . O esquema de intenção define quais ações podem ser executadas e os slots dos dados personalizados a serem enviados para sua API. As declarações de exemplo fornecem exemplos de como um usuário pode acionar cada intenção.

  • Quando o usuário ativa sua Habilidade, o Alexa tenta corresponder o que eles disseram a uma das frases de amostra de sua habilidade. Se ele faz jogo, ele irá enviar uma solicitação HTTPS para o servidor para pedir uma resposta.

  • Seu servidor fornece uma resposta (se tudo der certo) e o Alexa fornecerá feedback ao usuário que acionou sua habilidade.

O AMAZON.LITERALslot permite aceitar praticamente qualquer entrada. Note-se que atualmente ele só é suportado nos Inglês (US) Região-Inglês (UK) e alemães habilidades não pode usar AMAZON.LITERAL.

Seu esquema de intenção pode ficar assim:

{
  "intents": [
    {
      "intent": "SaveTodo",
      "slots": [
        {
          "name": "Todo",
          "type": "AMAZON.LITERAL"
        }
      ]
    }
  ]
}

E suas declarações de amostra podem ser assim:

SaveTodo remind me to {fetch the shopping|Todo}
SaveTodo remind me to {write my English essay|Todo}
SaveTodo remind me to {buy some dog food tomorrow|Todo}

Ao usar AMAZON.LITERAL, você precisa fornecer muitas expressões de amostra - pelo menos uma amostra para cada comprimento possível de entrada, mas idealmente mais. A documentação da Amazon sugere que você deve ter como objetivo centenas de amostras de slots em que possa aceitar vários tipos de entradas.

Parece um pouco entediante, mas se você não fizer isso, é improvável que sua habilidade reconheça bem o texto. Talvez você possa gerar declarações de amostra a partir dos dados do cliente (desde que as informações pessoais sejam removidas antes!) Para que as declarações mais comuns estejam nas suas amostras - suspeito que o Alexa seja um pouco tendencioso para reconhecer declarações semelhantes às amostras.

A Amazon desencoraja os AMAZON.LITERALslots e prefere que você use tipos de slots personalizados , que exigem que você liste as entradas possíveis. É importante lembrar que:

Um tipo de slot personalizado não é equivalente a uma enumeração. Os valores fora da lista ainda podem ser retornados se reconhecidos pelo sistema de entendimento da linguagem falada. Embora a entrada para um tipo de slot personalizado seja ponderada em relação aos valores da lista, ela não é restrita apenas aos itens da lista. Seu código ainda precisa incluir validação e verificação de erro ao usar valores de slot.

Aurora0001
fonte
1
Acredito que a Amazon esteja mantendo os slots literais que muitos desenvolvedores protestaram contra suas perdas. Mas o uso do slot literal impedirá que sua habilidade seja publicada, pois a Amazon não deseja que os desenvolvedores "escutem" os usuários. Mas você ainda pode usá-lo em uma habilidade particular.
Graham Chiu
1
@GrahamChiu: Tenho a impressão de que os slots literais ainda são permitidos, mesmo nas habilidades publicadas (consulte esta postagem do blog : "Com base nos comentários do desenvolvedor, não removeremos o tipo de slot LITERAL e você poderá continuar a enviar habilidades que incluam sua funcionalidade.") . Eu ainda não tentei, por isso, se você puder confirmar de qualquer maneira, isso pode ser útil para futuros visitantes.
Aurora0001