1
0
mirror of synced 2024-11-25 22:36:03 +03:00
messenger/receiving.go

128 lines
3.5 KiB
Go
Raw Normal View History

2016-04-13 09:14:23 +03:00
package messenger
import "time"
2016-04-14 03:07:23 +03:00
// Receive is the format in which webhook events are sent.
2016-04-13 09:14:23 +03:00
type Receive struct {
2016-04-14 03:07:23 +03:00
// Object should always be `page`. (I don't quite understand why)
Object string `json:"object"`
// Entry is all of the different messenger types which were
// sent in this event.
Entry []Entry `json:"entry"`
2016-04-13 09:14:23 +03:00
}
2016-04-14 03:07:23 +03:00
// Entry is a batch of events which were sent in this webhook trigger.
2016-04-13 09:14:23 +03:00
type Entry struct {
2016-04-14 03:07:23 +03:00
// ID is the ID of the batch.
ID int64 `json:"id,string"`
2016-04-14 03:07:23 +03:00
// Time is when the batch was sent.
Time int64 `json:"time"`
// Messaging is the events that were sent in this Entry
2016-04-13 09:14:23 +03:00
Messaging []MessageInfo `json:"messaging"`
}
2016-04-14 03:07:23 +03:00
// MessageInfo is an event that is fired by the webhook.
2016-04-13 09:14:23 +03:00
type MessageInfo struct {
2016-04-14 03:07:23 +03:00
// Sender is who the event was sent from.
Sender Sender `json:"sender"`
// Recipient is who the event was sent to.
2016-04-13 12:36:38 +03:00
Recipient Recipient `json:"recipient"`
2016-04-14 03:07:23 +03:00
// Timestamp is the true time the event was triggered.
Timestamp int64 `json:"timestamp"`
// Message is the contents of a message if it is a MessageAction.
// Nil if it is not a MessageAction.
Message *Message `json:"message"`
// Delivery is the contents of a message if it is a DeliveryAction.
// Nil if it is not a DeliveryAction.
Delivery *Delivery `json:"delivery"`
2016-05-04 11:09:34 +03:00
PostBack *PostBack `json:"postback"`
Read *Read `json:"read"`
OptIn *OptIn `json:"optin"`
ReferralMessage *ReferralMessage `json:"referral"`
2018-03-10 12:12:35 +03:00
AccountLinking *AccountLinking `json:"account_linking"`
}
type OptIn struct {
// Sender is the sender of the message
Sender Sender `json:"-"`
// Recipient is who the message was sent to.
Recipient Recipient `json:"-"`
// Time is when the message was sent.
Time time.Time `json:"-"`
// Ref is the reference as given
Ref string `json:"ref"`
2016-04-13 09:14:23 +03:00
}
// ReferralMessage represents referral endpoint
type ReferralMessage struct {
*Referral
// Sender is the sender of the message
Sender Sender `json:"-"`
// Recipient is who the message was sent to.
Recipient Recipient `json:"-"`
// Time is when the message was sent.
Time time.Time `json:"-"`
}
// Referral represents referral info
type Referral struct {
// Data originally passed in the ref param
Ref string `json:"ref"`
// Source type
Source string `json:"source"`
// The identifier dor the referral
Type string `json:"type"`
}
2016-04-14 03:07:23 +03:00
// Sender is who the message was sent from.
2016-04-13 09:14:23 +03:00
type Sender struct {
ID int64 `json:"id,string"`
2016-04-13 09:14:23 +03:00
}
2016-04-14 03:07:23 +03:00
// Recipient is who the message was sent to.
2016-04-13 09:14:23 +03:00
type Recipient struct {
ID int64 `json:"id,string"`
2016-04-13 09:14:23 +03:00
}
2016-04-14 03:07:23 +03:00
// Attachment is a file which used in a message.
type Attachment struct {
2019-02-22 19:16:14 +03:00
Title string `json:"title,omitempty"`
URL string `json:"url,omitempty"`
2018-11-09 18:40:45 +03:00
// Type is what type the message is. (image, video, audio or location)
2016-04-14 03:07:23 +03:00
Type string `json:"type"`
// Payload is the information for the file which was sent in the attachment.
Payload Payload `json:"payload"`
}
// QuickReply is a file which used in a message.
type QuickReply struct {
// ContentType is the type of reply
ContentType string `json:"content_type,omitempty"`
// Title is the reply title
Title string `json:"title,omitempty"`
// Payload is the reply information
Payload string `json:"payload"`
}
2016-04-14 03:07:23 +03:00
// Payload is the information on where an attachment is.
type Payload struct {
2019-02-22 19:16:14 +03:00
URL string `json:"url,omitempty"`
Title string `json:"title,omitempty"`
2018-11-09 18:40:45 +03:00
// Coordinates is Lat/Long pair of location pin
Coordinates *Coordinates `json:"coordinates,omitempty"`
}
// Coordinates is a pair of latitude and longitude
type Coordinates struct {
// Lat is latitude
2019-02-22 19:16:14 +03:00
Lat float64 `json:"lat"`
2018-11-09 18:40:45 +03:00
// Long is longitude
Long float64 `json:"long"`
}