diff --git a/receiving.go b/receiving.go index 4bcac1f..316cbd8 100644 --- a/receiving.go +++ b/receiving.go @@ -92,6 +92,8 @@ type Recipient struct { // Attachment is a file which used in a message. type Attachment struct { + Title string `json:"title,omitempty"` + URL string `json:"url,omitempty"` // Type is what type the message is. (image, video, audio or location) Type string `json:"type"` // Payload is the information for the file which was sent in the attachment. @@ -111,7 +113,7 @@ type QuickReply struct { // Payload is the information on where an attachment is. type Payload struct { // URL is where the attachment resides on the internet. - URL string `json:"url,omitempty"` + URL string `json:"url,omitempty"` // Coordinates is Lat/Long pair of location pin Coordinates *Coordinates `json:"coordinates,omitempty"` } @@ -119,7 +121,7 @@ type Payload struct { // Coordinates is a pair of latitude and longitude type Coordinates struct { // Lat is latitude - Lat float64 `json:"lat"` + Lat float64 `json:"lat"` // Long is longitude Long float64 `json:"long"` } diff --git a/response.go b/response.go index 6c4bbb2..0d024fe 100644 --- a/response.go +++ b/response.go @@ -289,6 +289,32 @@ func (r *Response) GenericTemplate(elements *[]StructuredMessageElement, messagi return r.DispatchMessage(&m) } +// ListTemplate sends a list of elements +func (r *Response) ListTemplate(elements *[]StructuredMessageElement, messagingType MessagingType, tags ...string) error { + var tag string + if len(tags) > 0 { + tag = tags[0] + } + + m := SendStructuredMessage{ + MessagingType: messagingType, + Recipient: r.to, + Message: StructuredMessageData{ + Attachment: StructuredMessageAttachment{ + Type: "template", + Payload: StructuredMessagePayload{ + TopElementStyle: "compact", + TemplateType: "list", + Buttons: nil, + Elements: elements, + }, + }, + }, + Tag: tag, + } + return r.DispatchMessage(&m) +} + // SenderAction sends a info about sender action func (r *Response) SenderAction(action string) error { m := SendSenderAction{ @@ -386,7 +412,9 @@ type StructuredMessageData struct { // StructuredMessageAttachment is the attachment of a structured message. type StructuredMessageAttachment struct { // Type must be template - Type AttachmentType `json:"type"` + Title string `json:"title,omitempty"` + URL string `json:"url,omitempty"` + Type AttachmentType `json:"type"` // Payload is the information for the file which was sent in the attachment. Payload StructuredMessagePayload `json:"payload"` }