v1

package
v1.1.34 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 18, 2020 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ChannelFeatureNone channel can not implement feature
	ChannelFeatureNone string = "none"
	// ChannelFeatureReceive channel implement feature on receive
	ChannelFeatureReceive string = "receive"
	// ChannelFeatureSend channel implement feature on send
	ChannelFeatureSend string = "send"
	// ChannelFeatureBoth channel implement feature on both directions
	ChannelFeatureBoth string = "both"

	// MsgTypeText text message
	MsgTypeText string = "text"
	// MsgTypeSystem system message
	MsgTypeSystem string = "system"
	// MsgTypeCommand command (for bots)
	MsgTypeCommand string = "command"
	// MsgTypeOrder order card
	MsgTypeOrder string = "order"
	// MsgTypeProduct product card
	MsgTypeProduct string = "product"
	// MsgTypeFile file card
	MsgTypeFile string = "file"
	// MsgTypeImage image card
	MsgTypeImage string = "image"
	// MsgTypeAudio audio
	MsgTypeAudio string = "audio"

	// MsgOrderStatusCodeNew order status group new
	MsgOrderStatusCodeNew = "new"
	// MsgOrderStatusCodeApproval order status group approval
	MsgOrderStatusCodeApproval = "approval"
	// MsgOrderStatusCodeAssembling order status group assembling
	MsgOrderStatusCodeAssembling = "assembling"
	// MsgOrderStatusCodeDelivery order status group delivery
	MsgOrderStatusCodeDelivery = "delivery"
	// MsgOrderStatusCodeComplete order status group complete
	MsgOrderStatusCodeComplete = "complete"
	// MsgOrderStatusCodeCancel order status group cancel
	MsgOrderStatusCodeCancel = "cancel"

	FileSizeLimit = 20 * 1024 * 1024
)

noinspection ALL

Variables

View Source
var ErrInvalidOriginator = errors.New("invalid originator")

Functions

func MakeTimestamp added in v1.1.1

func MakeTimestamp() int64

MakeTimestamp returns current unix timestamp

Types

type ActivateResponse

type ActivateResponse struct {
	ChannelID   uint64    `json:"id"`
	ExternalID  string    `json:"external_id"`
	ActivatedAt time.Time `json:"activated_at"`
}

ActivateResponse channel activation response

type Channel

type Channel struct {
	ID         uint64          `json:"id,omitempty"`
	ExternalID string          `json:"external_id,omitempty"`
	Type       string          `json:"type,omitempty"`
	Name       string          `json:"name,omitempty"`
	AvatarUrl  string          `json:"avatar_url,omitempty"`
	Settings   ChannelSettings `json:"settings,omitempty,brackets"`
}

Channel type

type ChannelListItem added in v1.1.12

type ChannelListItem struct {
	ID            uint64          `json:"id"`
	ExternalID    string          `json:"external_id"`
	Type          string          `json:"type"`
	Name          *string         `json:"name"`
	Settings      ChannelSettings `json:"settings"`
	CreatedAt     string          `json:"created_at"`
	UpdatedAt     *string         `json:"updated_at"`
	ActivatedAt   string          `json:"activated_at"`
	DeactivatedAt *string         `json:"deactivated_at"`
	IsActive      bool            `json:"is_active"`
}

ChannelListItem response struct

type ChannelSettings added in v1.1.1

type ChannelSettings struct {
	SpamAllowed bool                     `json:"spam_allowed"`
	Status      Status                   `json:"status"`
	Text        ChannelSettingsText      `json:"text"`
	Product     Product                  `json:"product"`
	Order       Order                    `json:"order"`
	File        ChannelSettingsFilesBase `json:"file"`
	Image       ChannelSettingsFilesBase `json:"image"`
}

ChannelSettings struct

type ChannelSettingsFilesBase added in v1.1.15

type ChannelSettingsFilesBase struct {
	Creating             string `json:"creating,omitempty"`
	Editing              string `json:"editing,omitempty"`
	Quoting              string `json:"quoting,omitempty"`
	Deleting             string `json:"deleting,omitempty"`
	Max                  uint64 `json:"max_items_count,omitempty"`
	CommentAttribute     string `json:"comment_attribute,omitempty"`
	CommentMaxCharsCount int    `json:"comment_max_chars_count,omitempty"`
}

ChannelSettingsFilesBase struct

type ChannelSettingsText added in v1.1.2

type ChannelSettingsText struct {
	Creating      string `json:"creating,omitempty"`
	Editing       string `json:"editing,omitempty"`
	Quoting       string `json:"quoting,omitempty"`
	Deleting      string `json:"deleting,omitempty"`
	MaxCharsCount uint16 `json:"max_chars_count,omitempty"`
}

ChannelSettingsText struct

type Channels added in v1.1.12

type Channels struct {
	ID          int       `url:"id,omitempty" json:"id,omitempty"`
	Types       []string  `url:"types,omitempty" json:"types,omitempty"`
	Active      bool      `url:"active,omitempty" json:"active,omitempty"`
	Since       time.Time `url:"since,omitempty" json:"since,omitempty"`
	Until       time.Time `url:"until,omitempty" json:"until,omitempty"`
	TransportID uint64    `url:"transport_id,omitempty" json:"transport_id,omitempty"`
	Sort        string    `url:"sort,omitempty" json:"sort,omitempty"`
	Limit       int       `url:"limit,omitempty" json:"limit,omitempty"`
}

Channels request type

type Customer added in v1.1.28

type Customer struct {
	ExternalID string `json:"external_id"`
	Nickname   string `json:"nickname"`
	Firstname  string `json:"first_name,omitempty"`
	Lastname   string `json:"last_name,omitempty"`
	Avatar     string `json:"avatar,omitempty"`
	ProfileURL string `json:"profile_url,omitempty"`
	Country    string `json:"country,omitempty"`
	Language   string `json:"language,omitempty"`
	Phone      string `json:"phone,omitempty"`
	Email      string `json:"email,omitempty"`
}

Customer struct

type DeleteData added in v1.0.1

type DeleteData struct {
	Message Message `json:"message"`
	Channel uint64  `json:"channel"`
}

DeleteData struct

type DeleteResponse

type DeleteResponse struct {
	ChannelID     uint64    `json:"id"`
	DeactivatedAt time.Time `json:"deactivated_at"`
}

DeleteResponse channel deactivation response

type EditMessageRequest added in v1.1.13

type EditMessageRequest struct {
	Message EditMessageRequestMessage `json:"message"`
	Channel uint64                    `json:"channel"`
}

EditMessageRequest type

type EditMessageRequestMessage added in v1.1.13

type EditMessageRequestMessage struct {
	ExternalID string `json:"external_id"`
	Text       string `json:"text"`
	EditedAt   int64  `json:"edited_at"`
}

EditMessageRequestMessage type

type FileItem added in v1.1.15

type FileItem struct {
	ID      string `json:"id"`
	Size    int    `json:"size"`
	Caption string `json:"caption"`
	Height  *int   `json:"height,omitempty"`
	Width   *int   `json:"width,omitempty"`
}

FileItem struct

type FileMeta added in v1.1.15

type FileMeta struct {
	Width  *int `json:"width,omitempty"`
	Height *int `json:"height,omitempty"`
}

FileMeta file metadata

type FullFileResponse added in v1.1.15

type FullFileResponse struct {
	ID   string `json:"id,omitempty"`
	Type string `json:"type,omitempty"`
	Size int    `json:"size,omitempty"`
	Url  string `json:"url,omitempty"`
}

FullFileResponse uploaded file data

type Item added in v1.1.15

type Item struct {
	ID      string `json:"id"`
	Caption string `json:"caption"`
}

Item struct

type MarkMessageReadRequest added in v1.1.13

type MarkMessageReadRequest struct {
	Message   MarkMessageReadRequestMessage `json:"message"`
	ChannelID uint64                        `json:"channel_id"`
}

MarkMessageReadRequest type

type MarkMessageReadRequestMessage added in v1.1.13

type MarkMessageReadRequestMessage struct {
	ExternalID string `json:"external_id"`
}

MarkMessageReadRequestMessage type

type MarkMessageReadResponse added in v1.1.13

type MarkMessageReadResponse struct{}

MarkMessageReadResponse type

type Message

type Message struct {
	ExternalID string `json:"external_id"`
	Type       string `json:"type,omitempty"`
	Text       string `json:"text,omitempty"`
	Note       string `json:"note,omitempty"`
	Items      []Item `json:"items,omitempty"`
}

Message struct

type MessageDataBot added in v1.1.3

type MessageDataBot struct {
	Name   string `json:"name"`
	Avatar string `json:"avatar"`
}

MessageDataBot bot data from webhook

type MessageDataOrder added in v1.1.6

type MessageDataOrder struct {
	Number   string                    `json:"number"`
	Url      string                    `json:"url,omitempty"`
	Date     string                    `json:"date,omitempty"`
	Cost     *MessageDataOrderCost     `json:"cost,omitempty"`
	Discount *MessageDataOrderCost     `json:"discount,omitempty"`
	Status   *MessageDataOrderStatus   `json:"status,omitempty"`
	Delivery *MessageDataOrderDelivery `json:"delivery"`
	Payments []MessageDataOrderPayment `json:"payments"`
	Items    []MessageDataOrderItem    `json:"items,omitempty"`
}

MessageDataOrder order data from webhook

type MessageDataOrderCost added in v1.1.6

type MessageDataOrderCost struct {
	Value    float32 `json:"value,omitempty"`
	Currency string  `json:"currency"`
}

MessageDataOrderCost type

type MessageDataOrderDelivery added in v1.1.10

type MessageDataOrderDelivery struct {
	Name    string                `json:"name"`
	Price   *MessageDataOrderCost `json:"price"`
	Address string                `json:"address"`
	Comment string                `json:"comment,omitempty"`
}

MessageDataOrderDelivery type

type MessageDataOrderItem added in v1.1.6

type MessageDataOrderItem struct {
	Name     string                    `json:"name,omitempty"`
	Url      string                    `json:"url,omitempty"`
	Img      string                    `json:"img,omitempty"`
	Quantity *MessageDataOrderQuantity `json:"quantity,omitempty"`
	Price    *MessageDataOrderCost     `json:"price,omitempty"`
}

MessageDataOrderItem type

type MessageDataOrderPayment added in v1.1.10

type MessageDataOrderPayment struct {
	Name   string                         `json:"name"`
	Status *MessageDataOrderPaymentStatus `json:"status"`
	Amount *MessageDataOrderCost          `json:"amount"`
}

MessageDataOrderPayment type

type MessageDataOrderPaymentStatus added in v1.1.10

type MessageDataOrderPaymentStatus struct {
	Name  string `json:"name"`
	Payed bool   `json:"payed"`
}

MessageDataOrderPaymentStatus type

type MessageDataOrderQuantity added in v1.1.6

type MessageDataOrderQuantity struct {
	Value float32 `json:"value"`
	Unit  string  `json:"unit"`
}

MessageDataOrderQuantity type

type MessageDataOrderStatus added in v1.1.6

type MessageDataOrderStatus struct {
	Code string `json:"code,omitempty"`
	Name string `json:"name,omitempty"`
}

MessageDataOrderStatus type

type MessageDataProduct added in v1.1.6

type MessageDataProduct struct {
	ID       uint64                    `json:"id"`
	Name     string                    `json:"name"`
	Article  string                    `json:"article,omitempty"`
	Url      string                    `json:"url,omitempty"`
	Img      string                    `json:"img,omitempty"`
	Cost     *MessageDataOrderCost     `json:"cost,omitempty"`
	Quantity *MessageDataOrderQuantity `json:"quantity,omitempty"`
}

MessageDataProduct product data from webhook

type MessageDataUser added in v1.1.3

type MessageDataUser struct {
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`
	Avatar    string `json:"avatar"`
}

MessageDataUser user data from webhook

type MessagesResponse

type MessagesResponse struct {
	MessageID int       `json:"message_id,omitempty"`
	Time      time.Time `json:"time,omitempty"`
}

MessagesResponse message event response

type MgClient

type MgClient struct {
	URL   string `json:"url"`
	Token string `json:"token"`
	Debug bool   `json:"debug"`
	// contains filtered or unexported fields
}

MgClient type

func New

func New(url string, token string) *MgClient

New initialize client

func NewWithClient added in v1.1.33

func NewWithClient(url string, token string, client *http.Client) *MgClient

NewWithClient initializes client with provided http client

func (*MgClient) ActivateTransportChannel

func (c *MgClient) ActivateTransportChannel(request Channel) (ActivateResponse, int, error)

ActivateTransportChannel implement channel activation

Example:

var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")

request := ActivateRequest{
	Type: "telegram",
	Name: "@my_shopping_bot",
	Settings: ChannelSettings{
		SpamAllowed: false,
		Status: Status{
			Delivered: ChannelFeatureNone,
			Read: ChannelFeatureReceive,
		},
		Text: ChannelSettingsText{
			Creating: ChannelFeatureBoth,
			Editing:  ChannelFeatureBoth,
			Quoting:  ChannelFeatureReceive,
			Deleting: ChannelFeatureSend,
			MaxCharsCount: 2000,
		},
		Product: Product{
			Creating: ChannelFeatureSend,
			Deleting: ChannelFeatureSend,
		},
		Order: Order{
			Creating: ChannelFeatureBoth,
			Deleting: ChannelFeatureSend,
		},
	},
}

data, status, err := client.ActivateTransportChannel(request)

if err != nil {
	fmt.Printf("%v", err)
}

fmt.Printf("%s\n", data.CreatedAt)

func (*MgClient) DeactivateTransportChannel

func (c *MgClient) DeactivateTransportChannel(id uint64) (DeleteResponse, int, error)

DeactivateTransportChannel implement channel deactivation

Example:

var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")

data, status, err := client.DeactivateTransportChannel(3053450384)

if err != nil {
	fmt.Printf("%v", err)
}

fmt.Printf("%s\n", data.DeactivatedAt)

func (*MgClient) DeleteMessage

func (c *MgClient) DeleteMessage(request DeleteData) (MessagesResponse, int, error)

DeleteMessage implement delete message

Example:

var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")

msg := DeleteData{
	Message{
		ExternalID: "274628",
	},
	10,
}

data, status, err := client.DeleteMessage(msg)

if err != nil {
	fmt.Printf("%v", err)
}

fmt.Printf("%s\n", data.MessageID)

func (*MgClient) DeleteRequest

func (c *MgClient) DeleteRequest(url string, parameters []byte) ([]byte, int, error)

DeleteRequest implements DELETE Request

func (*MgClient) Error

func (c *MgClient) Error(info []byte) error

func (*MgClient) GetFile added in v1.1.15

func (c *MgClient) GetFile(request string) (FullFileResponse, int, error)

GetFile implement get file url

Example:

var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")

data, status, err := client.GetFile("file_ID")

if err != nil {
	fmt.Printf("%v", err)
}

fmt.Printf("%s\n", data.MessageID)

func (*MgClient) GetRequest

func (c *MgClient) GetRequest(url string, parameters []byte) ([]byte, int, error)

GetRequest implements GET Request

func (*MgClient) MarkMessageRead added in v1.1.13

func (c *MgClient) MarkMessageRead(request MarkMessageReadRequest) (MarkMessageReadResponse, int, error)

MarkMessageRead send message read event to MG

Example:

var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")
msg := MarkMessageReadRequest{
	Message{
		ExternalID: "274628",
	},
	10,
}

data, status, err := client.MarkMessageRead(msg)

if err != nil {
	fmt.Printf("%v", err)
}

fmt.Printf("%v %v\n", status, data)

func (*MgClient) Messages

func (c *MgClient) Messages(request SendData) (MessagesResponse, int, error)

Messages implement send message

Example:

var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")
msg := SendData{
	SendMessage{
		Message{
			ExternalID: "274628",
			Type:       "text",
			Text:       "hello!",
		},
		time.Now(),
	},
	User{
		ExternalID: "8",
		Nickname:   "@octopus",
		Firstname:  "Joe",
	},
	10,
}

data, status, err := client.Messages(msg)

if err != nil {
	fmt.Printf("%v", err)
}

fmt.Printf("%s\n", data.MessageID)

func (*MgClient) PostRequest

func (c *MgClient) PostRequest(url string, parameters io.Reader) ([]byte, int, error)

PostRequest implements POST Request

func (*MgClient) PutRequest

func (c *MgClient) PutRequest(url string, parameters []byte) ([]byte, int, error)

PutRequest implements PUT Request

func (*MgClient) TransportChannels added in v1.1.12

func (c *MgClient) TransportChannels(request Channels) ([]ChannelListItem, int, error)

TransportChannels returns channels list

Example:

var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")

data, status, err := client.TransportChannels{Channels{Active: true}}

if err != nil {
	fmt.Printf("%v", err)
}

fmt.Printf("Status: %v, Channels found: %v", status, len(data))

func (*MgClient) UpdateMessages

func (c *MgClient) UpdateMessages(request EditMessageRequest) (MessagesResponse, int, error)

UpdateMessages implement edit message

Example:

var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")
msg := UpdateData{
	UpdateMessage{
		Message{
			ExternalID: "274628",
			Type:       "text",
			Text:       "hello hello!",
		},
		MakeTimestamp(),
	},
	10,
}

data, status, err := client.UpdateMessages(msg)

if err != nil {
	fmt.Printf("%v", err)
}

fmt.Printf("%s\n", data.MessageID)

func (*MgClient) UpdateTransportChannel

func (c *MgClient) UpdateTransportChannel(request Channel) (UpdateResponse, int, error)

UpdateTransportChannel implement channel activation

Example:

var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")

request := ActivateRequest{
	ID:   3053450384,
	Type: "telegram",
	Name: "@my_shopping_bot",
	Settings: ChannelSettings{
		SpamAllowed: false,
		Status: Status{
			Delivered: ChannelFeatureNone,
			Read: ChannelFeatureReceive,
		},
		Text: ChannelSettingsText{
			Creating: ChannelFeatureBoth,
			Editing:  ChannelFeatureSend,
			Quoting:  ChannelFeatureReceive,
			Deleting: ChannelFeatureBoth,
		},
		Product: Product{
			Creating: ChannelFeatureSend,
			Deleting: ChannelFeatureSend,
		},
		Order: Order{
			Creating: ChannelFeatureBoth,
			Deleting: ChannelFeatureSend,
		},
	},
}

data, status, err := client.UpdateTransportChannel(request)

if err != nil {
	fmt.Printf("%v", err)
}

fmt.Printf("%s\n", data.UpdatedAt)

func (*MgClient) UploadFile added in v1.1.15

func (c *MgClient) UploadFile(request io.Reader) (UploadFileResponse, int, error)

UploadFile upload file

func (*MgClient) UploadFileByURL added in v1.1.15

func (c *MgClient) UploadFileByURL(request UploadFileByUrlRequest) (UploadFileResponse, int, error)

UploadFileByURL upload file by url

type Order added in v1.1.8

type Order struct {
	Creating string `json:"creating,omitempty"`
	Editing  string `json:"editing,omitempty"`
	Deleting string `json:"deleting,omitempty"`
}

Order type

type Originator added in v1.1.28

type Originator byte

Originator of message

const (
	// OriginatorCustomer means message was created by customer
	OriginatorCustomer Originator = iota + 1
	// OriginatorChannel means message was created by channel, for example via messenger mobile application
	OriginatorChannel
)

func (Originator) MarshalText added in v1.1.28

func (o Originator) MarshalText() ([]byte, error)

MarshalText marshals originator to text

type Product added in v1.1.8

type Product struct {
	Creating string `json:"creating,omitempty"`
	Editing  string `json:"editing,omitempty"`
	Deleting string `json:"deleting,omitempty"`
}

Product type

type SendData

type SendData struct {
	Message        Message                  `json:"message"`
	Originator     Originator               `json:"originator,omitempty"`
	Customer       Customer                 `json:"customer"`
	Channel        uint64                   `json:"channel"`
	ExternalChatID string                   `json:"external_chat_id"`
	Quote          *SendMessageRequestQuote `json:"quote,omitempty"`
}

SendData struct

type SendMessage

type SendMessage struct {
	Message
	SentAt time.Time `json:"sent_at,omitempty"`
}

SendMessage struct

type SendMessageRequestQuote added in v1.1.0

type SendMessageRequestQuote struct {
	ExternalID string `json:"external_id"`
}

SendMessageRequestQuote type

type Status added in v1.1.2

type Status struct {
	Delivered string `json:"delivered,omitempty"`
	Read      string `json:"read,omitempty"`
}

Status struct

type TransportRequestMeta added in v1.1.0

type TransportRequestMeta struct {
	ID        uint64 `json:"id"`
	Timestamp int64  `json:"timestamp"`
}

TransportRequestMeta request metadata

type UpdateResponse

type UpdateResponse struct {
	ChannelID  uint64    `json:"id"`
	ExternalID string    `json:"external_id"`
	UpdatedAt  time.Time `json:"updated_at"`
}

UpdateResponse channel update response

type UploadFileByUrlRequest added in v1.1.15

type UploadFileByUrlRequest struct {
	Url string `json:"url"`
}

UploadFileByUrlRequest file url to upload

type UploadFileResponse added in v1.1.15

type UploadFileResponse struct {
	ID        string    `json:"id"`
	Hash      string    `json:"hash"`
	Type      string    `json:"type"`
	Meta      FileMeta  `json:"meta"`
	MimeType  string    `json:"mime_type"`
	Size      int       `json:"size"`
	Url       *string   `json:"source_url"`
	CreatedAt time.Time `json:"created_at"`
}

UploadFileResponse uploaded file data

type WebhookData added in v1.1.0

type WebhookData struct {
	ExternalUserID    string              `json:"external_user_id"`
	ExternalMessageID string              `json:"external_message_id,omitempty"`
	ExternalChatID    string              `json:"external_chat_id"`
	ChannelID         uint64              `json:"channel_id"`
	Content           string              `json:"content"`
	QuoteExternalID   string              `json:"quote_external_id,omitempty"`
	QuoteContent      string              `json:"quote_content,omitempty"`
	Type              string              `json:"type"`
	User              *MessageDataUser    `json:"user,omitempty"`
	Bot               *MessageDataBot     `json:"bot,omitempty"`
	Product           *MessageDataProduct `json:"product,omitempty"`
	Order             *MessageDataOrder   `json:"order,omitempty"`
	Items             *[]FileItem         `json:"items,omitempty"`
}

WebhookData request data

type WebhookRequest added in v1.1.0

type WebhookRequest struct {
	Type string               `json:"type"`
	Meta TransportRequestMeta `json:"meta"`
	Data WebhookData          `json:"data"`
}

WebhookRequest type

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL