diff --git a/groupchannels.go b/groupchannels.go index 17d613f..19be2e5 100644 --- a/groupchannels.go +++ b/groupchannels.go @@ -376,3 +376,31 @@ func (c *Client) LeaveFromAGroupChannel(channelURL string, r *LeaveFromAGroupCha type LeaveFromAGroupChannelRequest struct { UserIDs []string `json:"user_ids"` } + +func (c *Client) SendMessageToGroupChannel( + channelURL string, + r *SendMessageToGroupChannelRequest, +) (sendbirdErrorResponse, error) { + pathString, err := templates.GetGroupChannelTemplate( + groupChannelsTemplateData{ChannelURL: url.PathEscape(channelURL)}, + templates.SendbirdURLGroupChannelsSendMessageWithChannelURL, + ) + if err != nil { + return sendbirdErrorResponse{}, err + } + + parsedURL := c.PrepareUrl(pathString) + + result := sendbirdErrorResponse{} + + if err := c.postAndReturnJSON(parsedURL, r, &result); err != nil { + return sendbirdErrorResponse{}, err + } + return result, nil +} + +type SendMessageToGroupChannelRequest struct { + MessageType string `json:"message_type"` + UserID string `json:"user_id"` + Message string `json:"message"` +} diff --git a/templates/templates.go b/templates/templates.go index 700e480..249df2e 100644 --- a/templates/templates.go +++ b/templates/templates.go @@ -67,6 +67,7 @@ const ( {{define "invite"}}{{template "base" .}}/invite{{end}} {{define "hide"}}{{template "base" .}}/hide{{end}} {{define "leave"}}{{template "base" .}}/leave{{end}} + {{define "messages"}}{{template "base" .}}/messages{{end}} {{template "base"}} {{template "members"}} @@ -74,6 +75,7 @@ const ( {{template "invite"}} {{template "hide"}} {{template "leave"}} + {{template "messages"}} ` SendbirdURLChannelMetadataTemplate = ` @@ -144,6 +146,7 @@ const ( SendbirdURLGroupChannelsInviteWithChannelURL templateKeysGroupChannels = `invite` SendbirdURLGroupChannelsHideWithChannelURL templateKeysGroupChannels = `hide` SendbirdURLGroupChannelsLeaveWithChannelURL templateKeysGroupChannels = `leave` + SendbirdURLGroupChannelsSendMessageWithChannelURL templateKeysGroupChannels = `messages` //Channel Metadata SendbirdURLChannelMetadataWithChannelTypeAndChannelURL templateKeysChannelMetadata = `chMeta`