示例#1
0
        public ChatResult Answer(string robotId, string query, BaiduSession session)
        {
            string token   = session.AccessToken;
            string host    = "https://aip.baidubce.com/rpc/2.0/unit/service/chat?access_token=" + token;
            var    request = (HttpWebRequest)WebRequest.Create(host);

            request.Method      = "post";
            request.ContentType = "application/json";
            request.KeepAlive   = true;

            var robotRequest = RobotRequest.Create(robotId, query, session.SesstionKey);
            var str          = JsonConvert.SerializeObject(robotRequest);

            byte[] buffer = Encoding.UTF8.GetBytes(str);
            request.ContentLength = buffer.Length;

            if (session.IsInternal)
            {
                request.Proxy = new WebProxy("http://sg.pachost.mid.dom")
                {
                    UseDefaultCredentials = true
                };
            }

            request.GetRequestStream().Write(buffer, 0, buffer.Length);
            var    response = (HttpWebResponse)request.GetResponse();
            var    reader   = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string result   = reader.ReadToEnd();

            return(ToAskResult(result));
        }
示例#2
0
        private BaiduSession LoginBaidu(bool isInternal)
        {
            var service = new AuthorizationService();
            var session = BaiduSession.CreateDefault(isInternal);

            service.GetAccessToken(session);
            return(session);
        }
示例#3
0
 public ChatbotController(BaiduSession session, ChatService chatService, RobotService robotService, CrmService crmService, ChatLogCache sessionCache)
 {
     _baiduSession = session;
     _chatService  = chatService;
     _robotService = robotService;
     _sessionCache = sessionCache;
     _crmService   = crmService;
 }
示例#4
0
        public void _01_ShouldGetAccessToken()
        {
            var service = new AuthorizationService();
            var session = BaiduSession.CreateDefault();

            service.GetAccessToken(session);

            Assert.IsFalse(string.IsNullOrEmpty(session.AccessToken));
        }
示例#5
0
        private HttpClient GetClient(BaiduSession session)
        {
            if (!session.IsInternal)
            {
                return(new HttpClient());
            }

            return(new HttpClient(new HttpClientHandler()
            {
                Proxy = new WebProxy("http://sg.pachost.mid.dom")
                {
                    UseDefaultCredentials = true
                }
            }));
        }
示例#6
0
        public static void RegisterComponents(BaiduSession baiduSession, bool isInternal)
        {
            var container = new UnityContainer();

            var chatSessions = new ChatLogCache();
            var crmSession   = CrmSession.CreateDefault(isInternal);

            container.RegisterInstance(crmSession);
            container.RegisterInstance(baiduSession, InstanceLifetime.Singleton);
            container.RegisterInstance(chatSessions, InstanceLifetime.Singleton);
            container.RegisterType <ChatService>();
            container.RegisterType <RobotService>();
            container.RegisterType <TokenService>();
            container.RegisterType <ChatLogService>();
            container.RegisterType <LeadService>();
            container.RegisterType <CrmService>();

            GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
        }
示例#7
0
        public void GetAccessToken(BaiduSession session)
        {
            var client = GetClient(session);

            String authHost = "https://aip.baidubce.com/oauth/2.0/token";
            List <KeyValuePair <String, String> > paraList = new List <KeyValuePair <string, string> >();

            paraList.Add(new KeyValuePair <string, string>("grant_type", "client_credentials"));
            paraList.Add(new KeyValuePair <string, string>("client_id", session.ClientId));
            paraList.Add(new KeyValuePair <string, string>("client_secret", session.ClientSecret));

            var response = client.PostAsync(authHost, new FormUrlEncodedContent(paraList)).Result;
            var result   = response.Content.ReadAsStringAsync().Result;

            try
            {
                response.EnsureSuccessStatusCode();
                JsonConvert.PopulateObject(result, session);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + ":" + result);
            }
        }