Как интегрировать Dialogflow V2 в мое приложение? - PullRequest
0 голосов
/ 12 января 2019

В моем приложении для Android я интегрирую агента Dialogflow V2. Специального SDK для Android пока нет. Поэтому я использую клиентскую библиотеку Java из Dialogflow. следовал за учебником https://github.com/dialogflow/dialogflow-java-client-v2/issues/25.

Я добавил зависимости (dialogflow & oauth2) и создал учетную запись службы в консоли google-cloud. Добавил файл учетных данных в папку raw. следуя инструкциям здесь https://github.com/dialogflow/dialogflow-java-client-v2/issues/25. Получение ошибки как

java.lang.NoSuchMethodError: Нет статического метода decodeBase64 (Ljava / lang / String;) [B в классе Lorg / апач / Обще / кодек / двоичный / Base64; или его супер классы (объявление org.apache.commons.codec.binary.Base64 'появляется в /system/framework/org.apache.http.legacy.boot.jar)

  private void createDialogflow() {
        try {
            InputStream stream = getResources().openRawResource(R.raw.dialogflow_service_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);
            String uuid = UUID.randomUUID().toString();

            session = SessionName.of(projectId, uuid);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    private void sendMessage(String msg) {
        // Java V2
        setTypingMessage();
        QueryInput queryInput = QueryInput.newBuilder().setText(TextInput.newBuilder().setText(msg).setLanguageCode("en-US")).build();
        new RequestJavaV2Task(mContext, session, sessionsClient, queryInput).execute();

    }

    public void callbackV2(DetectIntentResponse response) {
        removeTyingMessage();
        if (response != null) {
            // process aiResponse here
            String botReply = response.getQueryResult().getFulfillmentText();
            Log.d("botReply", "V2 Bot Reply: " + botReply);
            setBotMessage(botReply);
        } else {
            Log.d("botReply", "Bot Reply: Null");
            setBotMessage("There was some communication issue. Please Try again!");
        }
    }

Существуют ли четкие документы о том, как интегрировать Dialogflow v2 в мое приложение для Android.

1 Ответ

0 голосов
/ 05 августа 2019

Учебное пособие , за которым вы следили, было обновлено. В случае, если кто-то сталкивается с этой проблемой, в соответствии с репо :

Сохраните свой CLIENT_ACCESS_TOKEN в gradle.properties

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