Не рабочий пример для Dialogflow V2 api

Возникли проблемы с документацией C# SDK, которую можно найти здесь: http://googleapis.github.io/google-cloud-dotnet/docs/Google.Cloud.Dialogflow.V2/api/Google.Cloud.Dialogflow.V2.SessionsClient.html#Google_Cloud_Dialogflow_V2_SessionsClient_Create_Google_Assogflow_V2_SessionsClient_Create_Google_Account_Gax_Create_Google_Account_Gaxflow_Create_Google_Account_Gax_Create_Google_Account_Gaxflow_Google_Account_Gax_Create_Google_Acpi_Gax_Gax

Нет ссылки на метод ToChannelCredentials (). Мы не можем подключить SDK к диалогу, даже с пустым проектом. Этот метод все еще существует или устарел?

using Google.Cloud.Dialogflow.V2;
using Google.Apis.Auth.OAuth2;
using Grpc.Auth;
using Grpc.Core;
...
GoogleCredential cred = GoogleCredential.FromFile("/path/to/credentials.json");
Channel channel = new Channel(
    SessionsClient.DefaultEndpoint.Host, SessionsClient.DefaultEndpoint.Port, cred.ToChannelCredentials());
SessionsClient client = SessionsClient.Create(channel);
...
// Shutdown the channel when it is no longer required.
channel.ShutdownAsync().Wait();
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 171
1

Ответы 1

Вы пробовали подключиться с помощью закрытого ключа учетной записи службы? (Json файл)

Выполните следующие действия (рабочий пример на C#)

  1. После создания агента Dialogflow перейдите в настройки агента -> Общие -> щелкните ссылку Учетная запись службы
  2. Вы будете отправлены на облачную платформу Google, где вы можете создать учетную запись службы.
  3. После создания учетной записи службы будет возможность создать КЛЮЧ, создать его и загрузить его в формате (JSON).
  4. Этот ключ будет использоваться для подключения вашего проекта C# к агенту Dialogflow.
  5. Установите пакет Google.Cloud.Dialogflow.V2 в свой проект
  6. Создайте, например, класс диспетчера Dialogflow (пример см. Ниже)

        public class DialogflowManager {
        private string _userID;
        private string _webRootPath;
        private string _contentRootPath;
        private string _projectId;
        private SessionsClient _sessionsClient;
        private SessionName _sessionName;
    
        public DialogflowManager(string userID, string webRootPath, string contentRootPath, string projectId) {
    
            _userID = userID;
            _webRootPath = webRootPath;
            _contentRootPath = contentRootPath;
            _projectId = projectId;
            SetEnvironmentVariable();
    
        }
    
        private void SetEnvironmentVariable() {
            try {
                Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", _contentRootPath + "\\Keys\\{THE_DOWNLOADED_JSON_FILE_HERE}.json");
            } catch (ArgumentNullException) {
                throw;
            } catch (ArgumentException) {
                throw;
            } catch (SecurityException) {
                throw;
            }
        }
    
        private async Task CreateSession() {
            // Create client
            _sessionsClient = await SessionsClient.CreateAsync();
            // Initialize request argument(s)
            _sessionName = new SessionName(_projectId, _userID);
    
        }
    
        public async Task < QueryResult > CheckIntent(string userInput, string LanguageCode = "en") {
            await CreateSession();
            QueryInput queryInput = new QueryInput();
            var queryText = new TextInput();
            queryText.Text = userInput;
            queryText.LanguageCode = LanguageCode;
            queryInput.Text = queryText;
    
            // Make the request
            DetectIntentResponse response = await _sessionsClient.DetectIntentAsync(_sessionName, queryInput);
            return response.QueryResult;
        }
    }
    
  7. И тогда это можно назвать так, например, чтобы обнаружить намерения

         DialogflowManager dialogflow = new DialogflowManager("{INSERT_USER_ID}",
        _hostingEnvironment.WebRootPath,
        _hostingEnvironment.ContentRootPath,
        "{INSERT_AGENT_ID");
    
    var dialogflowQueryResult = await dialogflow.CheckIntent("{INSERT_USER_INPUT}");
    

В вашем примере под №7: Как / где мне создать экземпляр _hostingEnvironment?

Shiasu-sama 15.01.2020 11:02

@ Shiasu-sama Он вводится в конструктор (DI), где я вызываю DialogflowManager

Marc Asmar 15.01.2020 11:07

На что следует установить _contentRootPath?

Shiasu-sama 15.01.2020 11:11

Они используются для получения фактического местоположения файла ключа json, я только что заметил, что webRoothPath не используется в диспетчере, поэтому вы можете игнорировать его, но _contentRootPath возвращает абсолютный путь к каталогу, содержащему файлы содержимого приложения.

Marc Asmar 15.01.2020 11:15

Другие вопросы по теме