C# Ошибка аутентификации в google dialogflow API - PullRequest
0 голосов
/ 29 марта 2020

Как мне это исправить. Я хочу установить свою аутентификацию в моем коде, а не на машине. Я проверил почти каждый ответ на stackoverflow и github, но ни у одного нет хорошего объяснения.

Как передать учетные данные в намерение создания, он выдает эту ошибку.

InvalidOperationException : Учетные данные приложения по умолчанию недоступны. Они доступны, если работают в Google Compute Engine. В противном случае необходимо определить переменную среды GOOGLE_APPLICATION_CREDENTIALS, указывающую на файл, определяющий учетные данные. См. https://developers.google.com/accounts/docs/application-default-credentials для получения дополнительной информации.

GoogleCredential credential =
            GoogleCredential.FromFile(file);

        //var credential = GoogleCredential.FromStream(
        //  Assembly.GetExecutingAssembly().GetManifestResourceStream("chatbot-a90a9-8f2fb910202d.json"))
        //  .CreateScoped(IntentsClient.DefaultScopes);


        var storage = StorageClient.Create(credential);


        var client = IntentsClient.Create();

        var text = new Intent.Types.Message.Types.Text();
        text.Text_.Add("Message Text");

        var message = new Intent.Types.Message()
        {
            Text = text
        };
        var trainingPhrasesParts = new List<string>
        {
            "Book a fligt",
            "check cheap flights"
        };
        var phraseParts = new List<Intent.Types.TrainingPhrase.Types.Part>();
        foreach (var part in trainingPhrasesParts)
        {
            phraseParts.Add(new Intent.Types.TrainingPhrase.Types.Part()
            {
                Text = part
            });
        }

        var trainingPhrase = new Intent.Types.TrainingPhrase();
        trainingPhrase.Parts.AddRange(phraseParts);

        var intent = new Intent();
        intent.DisplayName = "test";
        intent.Messages.Add(message);
        intent.TrainingPhrases.Add(trainingPhrase);

        var newIntent = client.CreateIntent(
            parent: new AgentName("chatbot-a90a9"),
            intent: intent
        );

1 Ответ

1 голос
/ 29 марта 2020

решено.

меняю

var client = IntentsClient.Create();

на

IntentsClientBuilder builder = new IntentsClientBuilder
        {
            CredentialsPath = file, // Relative to where the code is executing or absolute path.
            // Scopes = IntentsClient.DefaultScopes // Commented out because there's no need to specify this since you are using the defaults and all default values will be automatically used for values not specified in the builder.
        };
        IntentsClient client = builder.Build();
...