2016-12-29 47 views
4

如果不使用API​​.ai或NodeJS SDK,是否有可能或在路线图中开发自己的Google操作?Google上的操作的其他SDK或REST API?

+0

我已经添加了一个答案,但也会在这里发表评论 - 有一个非官方的Java/Kotlin SDK是JVM最完整的选项。文档/自述文件将很快更新,并且可以使用。 https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin – Patrick

回答

3

这已经是可能的:我用Java构建一个对话行动的一个非常小的例子与Vert.xhttps://github.com/Ithildir/actions-on-google-vertx-sample

在这里你可以找到关于HTTP协议的详细信息:https://developers.google.com/actions/reference/conversation

+0

请注意Google正在积极推动api.ai的发展。你可以使用任何语言来接收/生成没有api.ai的json,但它可能不会持续。 Google已经瘫痪了节点sdk,强迫你使用api.ai. –

+0

谢谢安德烈亚斯,我会看看它。 Bela,我不喜欢很多开发者所做的图形界面,所以如果Google/api.ai不提供简单的界面,Google Actions将失败 –

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串行器/解串器deserialisation过程中忽略未知的属性和序列化过程中排除空或空字段。

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

+0

感谢Carlos,我使用了很多JAX-RS,它对于快速开发REST API。我正在寻找一个Go实现,这个respository是灵感的源泉 –

+0

还有一个Java/Kotlin官方SDK的端口。它具有匹配的API和官方的所有功能。可在此处https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin – Patrick