4

是否有可能或在路线图中在不使用 API.ai 或 NodeJS SDK 的情况下在 Google 上开发自己的 Action?

4

3 回答 3

4

这已经是可能的了:我用Vert.x在 Java 中构建了一个非常小的对话操作示例:https ://github.com/Ithildir/actions-on-google-vertx-sample

在这里您可以找到有关 HTTP 协议的更多信息:https ://developers.google.com/actions/reference/conversation

于 2016-12-29T16:35:26.163 回答
2

您可以使用 JAX-RS 实现与 Google 兼容的 Webhook 上的操作。例如,这个 Java 库模拟了 Google 记录的 HTTP 协议:https ://github.com/l0s/google-actions-conversation-api 。有关更多详细信息,请参阅文档。示例实现如下所示:

@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;
}

请注意,您需要在反序列化过程中配置 JSON 序列化器/反序列化器忽略未知属性,并在序列化过程中排除空字段或空字段。

您不一定需要使用该库,但它让您了解如何使用 servlet 实现 webhook。此外,这种方法(有或没有库)不一定需要与 JAX-RS 一起使用。相同的技术可以应用于无服务器解决方案,例如带有 Lambda 的 AWS API Gateway。

于 2017-01-21T20:31:08.993 回答
0

现在 Kotlin/Java 有了另一种选择。这是 Google SDK 上官方 Actions 的开源端口。官方的 node.js SDK 支持 API.ai 和 Actions SDK(直接集成),Kotlin/Java 也支持。它正在开发中,但已接近 100% 完成,更多的文档/示例将会出现。 https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin

于 2017-08-07T18:09:52.423 回答