2016-12-29 4 views
4

Возможно ли или в «Дорожной карте» разработать собственное действие в Google без использования API.ai или SDK NodeJS?Другие SDK или REST API для действий в Google?

+0

Я добавил ответ, но также будет комментировать здесь - существует неофициальный SDK Java/Kotlin, который является наиболее полным вариантом для JVM. Документы/readme скоро будут обновлены и готовы к использованию. https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin – Patrick

ответ

3

Уже можно: я построил очень небольшой пример разговора действий в Java с Vert.x: https://github.com/Ithildir/actions-on-google-vertx-sample

Здесь Вы можете найти более подробную информацию о протоколе HTTP: https://developers.google.com/actions/reference/conversation

+0

Просто имейте в виду, что Google активно продвигает разработку api.ai. Вы можете использовать любые языки для получения/генерации json без api.ai, но это может не продолжаться. Google уже искалечил узел sdk, чтобы заставить вас использовать api.ai. –

+0

Спасибо, Андреас, я посмотрю. Bela, мне не нравятся графические интерфейсы, как это делают многие разработчики, поэтому, если Google/api.ai не предоставляют простой интерфейс, Google Actions завершится неудачно –

2

Вы можете реализовать действия на совместимом с Google веб-узле с использованием JAX-RS. Например, эта библиотека Java моделирует протокол HTTP, который Google документировал: 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 serialiser/deserialiser игнорировать неизвестные свойства при десериализации и исключить нулевые или пустые поля во время сериализации.

Вам необязательно использовать библиотеку обязательно, но это дает вам представление о том, как реализовать веб-кейс с сервлетом. Кроме того, этот подход (с библиотекой или без нее) не обязательно должен использоваться с JAX-RS. Тот же метод может быть применен к безсерверному решению, например AWS API Gateway с Lambda.

+0

Спасибо Карлос, я использую много JAX-RS, это действительно полезно для быстрого разработка REST API. Я ищу реализацию Go, и этот репозиторий является хорошим источником вдохновения. –

+0

Также есть порт официального SDK для Java/Kotlin. Он имеет соответствующий API и все функциональные возможности официального. Доступно здесь https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin – Patrick

0

Теперь есть еще один вариант для Kotlin/Java. Это порт с открытым исходным кодом официальных действий в SDK Google. Официальный SDK node.js поддерживает как API.ai, так и Action SDK (прямая интеграция), а также Kotlin/Java. Он находится в стадии разработки, но близится к 100% завершенности, и будет добавлено больше документации/примеров. https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin