Возможно ли или в «Дорожной карте» разработать собственное действие в Google без использования API.ai или SDK NodeJS?Другие SDK или REST API для действий в Google?
ответ
Уже можно: я построил очень небольшой пример разговора действий в Java с Vert.x: https://github.com/Ithildir/actions-on-google-vertx-sample
Здесь Вы можете найти более подробную информацию о протоколе HTTP: https://developers.google.com/actions/reference/conversation
Просто имейте в виду, что Google активно продвигает разработку api.ai. Вы можете использовать любые языки для получения/генерации json без api.ai, но это может не продолжаться. Google уже искалечил узел sdk, чтобы заставить вас использовать api.ai. –
Спасибо, Андреас, я посмотрю. Bela, мне не нравятся графические интерфейсы, как это делают многие разработчики, поэтому, если Google/api.ai не предоставляют простой интерфейс, Google Actions завершится неудачно –
Вы можете реализовать действия на совместимом с 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.
Спасибо Карлос, я использую много JAX-RS, это действительно полезно для быстрого разработка REST API. Я ищу реализацию Go, и этот репозиторий является хорошим источником вдохновения. –
Также есть порт официального SDK для Java/Kotlin. Он имеет соответствующий API и все функциональные возможности официального. Доступно здесь https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin – Patrick
Теперь есть еще один вариант для Kotlin/Java. Это порт с открытым исходным кодом официальных действий в SDK Google. Официальный SDK node.js поддерживает как API.ai, так и Action SDK (прямая интеграция), а также Kotlin/Java. Он находится в стадии разработки, но близится к 100% завершенности, и будет добавлено больше документации/примеров. https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin
Я добавил ответ, но также будет комментировать здесь - существует неофициальный SDK Java/Kotlin, который является наиболее полным вариантом для JVM. Документы/readme скоро будут обновлены и готовы к использованию. https://github.com/TicketmasterMobileStudio/actions-on-google-kotlin – Patrick