public static MessageResponse MessageRequestV1(AppSettings appSettings, JObject requestBody) { string methodName = "MessageRequestV1"; MessageResponse result = new MessageResponse(); try { WatsonAssistant settings = appSettings.WatsonServices.WatsonAssistant; IamAuthenticator authenticator = new IamAuthenticator(apikey: $"{requestBody["apikey"]}"); AssistantService assistant = new AssistantService($"{settings.Version}", authenticator); assistant.SetServiceUrl($"{requestBody["endpoint"].ToString()}"); string message = requestBody["message"]?.ToString(); message = Regex.Replace(message, @"\s+", " "); JObject context = requestBody["context"] != null ? requestBody["context"] as JObject : new JObject(); Context wcontext = new Context(); wcontext.ConversationId = context["conversation_id"] != null ? context["conversation_id"].ToString() : ""; JObject system = requestBody["system"] != null ? requestBody["system"] as JObject : new JObject(); Dictionary <string, object> systemResponse = new Dictionary <string, object>(); systemResponse.Add("initialized", system["initialized"] != null ? system["initialized"] : new object { }); systemResponse.Add("dialog_stack", system["dialog_stack"] != null ? system["dialog_stack"] : new object { }); wcontext.System = systemResponse; JObject metadata = requestBody["metadata"] != null ? requestBody["metadata"] as JObject : new JObject(); MessageContextMetadata wmetadata = new MessageContextMetadata(); wmetadata.UserId = metadata["userid"]?.ToString(); wcontext.Metadata = wmetadata; foreach (var item in context) { if (!(item.Key == "conversation_id" || item.Key == "system" || item.Key == "metadata")) { wcontext.Add(item.Key, item.Value != null ? item.Value : ""); } } //List<RuntimeEntity> entities = new List<RuntimeEntity>(); //entities.Add(new RuntimeEntity() { Entity = "name", Confidence = float.Parse("0.4") }); result = assistant.Message( workspaceId: $"{requestBody["workspaceid"]}", input: new MessageInput() { Text = message }, //entities: entities, context: wcontext ).Result; return(result); } catch (Exception e) { Log.Write(appSettings, LogEnum.ERROR.ToString(), label, className, methodName, $"ERROR: {JsonConvert.SerializeObject(requestBody)}"); Log.Write(appSettings, LogEnum.ERROR.ToString(), label, className, methodName, $"ERROR: {e.Source + Environment.NewLine + e.Message + Environment.NewLine + e.StackTrace}"); throw e; } }
private async void OnSendMessage() { if (String.IsNullOrWhiteSpace(input)) { return; } ActualMessage.input = input; Messages.Add(new ChatText { isResponse = false, text = input }); DependencyService.Get <IKeyboardHelper>().HideKeyboard(); ActualMessage.input = string.Empty; ActualMessage = await WatsonAssistant.Send(ActualMessage); if (ActualMessage != null) { Messages.Add(new ChatText { isResponse = true, text = ActualMessage.text }); } else { if (_countErros == 0) { Messages.Add(new ChatText { isResponse = true, text = "Desculpe, houve um problema em nossos servidores\nConversamos mais tarde tudo bem?" }); } else { Messages.Add(new ChatText { isResponse = true, text = "Desculpe, mas ainda não resolvemos\nConversamos mais tarde tudo bem?" }); } _countErros++; } }