2016-09-05 07:34:37 -07:00
package slack
2016-11-05 16:07:24 -07:00
import "encoding/json"
2016-09-05 07:34:37 -07:00
// AttachmentField contains information for an attachment field
// An Attachment can contain multiple of these
type AttachmentField struct {
Title string ` json:"title" `
Value string ` json:"value" `
Short bool ` json:"short" `
}
2017-07-16 05:29:46 -07:00
// AttachmentAction is a button or menu to be included in the attachment. Required when
// using message buttons or menus and otherwise not useful. A maximum of 5 actions may be
2016-09-05 07:34:37 -07:00
// provided per attachment.
type AttachmentAction struct {
2017-07-16 05:29:46 -07:00
Name string ` json:"name" ` // Required.
Text string ` json:"text" ` // Required.
Style string ` json:"style,omitempty" ` // Optional. Allowed values: "default", "primary", "danger".
2019-09-07 13:46:58 -07:00
Type actionType ` json:"type" ` // Required. Must be set to "button" or "select".
2017-07-16 05:29:46 -07:00
Value string ` json:"value,omitempty" ` // Optional.
DataSource string ` json:"data_source,omitempty" ` // Optional.
MinQueryLength int ` json:"min_query_length,omitempty" ` // Optional. Default value is 1.
Options [ ] AttachmentActionOption ` json:"options,omitempty" ` // Optional. Maximum of 100 options can be provided in each menu.
SelectedOptions [ ] AttachmentActionOption ` json:"selected_options,omitempty" ` // Optional. The first element of this array will be set as the pre-selected option for this menu.
OptionGroups [ ] AttachmentActionOptionGroup ` json:"option_groups,omitempty" ` // Optional.
Confirm * ConfirmationField ` json:"confirm,omitempty" ` // Optional.
2018-01-08 13:41:38 -08:00
URL string ` json:"url,omitempty" ` // Optional.
2017-07-16 05:29:46 -07:00
}
2019-09-07 13:46:58 -07:00
// actionType returns the type of the action
func ( a AttachmentAction ) actionType ( ) actionType {
return a . Type
}
2017-07-16 05:29:46 -07:00
// AttachmentActionOption the individual option to appear in action menu.
type AttachmentActionOption struct {
Text string ` json:"text" ` // Required.
Value string ` json:"value" ` // Required.
Description string ` json:"description,omitempty" ` // Optional. Up to 30 characters.
}
// AttachmentActionOptionGroup is a semi-hierarchal way to list available options to appear in action menu.
type AttachmentActionOptionGroup struct {
Text string ` json:"text" ` // Required.
Options [ ] AttachmentActionOption ` json:"options" ` // Required.
2016-09-05 07:34:37 -07:00
}
// AttachmentActionCallback is sent from Slack when a user clicks a button in an interactive message (aka AttachmentAction)
2018-12-01 10:55:35 -08:00
// DEPRECATED: use InteractionCallback
type AttachmentActionCallback InteractionCallback
2016-09-05 07:34:37 -07:00
// ConfirmationField are used to ask users to confirm actions
type ConfirmationField struct {
Title string ` json:"title,omitempty" ` // Optional.
Text string ` json:"text" ` // Required.
OkText string ` json:"ok_text,omitempty" ` // Optional. Defaults to "Okay"
DismissText string ` json:"dismiss_text,omitempty" ` // Optional. Defaults to "Cancel"
}
// Attachment contains all the information for an attachment
type Attachment struct {
Color string ` json:"color,omitempty" `
2020-03-01 11:59:19 -08:00
Fallback string ` json:"fallback,omitempty" `
2016-09-05 07:34:37 -07:00
CallbackID string ` json:"callback_id,omitempty" `
2018-08-09 15:38:19 -07:00
ID int ` json:"id,omitempty" `
2016-09-05 07:34:37 -07:00
2018-08-09 15:38:19 -07:00
AuthorID string ` json:"author_id,omitempty" `
2016-09-05 07:34:37 -07:00
AuthorName string ` json:"author_name,omitempty" `
AuthorSubname string ` json:"author_subname,omitempty" `
AuthorLink string ` json:"author_link,omitempty" `
AuthorIcon string ` json:"author_icon,omitempty" `
Title string ` json:"title,omitempty" `
TitleLink string ` json:"title_link,omitempty" `
Pretext string ` json:"pretext,omitempty" `
2020-09-04 14:29:13 -07:00
Text string ` json:"text" ` // Required
2016-09-05 07:34:37 -07:00
ImageURL string ` json:"image_url,omitempty" `
ThumbURL string ` json:"thumb_url,omitempty" `
Fields [ ] AttachmentField ` json:"fields,omitempty" `
Actions [ ] AttachmentAction ` json:"actions,omitempty" `
MarkdownIn [ ] string ` json:"mrkdwn_in,omitempty" `
2020-03-01 11:59:19 -08:00
Blocks Blocks ` json:"blocks,omitempty" `
2019-12-07 13:54:36 -08:00
2016-09-05 07:34:37 -07:00
Footer string ` json:"footer,omitempty" `
FooterIcon string ` json:"footer_icon,omitempty" `
2016-11-05 16:07:24 -07:00
Ts json . Number ` json:"ts,omitempty" `
2016-09-05 07:34:37 -07:00
}