/// <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"; } } }