Ejemplo n.º 1
0
        public IActionResult Webhook([FromBody] object request)
        {
            Response output = new Response();

            try
            {
                string json = JsonConvert.SerializeObject(request);

                DialogFlowResponse model = JsonConvert.DeserializeObject <DialogFlowResponse>(json);

                output.Message = json;
                output.Status  = true;
                output.Type    = Enums.ResponseType.success;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);

                output.Message = ex.Message;
                output.Trace   = ex.StackTrace;
                output.Data    = ex.InnerException;
            }

            return(Json(output));
        }
Ejemplo n.º 2
0
        public DialogFlowResponse ActivityToResponse(Activity activity, DialogFlowRequest dialogFlowRequest)
        {
            var response = new DialogFlowResponse()
            {
                Payload = new ResponsePayload()
                {
                    Google = new PayloadContent()
                    {
                        ExpectUserResponse = !Options.ShouldEndSessionByDefault,
                        UserStorage        = dialogFlowRequest.OriginalDetectIntentRequest.Payload.User.UserStorage
                    }
                }
            };

            // Send default empty response if no activity or invalid activity type sent
            if (activity == null || activity.Type != ActivityTypes.Message)
            {
                response.Payload.Google.ExpectUserResponse = false;
                return(response);
            }

            activity.ConvertAttachmentContent();

            var simpleResponse = new SimpleResponse
            {
                Content = new SimpleResponseContent
                {
                    DisplayText  = activity.Text,
                    Ssml         = activity.Speak,
                    TextToSpeech = activity.Text
                }
            };

            var processedIntentStatus = ProcessHelperIntentAttachments(activity);

            // If we have a system intent to send - send it - with or without additional simple prompt
            if (processedIntentStatus.Intent != null)
            {
                response.Payload.Google.ExpectUserResponse = true;
                response.Payload.Google.SystemIntent       = GetDialogFlowSystemIntentFromSystemIntent(processedIntentStatus);

                if (processedIntentStatus.AllowAdditionalInputPrompt)
                {
                    response.Payload.Google.RichResponse = new RichResponse()
                    {
                        Items = new ResponseItem[] { simpleResponse }
                    };
                }

                return(response);
            }

            var responseItems = new List <ResponseItem> {
                simpleResponse
            };

            responseItems.AddRange(GetResponseItemsFromActivityAttachments(activity));

            response.Payload.Google.RichResponse = new RichResponse()
            {
                Items = responseItems.ToArray()
            };

            // ensure InputHint is set as required for response
            if (activity.InputHint == null || activity.InputHint == InputHints.AcceptingInput)
            {
                activity.InputHint =
                    Options.ShouldEndSessionByDefault ? InputHints.IgnoringInput : InputHints.ExpectingInput;
            }

            // check if we should be listening for more input from the user
            switch (activity.InputHint)
            {
            case InputHints.IgnoringInput:
                response.Payload.Google.ExpectUserResponse = false;
                break;

            case InputHints.ExpectingInput:
                response.Payload.Google.ExpectUserResponse = true;

                var suggestionChips = ConvertSuggestedActionsToSuggestionChips(activity);
                if (suggestionChips.Any())
                {
                    response.Payload.Google.RichResponse.Suggestions = suggestionChips.ToArray();
                }
                break;
            }

            return(response);
        }
Ejemplo n.º 3
0
        public V2Response GetDialogFlowResponse()
        {
            LuasTimesResponse luasTimesResponse = new LuasTimesResponse(OriginStation, Direction, DestinationStation);

            return(DialogFlowResponse.Tell(luasTimesResponse.Text, luasTimesResponse.Ssml));
        }
 public async Task <JsonResult> Post([FromBody] DialogFlowRequest request)
 {
     return(new JsonResult(DialogFlowResponse.GetFulfillmentTextResponse("The status is CLOSED!")));
 }