Dialogflow v2 - сделать запрос REST API без какой-либо библиотеки - PullRequest
0 голосов
/ 01 февраля 2020

Как бы я мог сделать запрос API для определения намерения (мне нужно только это) с Google Dialogflow?

Проблема, с которой я столкнулся, заключается в том, что я не могу использовать любую библиотеку (закрытую систему, в которую я не могу просто добавить любую библиотеку, которую я хочу к ней). Я могу ТОЛЬКО делать запросы REST и аутентифицироваться с помощью Oauth1.0 / Keys и, возможно, Oauth2. .0 также.

Что мне нужно сделать, чтобы сделать такой запрос с этими ограничениями?

Заранее спасибо,

1 Ответ

0 голосов
/ 21 февраля 2020

Попробуйте (это использует нативную библиотеку. net) - я использую. net core 3.1, но я считаю, что это должно работать в других версиях. Вам нужно Json. Net, чтобы разобрать ответ. При этом используется oAuth 2.0, поскольку 1.0 устарела.

 dynamic results;
    string url = @"https://api.dialogflow.com/v1/intents/<intentId>";

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Headers.Add(HttpRequestHeader.Authorization, "Bearer <your dialogflow developer key>");

    try
    {
        WebResponse response = request.GetResponse();
        using (Stream responseStream = response.GetResponseStream())
        {
            StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.UTF8);
            var restResponse = reader.ReadToEnd();
            results = JsonConvert.DeserializeObject<dynamic>(restResponse);
    }
    catch (WebException ex)
    {
        WebResponse errorResponse = ex.Response;
        using (Stream responseStream = errorResponse.GetResponseStream())
        {
            StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8"));
            String errorText = reader.ReadToEnd();
        }
        throw;
    }
...