Можно ли отобразить чат-бот Dialogflow в приложение для Android по API? - PullRequest
0 голосов
/ 31 октября 2018

В настоящее время мое путешествие началось с Dialogflow. Можно ли отобразить сообщение из чат-бота в моем приложении для Android для API?

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Если вы хотите сделать запрос на обнаружение намерений из приложения Android, в настоящее время прямой поддержки использования библиотек DialogFlow нет, но альтернативой этому является использование Firebase Functions , в котором вы можете настроить Auth так, чтобы затем вызывать функцию Firebase, которая затем может сделать запрос на обнаружение намерения для Dialogflow, а затем отправить обратно этот запрос из функции Firebase.

Дайте мне знать, если это помогает или ваш вариант использования отличается от того, что я имел выше. :)

0 голосов
/ 01 ноября 2018

Существует 3 способа интеграции Dialogflow в ваше приложение для Android:

  • использование Rest API, которое не является простой задачей и часто вызывает проблемы при создании полезных нагрузок запроса.
  • с использованием Android-клиента от Dialogflow , который является наиболее стабильным и функциональным на данный момент, но не обновляется в течение года для новых функций бета-версии, поступающих в V2.
  • с использованием Java API-клиента , который все еще развивается, но поддерживает функции бета-версии и регулярно обновляется.

Пользовательский интерфейс для Chatbot будет создан вами, поскольку в настоящее время поддержка отсутствует.

Чтобы интегрировать Android-клиент, следуйте приведенному ниже коду:

Зависимость:

// Dialogflow SDK dependencies
    implementation 'ai.api:sdk:2.0.7@aar'
    implementation 'ai.api:libai:1.6.12'

Инициировать чат-бота в onCreate:

final AIConfiguration config = new AIConfiguration("<Client Access Code>",
            AIConfiguration.SupportedLanguages.English,
            AIConfiguration.RecognitionEngine.System);
aiDataService = new AIDataService(this, config);
customAIServiceContext = AIServiceContextBuilder.buildFromSessionId(uuid);
aiRequest = new AIRequest();
aiRequest.setQuery(msg);

Call Dialogflow в асинхронном потоке:

try {
      return aiDataService.request(request, customAIServiceContext);
    } catch (AIServiceException e) {
      e.printStackTrace();
    }

Получить ответ от бота:

String botReply = aiResponse.getResult().getFulfillment().getSpeech();

Для интеграции Java API Client следуйте приведенному ниже коду:

Зависимость:

// Java V2
    implementation 'com.google.cloud:google-cloud-dialogflow:0.67.0-alpha'
    implementation 'io.grpc:grpc-okhttp:1.15.1'

Инициировать чат-бота в onCreate:

InputStream stream = getResources().openRawResource(R.raw.test_agent_credentials);
GoogleCredentials credentials = GoogleCredentials.fromStream(stream);
String projectId = ((ServiceAccountCredentials)credentials).getProjectId();
SessionsSettings.Builder settingsBuilder = SessionsSettings.newBuilder();
SessionsSettings sessionsSettings = settingsBuilder.setCredentialsProvider(FixedCredentialsProvider.create(credentials)).build();
sessionsClient = SessionsClient.create(sessionsSettings);
session = SessionName.of(projectId, uuid);
QueryInput queryInput = QueryInput.newBuilder().setText(TextInput.newBuilder().setText(msg).setLanguageCode("en-US")).build();

Call Dialogflow в асинхронном потоке:

try{
     DetectIntentRequest detectIntentRequest = DetectIntentRequest.newBuilder()
                            .setSession(session.toString())
                            .setQueryInput(queryInput)
                            .build();
     return sessionsClient.detectIntent(detectIntentRequest);
   } catch (Exception e) {
     e.printStackTrace();
   }

Получить ответ от бота:

String botReply = response.getQueryResult().getFulfillmentText();

Надеюсь, это поможет вам:)

0 голосов
/ 31 октября 2018

Вы можете, это намного сложнее, чем на компьютере. Вы делаете чат-бот на компьютере, а затем загружаете его на свой телефон. Хорошего дня !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...