Beispiel #1
0
        public object Any(Ask request)
        {
            AskResponse response = new AskResponse();

            response.Result = ErrorCode.OK;

            Guid creatorId = UserSession.GetUserId();

            DateTime      dateTime      = DateTime.UtcNow;
            QuestionEntry questionEntry = new QuestionEntry(creatorId, Guid.NewGuid())
            {
                Title        = request.Title,
                Detail       = request.Detail,
                Creation     = dateTime,
                Modification = dateTime,
                Tags         = string.Join(",", request.Tags).ToLowerInvariant()
            };

            TableRepository tableRepository = new TableRepository();

            tableRepository.InsertOrReplace(questionEntry, Tables.Questions);

            IndexHelper.CreateIndex(questionEntry.GetId(), request.Title + " " + questionEntry.Tags, Tables.Questions);

            return(response);
        }
 public void Invoke(HttpSessionState session, DataInputStream input)
 {
     _result = HttpProcessor.GetClient<AskServiceSoapClient>(session).GetResponse(
        input.ReadString(),
        input.ReadString(),
        input.ReadInt32());
 }
Beispiel #3
0
        public override Task <AskResponse> Ask(AskRequest request, ServerCallContext context)
        {
            var model = new AskResponse()
            {
                Content = $"Ask: {request.Key}: {DateTime.Now.ToString()} --- address: {string.Join(",", Dns.GetHostEntry(Dns.GetHostName()).AddressList.Select(oo => oo.ToString()))}"
            };

            return(Task.FromResult(model));
        }
Beispiel #4
0
        public override Task <Grpc.AskResponse> Ask(Grpc.AskRequest request, ServerCallContext context)
        {
            var v = _configuration.GetSection("GrpcServer").GetSection("Service").GetValue <int>("Port");

            var model = new AskResponse()
            {
                Content = $"Ask: {request.Key}: {DateTime.Now.ToString()} -- configuration: {v} --- address: {string.Join(",", Dns.GetHostEntry(Dns.GetHostName()).AddressList.Select(oo => oo.ToString()))}"
            };

            return(Task.FromResult(model));
        }
Beispiel #5
0
 public static void WriteGetResponseResult(this DataOutputStream output, AskResponse value)
 {
     if (value == null)
     {
         throw new ArgumentNullException("value");
     }
     output.WriteInt32(value.AskQuestionID);
     output.WriteString(value.Question);
     output.WriteByteArray(Convert.FromBase64String(value.PhotoBase64Binary));
     output.WriteInt32Array(value.ResponseValues);
     output.WriteFloat(Convert.ToSingle(value.Average));
     output.WriteInt32(value.ResponseType);
     output.WriteStringArray(value.CustomResponses);
 }
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            AskResponse = await _context.AskResponse.FirstOrDefaultAsync(m => m.ID == id);

            if (AskResponse == null)
            {
                return(NotFound());
            }
            return(Page());
        }
Beispiel #7
0
 /// <summary>
 /// Reads existing events and future events from pulsar broker
 /// </summary>
 /// <param name="timeoutMs"></param>
 /// <returns>IEnumerable<EventMessage></returns>
 public async IAsyncEnumerable <T> Events(TimeSpan timeout, [EnumeratorCancellation] CancellationToken token = default)
 {
     while (!token.IsCancellationRequested)
     {
         AskResponse response = null;
         try
         {
             response = await _eventSource.Ask <AskResponse>(EventSource.Messages.Receive.Instance, timeout);
         }
         catch { }
         if (response != null && response.Data != null)
         {
             yield return(response.ConvertTo <IMessage <T> >().Value);
         }
     }
 }
Beispiel #8
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            AskResponse = await _context.AskResponse.FindAsync(id);

            if (AskResponse != null)
            {
                _context.AskResponse.Remove(AskResponse);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./ChangeResponses"));
        }
Beispiel #9
0
        public AskResponse GetResponse(String nickname, String password, Int32 questionID)
        {
            if (String.IsNullOrEmpty(nickname))
            {
                throw new ArgumentNullException("nickname");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentNullException("password");
            }

            var member   = Member.GetMemberViaNicknamePassword(nickname, password);
            var question = AskAFriend.GetAskAFriendByAskAFriendIDWithJoin(questionID);

            var response = new AskResponse()
            {
                AskQuestionID     = question.AskAFriendID,
                Question          = Text2Mobile.Filter(question.Question),
                PhotoBase64Binary = ResourceProcessor.GetThumbnailBase64String(question.DefaultPhotoResourceFile.SavePath),
                ResponseValues    = AskAFriend.GetAskAFriendResult(question).ToArray(),
                ResponseType      = question.ResponseType,
                Average           = 0,
                CustomResponses   = new String[2]
            };

            /* Set the average value (only applicable if the ResponseType is Rate1To10). */

            for (var i = 0; i < response.ResponseValues.Length; i++)
            {
                response.Average += response.ResponseValues[i];
            }

            response.Average = response.Average / Convert.ToDouble(response.ResponseValues.Length);

            /* Custom responses will be blank strings if not applicable. */

            response.CustomResponses[0] = Text2Mobile.Filter(question.ResponseA);
            response.CustomResponses[1] = Text2Mobile.Filter(question.ResponseB);

            return(response);
        }
Beispiel #10
0
        public object Any(Ask request)
        {
            AskResponse response = new AskResponse();
            response.Result = ErrorCode.OK;

            Guid creatorId = UserSession.GetUserId();

            DateTime dateTime = DateTime.UtcNow;
            QuestionEntry questionEntry = new QuestionEntry(creatorId, Guid.NewGuid())
            {
                Title = request.Title,
                Detail = request.Detail,
                Creation = dateTime,
                Modification = dateTime,
                Tags = string.Join(",", request.Tags).ToLowerInvariant()
            };

            TableRepository tableRepository = new TableRepository();
            tableRepository.InsertOrReplace(questionEntry, Tables.Questions);

            IndexHelper.CreateIndex(questionEntry.GetId(), request.Title + " " + questionEntry.Tags, Tables.Questions);

            return response;
        }
Beispiel #11
0
        public override async Task <AskResponse> Ask(AskRequest request, ServerCallContext context)
        {
            Console.WriteLine($"{request.Id}:{request.Message}");

            var result = await _luis.Predict(request.Message);



            var intent = result.Intents.First();

            var response = new AskResponse();

            response.Id      = request.Id;
            response.Message = request.Message;

            Console.WriteLine($"   [Intent] {intent.Name} ({intent.Score:N2})");
            switch (intent.Name)
            {
            case "Bonjour":
                response.Answers.Add($"Bonjour à vous !");
                break;

            case "Reservite.Reserver":
                response.Answers.Add($"Vous souhaitez réserver une salle.");
                string        salle  = null;
                string        jour   = null;
                List <string> heures = new List <string>();
                foreach (var e in result.Entities)
                {
                    switch (e.Key)
                    {
                    case "salle":
                        salle = e.Value.First().Value;
                        Console.WriteLine($"   [Entity] {e.Key} : {salle}");
                        response.Answers.Add($"   {e.Key} : {salle}");
                        break;

                    case "heure":
                        foreach (var v in e.Value)
                        {
                            heures.Add(v.Value);
                            Console.WriteLine($"   [Entity] {e.Key} : {v.Value}");
                            response.Answers.Add($"   {e.Key} : {v.Value}");
                        }
                        break;

                    case "date":
                        jour = e.Value.First().Value;
                        Console.WriteLine($"   [Entity] {e.Key} : {jour}");
                        response.Answers.Add($"   {e.Key} : {jour}");
                        break;
                    }
                }
                var reservationBuilder = ReservationSalle.Parse(salle, jour, heures);
                foreach (var missing in reservationBuilder.MissingInformations)
                {
                    response.Answers.Add(missing.Question);
                }
                break;

            case "Reservite.InfosSalle":
                response.Answers.Add($"Vous souhaitez obtenir des informations sur une salle.");
                break;

            case "Reservite.SallesDisponibles":
                response.Answers.Add($"Vous souhaitez savoir quelles salles sont disponibles.");
                break;

            case "Quitter":
                break;

            case "Annuler":
                response.Answers.Add($"Vous souhaitez annuler l'opération en cours.");
                break;

            case "None":
                response.Answers.Add($"Je n'ai pas compris votre question.");
                break;

            default:
                response.Answers.Add($"Veuillez répéter svp.");
                break;
            }

            return(response);
        }
Beispiel #12
0
 public static void WriteGetResponseResult(this DataOutputStream output, AskResponse value)
 {
     if (value == null)
         throw new ArgumentNullException("value");
     output.WriteInt32(value.AskQuestionID);
     output.WriteString(value.Question);
     output.WriteByteArray(Convert.FromBase64String(value.PhotoBase64Binary));
     output.WriteInt32Array(value.ResponseValues);
     output.WriteFloat(Convert.ToSingle(value.Average));
     output.WriteInt32(value.ResponseType);
     output.WriteStringArray(value.CustomResponses);
 }
Beispiel #13
0
        /// <summary>
        /// Consume messages from queue. ConsumptionType has to be set to Queue.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="topic"></param>
        /// <param name="autoAck"></param>
        /// <param name="takeCount"></param>
        /// <param name="customProcess"></param>
        /// <returns></returns>
        public async IAsyncEnumerable <T> ReceiveFunc(bool autoAck = true, int takeCount = -1, int receiveTimeout = 3000, Func <IMessage <T>, T> customHander = null, [EnumeratorCancellation] CancellationToken token = default)
        {
            //no end
            if (takeCount == -1)
            {
                while (true)
                {
                    AskResponse response = null;
                    try
                    {
                        response = await _consumerActor.Ask <AskResponse>(Messages.Consumer.Receive.Instance, TimeSpan.FromMilliseconds(receiveTimeout)).ConfigureAwait(false);
                    }
                    catch (AskTimeoutException)
                    { }
                    catch
                    {
                        throw;
                    }
                    if (response != null && response.Data is IMessage <T> message)
                    {
                        yield return(ProcessMessage(message, autoAck, customHander));
                    }
                }
            }
            else if (takeCount > 0)//end at takeCount
            {
                for (var i = 0; i < takeCount; i++)
                {
                    AskResponse response = null;
                    try
                    {
                        response = await _consumerActor.Ask <AskResponse>(Messages.Consumer.Receive.Instance, TimeSpan.FromMilliseconds(receiveTimeout)).ConfigureAwait(false);
                    }
                    catch (AskTimeoutException)
                    { }
                    catch
                    {
                        throw;
                    }

                    if (response != null && response.Data is IMessage <T> message)
                    {
                        yield return(ProcessMessage(message, autoAck, customHander));
                    }
                    else
                    {
                        //we need to go back since no message was received within the timeout
                        i--;
                        await Task.Delay(TimeSpan.FromMilliseconds(receiveTimeout));
                    }
                }
            }
            else
            {
                //drain the current messages
                while (true)
                {
                    AskResponse response = null;
                    try
                    {
                        response = await _consumerActor.Ask <AskResponse>(Messages.Consumer.Receive.Instance, TimeSpan.FromMilliseconds(receiveTimeout)).ConfigureAwait(false);
                    }
                    catch (AskTimeoutException)
                    {
                    }
                    catch
                    {
                        throw;
                    }

                    if (response != null && response.Data is IMessage <T> message)
                    {
                        yield return(ProcessMessage(message, autoAck, customHander));
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }