Пример #1
0
        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;
            }
        }
Пример #2
0
        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++;
            }
        }