add product transfer
This commit is contained in:
parent
48345fc6de
commit
8343a606ff
2
go.mod
2
go.mod
@ -44,7 +44,7 @@ require (
|
|||||||
github.com/pkg/errors v0.8.0
|
github.com/pkg/errors v0.8.0
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
github.com/retailcrm/api-client-go v1.0.6
|
github.com/retailcrm/api-client-go v1.0.6
|
||||||
github.com/retailcrm/mg-transport-api-client-go v1.1.5
|
github.com/retailcrm/mg-transport-api-client-go v1.1.6
|
||||||
github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf // indirect
|
github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf // indirect
|
||||||
github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a // indirect
|
github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a // indirect
|
||||||
github.com/stevvooe/resumable v0.0.0-20180830230917-22b14a53ba50 // indirect
|
github.com/stevvooe/resumable v0.0.0-20180830230917-22b14a53ba50 // indirect
|
||||||
|
4
go.sum
4
go.sum
@ -93,8 +93,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
|
|||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/retailcrm/api-client-go v1.0.6 h1:4Q3e4ve8GOOHIQdq3/wTGqgWuWa1cKMKqmgrTv4FoDU=
|
github.com/retailcrm/api-client-go v1.0.6 h1:4Q3e4ve8GOOHIQdq3/wTGqgWuWa1cKMKqmgrTv4FoDU=
|
||||||
github.com/retailcrm/api-client-go v1.0.6/go.mod h1:QRoPE2SM6ST7i2g0yEdqm7Iw98y7cYuq3q14Ot+6N8c=
|
github.com/retailcrm/api-client-go v1.0.6/go.mod h1:QRoPE2SM6ST7i2g0yEdqm7Iw98y7cYuq3q14Ot+6N8c=
|
||||||
github.com/retailcrm/mg-transport-api-client-go v1.1.5 h1:UCotZ5ONR/jvRf+QqjId6GPgByX1N5FvhPGHhTCAIvg=
|
github.com/retailcrm/mg-transport-api-client-go v1.1.6 h1:bwBs+iJbJzTAUFbkz+LmOhpruYebrI26haPPzBlZaRU=
|
||||||
github.com/retailcrm/mg-transport-api-client-go v1.1.5/go.mod h1:AWV6BueE28/6SCoyfKURTo4lF0oXYoOKmHTzehd5vAI=
|
github.com/retailcrm/mg-transport-api-client-go v1.1.6/go.mod h1:AWV6BueE28/6SCoyfKURTo4lF0oXYoOKmHTzehd5vAI=
|
||||||
github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf h1:6V1qxN6Usn4jy8unvggSJz/NC790tefw8Zdy6OZS5co=
|
github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf h1:6V1qxN6Usn4jy8unvggSJz/NC790tefw8Zdy6OZS5co=
|
||||||
github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||||
github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a h1:JSvGDIbmil4Ui/dDdFBExb7/cmkNjyX5F97oglmvCDo=
|
github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a h1:JSvGDIbmil4Ui/dDdFBExb7/cmkNjyX5F97oglmvCDo=
|
||||||
|
12
src/main.go
12
src/main.go
@ -15,12 +15,12 @@ type Options struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
config *TransportConfig
|
config *TransportConfig
|
||||||
orm *Orm
|
orm *Orm
|
||||||
logger *logging.Logger
|
logger *logging.Logger
|
||||||
options Options
|
options Options
|
||||||
parser = flags.NewParser(&options, flags.Default)
|
parser = flags.NewParser(&options, flags.Default)
|
||||||
rx = regexp.MustCompile(`/+$`)
|
rx = regexp.MustCompile(`/+$`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/nicksnyder/go-i18n/v2/i18n"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
@ -484,7 +485,72 @@ func mgWebhookHandler(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if msg.Type == "message_sent" {
|
switch msg.Type {
|
||||||
|
case "message_sent":
|
||||||
|
m := tgbotapi.NewMessage(cid, msg.Data.Content)
|
||||||
|
|
||||||
|
if msg.Data.QuoteExternalID != "" {
|
||||||
|
qid, err := strconv.Atoi(msg.Data.QuoteExternalID)
|
||||||
|
if err != nil {
|
||||||
|
c.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
m.ReplyToMessageID = qid
|
||||||
|
}
|
||||||
|
|
||||||
|
msgSend, err := bot.Send(m)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
c.AbortWithStatus(http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.Debug {
|
||||||
|
logger.Debugf("mgWebhookHandler sent %v", msgSend)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, gin.H{"external_message_id": strconv.Itoa(msgSend.MessageID)})
|
||||||
|
|
||||||
|
case "message_updated":
|
||||||
|
msgSend, err := bot.Send(tgbotapi.NewEditMessageText(cid, uid, msg.Data.Content))
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
c.AbortWithStatus(http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.Debug {
|
||||||
|
logger.Debugf("mgWebhookHandler update %v", msgSend)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.AbortWithStatus(http.StatusOK)
|
||||||
|
|
||||||
|
case "message_deleted":
|
||||||
|
msgSend, err := bot.Send(tgbotapi.NewDeleteMessage(cid, uid))
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
c.AbortWithStatus(http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.Debug {
|
||||||
|
logger.Debugf("mgWebhookHandler delete %v", msgSend)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, gin.H{})
|
||||||
|
case "product":
|
||||||
|
mb := msg.Data.Product.Url
|
||||||
|
mb += "\n" + msg.Data.Product.Name
|
||||||
|
|
||||||
|
if msg.Data.Product.Cost != nil && msg.Data.Product.Cost.Value != 0 {
|
||||||
|
mb += "\n" + localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||||
|
MessageID: "missing_credentials",
|
||||||
|
TemplateData: map[string]interface{}{
|
||||||
|
"Value": msg.Data.Product.Cost.Value,
|
||||||
|
"Currency": msg.Data.Product.Cost.Currency,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
m := tgbotapi.NewMessage(cid, msg.Data.Content)
|
m := tgbotapi.NewMessage(cid, msg.Data.Content)
|
||||||
|
|
||||||
if msg.Data.QuoteExternalID != "" {
|
if msg.Data.QuoteExternalID != "" {
|
||||||
@ -509,34 +575,4 @@ func mgWebhookHandler(c *gin.Context) {
|
|||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{"external_message_id": strconv.Itoa(msgSend.MessageID)})
|
c.JSON(http.StatusOK, gin.H{"external_message_id": strconv.Itoa(msgSend.MessageID)})
|
||||||
}
|
}
|
||||||
|
|
||||||
if msg.Type == "message_updated" {
|
|
||||||
msgSend, err := bot.Send(tgbotapi.NewEditMessageText(cid, uid, msg.Data.Content))
|
|
||||||
if err != nil {
|
|
||||||
logger.Error(err)
|
|
||||||
c.AbortWithStatus(http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if config.Debug {
|
|
||||||
logger.Debugf("mgWebhookHandler update %v", msgSend)
|
|
||||||
}
|
|
||||||
|
|
||||||
c.AbortWithStatus(http.StatusOK)
|
|
||||||
}
|
|
||||||
|
|
||||||
if msg.Type == "message_deleted" {
|
|
||||||
msgSend, err := bot.Send(tgbotapi.NewDeleteMessage(cid, uid))
|
|
||||||
if err != nil {
|
|
||||||
logger.Error(err)
|
|
||||||
c.AbortWithStatus(http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if config.Debug {
|
|
||||||
logger.Debugf("mgWebhookHandler delete %v", msgSend)
|
|
||||||
}
|
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
tokenCounter uint32
|
tokenCounter uint32
|
||||||
credentialsTransport = []string{
|
credentialsTransport = []string{
|
||||||
"/api/integration-modules/{code}",
|
"/api/integration-modules/{code}",
|
||||||
"/api/integration-modules/{code}/edit",
|
"/api/integration-modules/{code}/edit",
|
||||||
|
@ -41,3 +41,5 @@ video: "[video]"
|
|||||||
voice: "[voice message]"
|
voice: "[voice message]"
|
||||||
photo: "[photo]"
|
photo: "[photo]"
|
||||||
undefined: "[undefined format of a message]"
|
undefined: "[undefined format of a message]"
|
||||||
|
|
||||||
|
cost: "Cost: {{.Value}} {{.Currency}}"
|
||||||
|
@ -41,3 +41,5 @@ video: "[video]"
|
|||||||
voice: "[mensaje de voz]"
|
voice: "[mensaje de voz]"
|
||||||
photo: "[foto]"
|
photo: "[foto]"
|
||||||
other: "[formato indefinido de mensaje]"
|
other: "[formato indefinido de mensaje]"
|
||||||
|
|
||||||
|
cost: "Costo: {{.Value}} {{.Currency}}"
|
||||||
|
@ -41,3 +41,5 @@ video: "[видео]"
|
|||||||
voice: "[голосовое сообщение]"
|
voice: "[голосовое сообщение]"
|
||||||
photo: "[изображение]"
|
photo: "[изображение]"
|
||||||
undefined: "[неопределенный формат сообщения]"
|
undefined: "[неопределенный формат сообщения]"
|
||||||
|
|
||||||
|
cost: "Цена: {{.Value}} {{.Currency}}"
|
||||||
|
Loading…
Reference in New Issue
Block a user