是否有可能或在路线图中在不使用 API.ai 或 NodeJS SDK 的情况下在 Google 上开发自己的 Action?
3 回答
这已经是可能的了:我用Vert.x在 Java 中构建了一个非常小的对话操作示例:https ://github.com/Ithildir/actions-on-google-vertx-sample
在这里您可以找到有关 HTTP 协议的更多信息:https ://developers.google.com/actions/reference/conversation
您可以使用 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。
现在 Kotlin/Java 有了另一种选择。这是 Google SDK 上官方 Actions 的开源端口。官方的 node.js SDK 支持 API.ai 和 Actions SDK(直接集成),Kotlin/Java 也支持。它正在开发中,但已接近 100% 完成,更多的文档/示例将会出现。 https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin