1
0
mirror of synced 2024-11-25 21:26:02 +03:00

add product transfer

This commit is contained in:
DmitryZagorulko 2018-09-13 16:32:50 +03:00
parent 48345fc6de
commit 8343a606ff
8 changed files with 83 additions and 41 deletions

2
go.mod
View File

@ -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
View File

@ -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=

View File

@ -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() {

View File

@ -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{})
}
} }

View File

@ -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",

View File

@ -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}}"

View File

@ -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}}"

View File

@ -41,3 +41,5 @@ video: "[видео]"
voice: "[голосовое сообщение]" voice: "[голосовое сообщение]"
photo: "[изображение]" photo: "[изображение]"
undefined: "[неопределенный формат сообщения]" undefined: "[неопределенный формат сообщения]"
cost: "Цена: {{.Value}} {{.Currency}}"