diff --git a/.travis.yml b/.travis.yml index 44eac81..17a09c5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,10 +5,8 @@ env: - MG_DEBUG=false go: - - '1.8' - - '1.9' - - '1.10' - - '1.11' + - '1.13' + - '1.14' before_install: - go get -v github.com/google/go-querystring/query diff --git a/v1/client_test.go b/v1/client_test.go index ad18879..28eb454 100644 --- a/v1/client_test.go +++ b/v1/client_test.go @@ -376,6 +376,44 @@ func TestMgClient_MessageSendText(t *testing.T) { assert.NotEmpty(t, data.MessageID) } +func TestMgClient_MessageSendTextWithSuggestions(t *testing.T) { + c := client() + + i := uint64(1) + message := MessageSendRequest{ + Type: MsgTypeText, + Scope: "public", + Content: "test message with suggestions", + ChatID: i, + TransportAttachments: &TransportAttachments{ + Suggestions: []Suggestion{ + { + Type: SuggestionTypeText, + Title: "text suggestion", + }, + {Type: SuggestionTypeEmail}, + {Type: SuggestionTypePhone}, + }, + }, + } + + defer gock.Off() + + gock.New(mgURL). + Post("/api/bot/v1/messages"). + JSON(message). + Reply(200). + BodyString(`{"message_id": 1, "time": "2018-01-01T00:00:00+03:00"}`) + + data, status, err := c.MessageSend(message) + if err != nil { + t.Errorf("%d %v", status, err) + } + + assert.NoError(t, err) + assert.NotEmpty(t, data.MessageID) +} + func TestMgClient_MessageSendProduct(t *testing.T) { c := client() diff --git a/v1/types.go b/v1/types.go index 1cd608f..1773a02 100644 --- a/v1/types.go +++ b/v1/types.go @@ -71,6 +71,10 @@ const ( MsgCurrencyKzt = "kzt" MsgCurrencyUsd = "usd" MsgCurrencyEur = "eur" + + SuggestionTypeText = "text" + SuggestionTypeEmail = "email" + SuggestionTypePhone = "phone" ) // MgClient type @@ -173,14 +177,24 @@ type ( } MessageSendRequest struct { - Type string `url:"type,omitempty" json:"type"` - Content string `url:"content,omitempty" json:"content"` - Product *MessageProduct `url:"product,omitempty" json:"product"` - Order *MessageOrder `url:"order,omitempty" json:"order"` - Items []Item `url:"order,omitempty" json:"items"` - Scope string `url:"scope,omitempty" json:"scope"` - ChatID uint64 `url:"chat_id,omitempty" json:"chat_id"` - QuoteMessageId uint64 `url:"quote_message_id,omitempty" json:"quote_message_id"` + Type string `url:"type,omitempty" json:"type"` + Content string `url:"content,omitempty" json:"content"` + Product *MessageProduct `url:"product,omitempty" json:"product"` + Order *MessageOrder `url:"order,omitempty" json:"order"` + Items []Item `url:"order,omitempty" json:"items"` + Scope string `url:"scope,omitempty" json:"scope"` + ChatID uint64 `url:"chat_id,omitempty" json:"chat_id"` + QuoteMessageId uint64 `url:"quote_message_id,omitempty" json:"quote_message_id"` + TransportAttachments *TransportAttachments `url:"transport_attachments,omitempty" json:"transport_attachments"` + } + + TransportAttachments struct { + Suggestions []Suggestion `url:"suggestions,omitempty" json:"suggestions"` + } + + Suggestion struct { + Type string `url:"type,omitempty" json:"type"` + Title string `url:"title,omitempty" json:"title"` } MessageEditRequest struct { @@ -575,6 +589,12 @@ type ( } `json:"status"` Text ChannelSettingsText `json:"text"` + + Suggestions struct { + Text string `json:"text"` + Phone string `json:"phone"` + Email string `json:"email"` + } `json:"suggestions"` } )