public async Task <ActionResult> CreateMessage([FromBody] MessageRequestDTO requestDTO) { var senderUsername = User.GetUsername(); if (senderUsername == requestDTO.RecipientUsername) { return(BadRequest("You can't message yourself")); } var sender = await _userRepository.GetUserByUsernameAsync(senderUsername); var recipient = await _userRepository.GetUserByUsernameAsync(requestDTO.RecipientUsername); if (recipient == null) { return(NotFound("Recipient not found")); } var message = new Message { Content = requestDTO.Content, Sender = sender, SenderUsername = sender.UserName, Recipient = recipient, RecipientUsername = recipient.UserName, }; _messageRepository.AddMessage(message); if (await _messageRepository.SaveAllAsync()) { return(Ok(new MessageDTO { Id = message.Id, Content = requestDTO.Content, SenderId = sender.Id, SenderUsername = sender.UserName, SenderPhotoUrl = sender.Photos.FirstOrDefault(x => x.IsMain).Url, RecipientId = recipient.Id, RecipientUsername = recipient.UserName, RecipientPhotoUrl = recipient.Photos.FirstOrDefault(x => x.IsMain).Url, DateSent = message.DateSent })); } return(BadRequest("Unable to send message to user")); }
public static async Task <IActionResult> PostDataFunc( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "data")] MessageRequestDTO req, [EventGrid(TopicEndpointUri = "EventGridEndPoint", TopicKeySetting = "EventGridEndKey")] IAsyncCollector <EventGridEvent> outputEvents, ILogger log) { try { //var myEvent = new EventGridEvent("message-id-", "subject-name", "event-data", "event-type", DateTime.UtcNow, "1.0"); var myEvent = new EventGridEvent(req.Id, "raw messaging", req.MessageRequest, "raweventmessaging", DateTime.UtcNow, "1.0"); await outputEvents.AddAsync(myEvent); return(new OkObjectResult(myEvent)); } catch { return(new BadRequestObjectResult("I dont know what happen")); } }
public async Task <IReplyIntent> GetProvidersAsync(MessageRequestDTO request) { // Rule Base Intents var providers = new Dictionary <string, IReplyIntent>(); providers.Add("default", new EchoProvider(request)); // Message Types providers.Add("/text", new TextMessageProvider(request)); providers.Add("/sticker", new StickerMessageProvider(request)); providers.Add("/image", new ImageMessageProvider(request)); providers.Add("/video", new VideoMessageProvider(request)); providers.Add("/audio", new AudioMessageProviders(request)); providers.Add("/location", new LocationMessageProvider(request)); providers.Add("/image-map", new ImageMapMessageProvider(request)); providers.Add("/image-map-with-video", new ImageMapWithVideoMessageProvider(request)); providers.Add("/template-buttons", new TemplateButtonMessageProvider(request)); providers.Add("/template-confirm", new TemplateConfirmMessageProvider(request)); providers.Add("/template-carousel", new TemplateCarouselMessageProvider(request)); providers.Add("/template-carousel-images", new TemplateCarouselImageMessageProvider(request)); // 你可以在任何Message Types 回傳 Quick Reply providers.Add("/quick-reply", new TextMessageQuickReplyProvider(request)); // 改變發送者顯示名稱與大頭貼 providers.Add("/sender", new TextMessageSenderProvider(request)); // Flex Message providers.Add("/flex", new FlexMessageProvider(request)); // Actions providers.Add("/action", new ActionProvider(request)); // Rich Menu providers.Add("/richmenu", new RichMenuSwitchProviders(_lineMessageUtility, request, _setting.Value.DefaultRichMenuId)); providers.Add("/richmenu-cancel", new RichMenuCancelProviders(_lineMessageUtility, request)); await Task.CompletedTask; return(providers.ContainsKey(request.Intent.ToLower()) ? providers[request.Intent.ToLower()] : providers["default"]); }
protected override async Task OnMessageAsync(LineEvent ev) { // Get Line User Profile var lineUser = await _lineMessageUtility.GetUserProfile(ev.source.userId); var request = new MessageRequestDTO() { Intent = ev.message.Text, Message = ev.message.Text, UserId = ev.source.userId, DisplayName = lineUser.displayName, IsFromGroup = ev.source.type == "group", PostbackParams = ev.postback?.@params }; if (ev.message.Type == NetCoreLineBotSDK.Enums.LineMessageType.Text) { var providers = await _factory.GetProvidersAsync(request); var replyMessages = await providers.GetReplyMessagesAsync(); await _lineMessageUtility.ReplyMessageAsync(ev.replyToken, replyMessages); } }
public ActionProvider(MessageRequestDTO request) { _request = request; }
public ImageMessageProvider(MessageRequestDTO request) { _request = request; }
public TemplateCarouselImageMessageProvider(MessageRequestDTO request) { _request = request; }
public TextMessageProvider(MessageRequestDTO request) { _request = request; }
public StickerMessageProvider(MessageRequestDTO request) { _request = request; }
public RichMenuCancelProviders(ILineMessageUtility lineMessageUtility, MessageRequestDTO request) { _lineMessageUtility = lineMessageUtility; _request = request; }
public LocationMessageProvider(MessageRequestDTO request) { _request = request; }
public ImageMapWithVideoMessageProvider(MessageRequestDTO request) { _request = request; }
public TemplateButtonMessageProvider(MessageRequestDTO request) { _request = request; }
public TextMessageQuickReplyProvider(MessageRequestDTO request) { _request = request; }
public AudioMessageProviders(MessageRequestDTO request) { _request = request; }
public EchoProvider(MessageRequestDTO request) { _request = request; }
public TemplateConfirmMessageProvider(MessageRequestDTO request) { _request = request; }
public VideoMessageProvider(MessageRequestDTO request) { _request = request; }
public RichMenuSwitchProviders(ILineMessageUtility lineMessageUtility, MessageRequestDTO request, string defaultRichMenuId) { _lineMessageUtility = lineMessageUtility; _request = request; _defaultRichMenuId = defaultRichMenuId; }
public FlexMessageProvider(MessageRequestDTO request) { _request = request; }