/// <summary>
    /// Sends a <see cref="DF2QueryInput"/> object as a HTTP request to the remote
    /// chatbot.
    /// </summary>
    /// <param name="queryInput">The input request.</param>
    /// <param name="session">The session ID, i.e., the ID of the user who talks to the chatbot.</param>
    private IEnumerator DetectIntent(string audio = "")
    {
        // Gets the JWT access token.
        string accessToken = string.Empty;

        while (!JwtCache.TryGetToken(accessSettings.ServiceAccount, out accessToken))
        {
            yield return(JwtCache.GetToken(accessSettings.CredentialsFileName,
                                           accessSettings.ServiceAccount));
        }

        Debug.Log(accessToken);
        // Prepares the HTTP request.
        var settings = new JsonSerializerSettings();

        settings.NullValueHandling = NullValueHandling.Ignore;
        settings.ContractResolver  = new CamelCasePropertyNamesContractResolver();


        S2TRequest request = new S2TRequest();

        request.Audio         = new S2TAudio();
        request.Audio.Content = audio;

        request.Config = new S2TConfig();
        request.Config.LanguageCode = "en-US";

        string jsonInput = JsonConvert.SerializeObject(request, settings);

        Debug.Log("Json: " + jsonInput);

        byte[] body = Encoding.UTF8.GetBytes(jsonInput);


        UnityWebRequest df2Request = new UnityWebRequest(PARAMETRIC_DETECT_INTENT_URL, "POST");

        df2Request.SetRequestHeader("Authorization", "Bearer " + accessToken);
        df2Request.SetRequestHeader("Content-Type", "application/json");
        df2Request.uploadHandler   = new UploadHandlerRaw(body);
        df2Request.downloadHandler = new DownloadHandlerBuffer();

        yield return(df2Request.SendWebRequest());

        // Processes response.
        if (df2Request.isNetworkError || df2Request.isHttpError)
        {
            DetectIntentError?.Invoke(JsonConvert.DeserializeObject <S2TErrorResponse>(df2Request.downloadHandler.text));
        }
        else
        {
            string response = Encoding.UTF8.GetString(df2Request.downloadHandler.data);

            S2TResponse resp = JsonConvert.DeserializeObject <S2TResponse>(response);
            ChatbotResponded?.Invoke(resp);
            // if(resp.Results[0] !=null)
            // {
            //  Debug.Log("transcript: "+resp.Results[0].Alternatives[0].Transcript);
            // }
        }
    }
    private void LogResponseText(S2TResponse response)
    {
        if (WaitingPanel)
        {
            WaitingPanel.SetActive(false);
        }

        ResultText.text = "";
        foreach (var result in response.Results)
        {
            foreach (var alternative in result.Alternatives)
            {
                Debug.Log("Transcript: " + alternative.Transcript);
                ResultText.text += alternative.Transcript + "\n";
            }
        }
    }