Como escrever habilidades personalizadas do Alexa sem 'Ask xxxx'

18

Atualmente, estou usando o fauxmo para enviar comandos personalizados para vários dispositivos para ativá-los / desativá-los (por exemplo, eu tenho um conversor WiFi para IR para controlar meu sintonizador e TV) e posso ligar / desligar a TV com isso.

Também tenho a configuração de integração do Kodi, para que eu possa dizer:

Alexa, Ask Kodi to set volume to 50%

Mas eu gostaria de poder dizer:

Alexa, Set tuner volume to 50%
Alexa, Play Bluray

Ou seja, eu quero poder controlar dispositivos sem precisar de um Ask xxxxcomo parte da minha solicitação.

Idealmente, quero fazer isso sem um serviço baseado em nuvem (por exemplo, SmartThings ou Wink).

Eu gosto da solução usada pelo fauxmo (emule um serviço UPNP existente), mas é limitada a ligar / desligar (e 'escurecer' se você usar o patch habilitado para Hue) e não ser suficientemente flexível.

PhratcuredBlue
fonte

Respostas:

11

Eu estive explorando a remoção do nome da chamada para as habilidades personalizadas do Alexa em alguns projetos. E o que eu descobri depois de horas lendo os guias e documentações é que ... Isso não pode ser feito para habilidades personalizadas .

Portanto, sua melhor aposta para o seu caso de uso é usar o Alexa Smart Home junto com algum serviço de casa inteligente. Eu sei que você disse:

Idealmente, quero fazer isso sem um serviço baseado em nuvem (por exemplo, SmartThings ou Wink)

Infelizmente, a única maneira de não ter um nome de chamada com o Alexa é usar suas APIs predefinidas (por exemplo, Smart Home, List Skill e Flash Briefing).

EDIT: O seu caso de uso se enquadra na API da Smart Home. Assim, você sempre pode criar seu próprio serviço que consome essa API, em vez de depender de outros serviços (Wink, SmartThings, etc.).

leon.valencia
fonte
1
Existe uma fonte que diz que isso não pode ser feito ou é o resultado implícito da sua pesquisa?
Helmar
É apenas implícito. Embora em retrospectiva, considerando como o reconhecimento de voz e a PNL funcionam, deveria ter sido uma afirmação razoável e eu não deveria ter entrado em uma pesquisa desse tipo em primeiro lugar. É uma afirmação razoável, porque uma expressão específica precisa de um contexto para o qual seria interpretada - e esse contexto é o nome da chamada. De fato, o motivo pelo qual existe uma palavra de ativação é o mesmo que ter um nome de chamada - para que as instruções que seriam interpretadas pertençam a um contexto (a palavra de ativação é o contexto geral do sistema, de modo que as declarações aleatórias não sejam processadas).
Leon.valencia
A única maneira de ter enunciados que não precisam de nomes de chamada são aqueles com contextos de todo o sistema (essas são as APIs). Por exemplo, expressões que o Alexa interpreta como interagindo com dispositivos seriam automaticamente para a API de casa inteligente - a PNL categorizaria a expressão como tal usando palavras-chave como ligar, desligar, desligar, etc + sintaxe que é como um comando para um dispositivo.
Leon.valencia
Mas você sabe o que ... seu caso de uso se enquadra na API de casa inteligente. Então, acrescentarei minha resposta porque você pode simplesmente usar essa API.
Leon.valencia
Obrigado. Eu estava lendo sobre o Smart Home Skills e, embora eu não ache que eles ainda possam fazer tudo o que eu quero, parece que a Amazon planeja adicionar mais recursos a ele. Então, em vez de fauxmo, acho que vale a pena investir em uma Smart Home Skill de código aberto que possa processar todos os comandos disponíveis e ser expansível para o futuro. Aqui está a API atual para a posteridade: developer.amazon.com/public/solutions/alexa/alexa-skills-kit/…
PhratcuredBlue
7

Agora você deve conseguir fazer isso com a interação gratuita do nome do Alexa .

Para tornar sua habilidade mais detectável para interação sem nome, você pode implementar a interface CanFulfillIntentRequest em sua habilidade

CSharper
fonte
6

Como o lynx já detalha sua resposta, não há como ficar completamente sem o nome da chamada, a menos que você esteja endereçando as APIs predefinidas. No entanto, perguntar minha habilidade não é a única maneira de usar o nome da invocação.

As páginas do desenvolvedor oferecem três maneiras diferentes de usar nomes de chamada com uma solicitação.

“Alexa, peça horóscopos diários para gêmeos”

"Alexa, fale com horóscopos diários e me dê o horóscopo para Touro"

"Alexa, me dê meu horóscopo Touro usando Horóscopos Diários "

Documentação do nome de chamada do Alexa

Além disso, esta página mostra quais outras palavras você pode usar para conectar a solicitação, o nome da chamada e as palavras de conexão obrigatórias. Portanto, se você criar sua própria habilidade Alexa, tudo se resume a usar um bom nome de chamada e uma boa solicitação para torná-la natural.

Melhor ainda, seu eco já deve reagir a isso iniciando o Blu-ray com sua integração Kodi.

Alexa , jogue Blu-ray com Kodi .

Portanto, enquanto você não pode se livrar do nome da chamada fora das APIs predefinidas, você pode fazer com que o comando de voz pareça mais natural e pular o uso estranho de perguntar ...

Helmar
fonte
2

Se você usar palavras especiais não usadas por padrão pelo Alexa, é realmente possível. O método é bastante complicado de qualquer maneira.

Você só precisa evitar passar pela AWS para sua solicitação! Impossível você diz? Sim, é possível.

Em seu aplicativo Amazon Alexa ou na web Amazon Alexa aplicativo , você faça o login em sua conta Amazon Alexa, e em -> Configurações -> história o seu tem uma página ao vivo de todos os pedidos e palavras que você vai dizer a Alexa.

Nesse momento, você pode usar um analisador da Web para dizer a palavra e acionar um script, se essa é a que você deseja, ou você pode usar algum software pequeno e surpreendente para Windows, que pode acionar ações e scripts.

Aqui o link do software. Confira no YouTube tutoriais sobre como usar o addtopad.

Se você deseja iniciar scripts, basta acionar um ouvinte em uma porta e uma solicitação especial enviada após uma palavra no software. Uso-o em casa e gosto muito do fato de não precisar dizer nenhum nome de invocação.

Depois, como eu disse, você pode usar qualquer palavra, mesmo que seja aberta. Ele acionará seu script, mas você ouvirá um "desculpe, eu não sei disso" do Alexa.

Eu uso e funciona perfeitamente!

léo Bernard
fonte
Essa é uma abordagem interessante.
Helmar
Devemos confiar nesse software? Faz-me twitchy ...
Sean Houlihane
-2

Então, essa documentação da Amazon não é verdadeira? https://developer.amazon.com/docs/custom-skills/understanding-how-users-invoke-custom-skills.html#invoking-a-skill-with-no-specific-request-no-intent

Isso parece dizer diretamente que você pode dizer "Alexa" mais o nome da chamada. Como "Alexa, Horóscopos diários".

Ele também mostra esse método como uma opção nº 3 para habilidades personalizadas: https://developer.amazon.com/docs/custom-skills/choose-the-invocation-name-for-a-custom-skill.html#invoking- habilidades personalizadas

Mike
fonte
3
A documentação é verdadeira, mas acho que não é isso que o autor está procurando aqui. Por exemplo, "Play Bluray" não seria o nome da invocação - é uma intenção, sem nenhum nome de invocação especificado. A menos que você realmente tenha chamado sua habilidade "Play Bluray" (que provavelmente não seria permitida pelas orientações de nome da Amazon), isso não funcionará, infelizmente.
Aurora0001