¿Es posible o en la Hoja de ruta desarrollar su propia Acción en Google sin utilizar API.ai o NodeJS SDK?

4
Antón R. Yuste 29 dic. 2016 a las 11:03

3 respuestas

La mejor respuesta

Ya es posible: construí un ejemplo muy pequeño de una Acción de conversación en Java con Vert.x: https://github.com/Ithildir/actions-on-google-vertx-sample

Aquí puede encontrar más información sobre el protocolo HTTP: https://developers.google.com/actions / referencia / conversación

4
Andrea Di Giorgi 29 dic. 2016 a las 16:35

Ahora hay otra opción para Kotlin / Java. Este es un puerto de código abierto de las acciones oficiales en Google SDK. El SDK oficial de node.js es compatible con API.ai y Actions SDK (integración directa), y el Kotlin / Java también lo hace. Está en desarrollo, pero está casi al 100% completo y vendrá más documentación / ejemplos. https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin

0
Patrick 7 ago. 2017 a las 18:09

Puede implementar un webhook compatible con Actions on Google usando JAX-RS. Por ejemplo, esta biblioteca Java modela el protocolo HTTP que Google documentó: https: // github. com / l0s / google-actions-conversation-api. Consulte la documentación para más detalles. Un ejemplo de implementación se ve así:

@Path("/webhook")
@Consumes("application/json")
@Produces("application/json")
@POST
public ConversationResponse handle(final ConversationRequest request,
        @Context final HttpServletResponse servletResponse) {
    servletResponse.setHeader("Google-Assistant-API-Version", "v1");

    final SpeechResponse speechResponse = new SpeechResponse();
    speechResponse.setTextToSpeech("Hello!");
    final FinalResponse finalResponse = new FinalResponse();
    finalResponse.setSpeechResponse(speechResponse);
    final ConversationResponse response = new ConversationResponse();
    response.setConversationToken(request.getConversationToken());
    response.setFinalResponse(finalResponse);
    return response;
}

Tenga en cuenta que necesitaría configurar el serializador / deserialización JSON ignorar las propiedades desconocidas durante la deserialización y excluir los campos nulos o vacíos durante la serialización.

No es necesario que use la biblioteca necesariamente, pero le da una idea de cómo implementar el webhook con un servlet. Además, este enfoque (con o sin la biblioteca) no necesita ser usado necesariamente con JAX-RS. La misma técnica se puede aplicar a una solución sin servidor, como AWS API Gateway con Lambda.

2
Carlos Macasaet 21 ene. 2017 a las 20:31