Пример #1
0
        public ResponseModel SendMessage(MessageRequestModel message)
        {
            var _sessionid = _distributedCache.GetString(message.UserId);

            if (string.IsNullOrWhiteSpace(_sessionid))
            {
                _sessionid = _assistantService.CreateSession(_assistantId).Result.SessionId;

                _distributedCache.SetString(message.UserId, _sessionid, new DistributedCacheEntryOptions()
                {
                    SlidingExpiration = new TimeSpan(00, 4, 00)
                });
            }

            var messageObj = new IBM.Watson.Assistant.v2.Model.MessageInput()
            {
                Text = message.Text
            };

            MessageContextSkills skills = new MessageContextSkills();
            MessageContextSkill  skill  = new MessageContextSkill
            {
                UserDefined = new Dictionary <string, object>()
            };

            if (message.ContextVariables != null)
            {
                foreach (var item in message.ContextVariables)
                {
                    skill.UserDefined.Add(item.Key, item.Value);
                }
            }

            skills.Add("main skill", skill);

            var MessageContext = new IBM.Watson.Assistant.v2.Model.MessageContext()
            {
                Global = new MessageContextGlobal()
                {
                    System = new MessageContextGlobalSystem()
                    {
                        UserId   = message.UserId,
                        Timezone = "GMT3"
                    }
                },
                Skills = skills
            };

            var result = _assistantService.Message(_assistantId, _sessionid, messageObj, MessageContext);

            var response = Newtonsoft.Json.JsonConvert.DeserializeObject <ResponseModel>(result.Response);

            return(response);
        }
Пример #2
0
        public Response SendMessage(string message, string userId)
        {
            var _sessionid = _distributedCache.GetString(userId);

            if (string.IsNullOrWhiteSpace(_sessionid))
            {
                _sessionid = _assistantService.CreateSession(_assistantId).Result.SessionId;

                _distributedCache.SetString(userId, _sessionid, new DistributedCacheEntryOptions()
                {
                    SlidingExpiration = new TimeSpan(00, 10, 00)
                });
            }
            //var sessionid = _assistantService.CreateSession(_assistantId).Result.SessionId;

            var messageObj = new IBM.Watson.Assistant.v2.Model.MessageInput()
            {
                Text = message
            };

            MessageContextSkills skills = new MessageContextSkills();
            MessageContextSkill  skill  = new MessageContextSkill();

            skill.UserDefined = new Dictionary <string, object>();

            skills.Add("main skill", skill);

            var MessageContext = new IBM.Watson.Assistant.v2.Model.MessageContext()
            {
                Global = new MessageContextGlobal()
                {
                    System = new MessageContextGlobalSystem()
                    {
                        UserId   = userId,
                        Timezone = "GMT3"
                    }
                },
                Skills = skills
            };

            var result = _assistantService.Message(_assistantId, _sessionid, messageObj, MessageContext);

            var response = JsonConvert.DeserializeObject <Response>(result.Response);

            //_assistantService.DeleteSession(_assistantId, sessionid);
            return(response);
        }
Пример #3
0
        public WatsonResponse MessageWithContext(string utterance, string userid)
        {
            IamAuthenticator authenticator = new IamAuthenticator(
                apikey: apikey);

            AssistantService service = new AssistantService("2019-02-28", authenticator);

            service.SetServiceUrl(url);

            MessageContextSkills skills = new MessageContextSkills();
            MessageContextSkill  skill  = new MessageContextSkill();

            skill.UserDefined = new Dictionary <string, object>();
            skill.UserDefined.Add("unidade", FUNC.unidade);
            skill.UserDefined.Add("sexo", FUNC.sexo);
            //Test

            skills.Add("main skill", skill);

            var result = service.Message(
                assistantId: assistantId,
                sessionId: sessionId,
                input: new MessageInput()
            {
                Text = utterance
            },
                context: new MessageContext()
            {
                Global = new MessageContextGlobal()
                {
                    System = new MessageContextGlobalSystem()
                    {
                        UserId = userid
                    }
                },
                Skills = skills
            }
                );

            WatsonResponse response = JsonConvert.DeserializeObject <WatsonResponse>(result.Response);

            return(response);

            //Console.WriteLine(result.Response);
        }
Пример #4
0
        public void MessageWithContext()
        {
            IamAuthenticator authenticator = new IamAuthenticator(
                apikey: Keys.apikey);

            AssistantService service = new AssistantService(Keys.versionDate, authenticator);

            service.SetServiceUrl(Keys.url);

            MessageContextSkills        skills = new MessageContextSkills();
            MessageContextSkill         skill  = new MessageContextSkill();
            Dictionary <string, object> userDefinedDictionary = new Dictionary <string, object>();

            userDefinedDictionary.Add("account_number", "123456");
            skill.UserDefined = userDefinedDictionary;
            skills.Add("main skill", skill);

            var result = service.Message(
                assistantId: Keys.assistantId,
                sessionId: sessionId,
                input: new MessageInput()
            {
                Text = "Hello"
            },
                context: new MessageContext()
            {
                Global = new MessageContextGlobal()
                {
                    System = new MessageContextGlobalSystem()
                    {
                        UserId = "my_user_id"
                    }
                },
                Skills = skills
            }
                );

            Console.WriteLine(result.Response);
        }
Пример #5
0
        public void MessageWithContext()
        {
            IamAuthenticator authenticator = new IamAuthenticator(
                apikey: "{apikey}");

            AssistantService service = new AssistantService("2019-02-28", authenticator);

            service.SetServiceUrl("{serviceUrl}");

            MessageContextSkills skills = new MessageContextSkills();
            MessageContextSkill  skill  = new MessageContextSkill();

            skill.UserDefined.Add("account_number", "123456");
            skills.Add("main skill", skill);

            var result = service.Message(
                assistantId: "{assistantId}",
                sessionId: "{sessionId}",
                input: new MessageInput()
            {
                Text = "Hello"
            },
                context: new MessageContext()
            {
                Global = new MessageContextGlobal()
                {
                    System = new MessageContextGlobalSystem()
                    {
                        UserId = "my_user_id"
                    }
                },
                Skills = skills
            }
                );

            Console.WriteLine(result.Response);
        }
Пример #6
0
        static void Main(string[] args)
        {
            IamConfig        config  = new IamConfig(Settings.Default.ApiKey);
            AssistantService service = new AssistantService(Settings.Default.ApiVersion, config);

            service.SetEndpoint(Settings.Default.ApiUrl);

            try
            {
                var sessionResponse = service.CreateSession(Settings.Default.AssistantId);
                Log(sessionResponse.Response);
                var    sessionId = sessionResponse.Result.SessionId;
                string text      = "Hello";
                string lastType  = string.Empty;
                Dictionary <int, string> options = new Dictionary <int, string>();
                do
                {
                    var messageInput = new MessageInput()
                    {
                        Text = text
                    };
                    var messageResponse = service.Message(Settings.Default.AssistantId, sessionId, messageInput);
                    Log(messageResponse.Response);
                    var response = JsonConvert.DeserializeObject <Welcome>(messageResponse.Response);
                    if (response.Output.UserDefined?.UiAction?.NotificationDisplay?.DisplayText != null)
                    {
                        DoService("***" + response.Output.UserDefined?.UiAction?.NotificationDisplay?.DisplayText + "***");
                    }

                    foreach (var generic in response.Output.Generic)
                    {
                        switch (generic.ResponseType)
                        {
                        case "text":
                            Print(generic.Text);
                            break;

                        case "option":
                            Print(generic.Title);
                            options.Clear();
                            for (int i = 0; i < generic.Options.Length; i++)
                            {
                                var option = generic.Options[i];
                                Console.WriteLine($"{i + 1}: {option.Label}");
                                options.Add(i + 1, option.Value.Input.Text);
                            }

                            break;
                        }

                        if (generic.Typing.HasValue && generic.Typing.Value)
                        {
                            Print("...");
                            Thread.Sleep(Settings.Default.TypingTime);
                        }
                    }

                    if (response.Output.Actions != null)
                    {
                        foreach (var action in response.Output.Actions)
                        {
                            DoService($"---> {action.ResultVariable} = {action.Type}.{action.Name}");
                            var actionMessageInput = new MessageInput()
                            {
                                Text = ""
                            };
                            MessageContextSkills skills = new MessageContextSkills();
                            MessageContextSkill  skill  = new MessageContextSkill();
                            skill.UserDefined = new Dictionary <string, object>();
                            skill.UserDefined.Add(action.ResultVariable, "123456");
                            skills.Add("main skill", skill);
                            var messageContext = new MessageContext()
                            {
                                Skills = skills
                            };
                            var actionMessage = service.Message(Settings.Default.AssistantId, sessionId, actionMessageInput, context: messageContext);
                            Log(actionMessage.Response);
                        }
                    }

                    lastType = response.Output.Generic.LastOrDefault()?.ResponseType ?? string.Empty;
                    Console.Write($"{USER_NAME}: ");
                    text = Console.ReadLine();
                    if (lastType == "option")
                    {
                        // Managing choice selection through its index.
                        if (int.TryParse(text, out int value) && options.ContainsKey(value))
                        {
                            text = options[value];
                        }
                    }
                } while (text != Settings.Default.ExitKeyword);
            }
            catch (ServiceResponseException e)
            {
                Console.WriteLine("Error: " + e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e.Message);
            }

            Console.WriteLine("\n\nPress any key to close.");
            Console.ReadKey();
        }