2016-12-29 21 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