1
0
mirror of synced 2024-11-22 04:26:01 +03:00

Feature: Voice messages support

This commit is contained in:
Pavel 2019-08-21 09:24:29 +03:00
parent e3f64636a1
commit c2b8e33b18
3 changed files with 19 additions and 7 deletions

2
go.mod
View File

@ -45,7 +45,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.1.1 github.com/retailcrm/api-client-go v1.1.1
github.com/retailcrm/mg-transport-api-client-go v1.1.29 github.com/retailcrm/mg-transport-api-client-go v1.1.31
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

@ -95,8 +95,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.1.1 h1:yqsyYjBDdmDwExVlTdGucY9/IpEokXpkfTfA6z5AZ7M= github.com/retailcrm/api-client-go v1.1.1 h1:yqsyYjBDdmDwExVlTdGucY9/IpEokXpkfTfA6z5AZ7M=
github.com/retailcrm/api-client-go v1.1.1/go.mod h1:QRoPE2SM6ST7i2g0yEdqm7Iw98y7cYuq3q14Ot+6N8c= github.com/retailcrm/api-client-go v1.1.1/go.mod h1:QRoPE2SM6ST7i2g0yEdqm7Iw98y7cYuq3q14Ot+6N8c=
github.com/retailcrm/mg-transport-api-client-go v1.1.29 h1:C2YMCbRsbyw8jz8Xh6oWK9DFgslcLZYDRjJdZpAMDoE= github.com/retailcrm/mg-transport-api-client-go v1.1.31 h1:21pE1JhT49rvbMLDYJa0iiqbb/roz+eSp27fPck4uUw=
github.com/retailcrm/mg-transport-api-client-go v1.1.29/go.mod h1:AWV6BueE28/6SCoyfKURTo4lF0oXYoOKmHTzehd5vAI= github.com/retailcrm/mg-transport-api-client-go v1.1.31/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

@ -509,8 +509,16 @@ func telegramWebhookHandler(c *gin.Context) {
) )
} }
bot, err := tgbotapi.NewBotAPI(b.Token)
if err != nil {
logger.Error(b, err)
c.AbortWithStatus(http.StatusBadRequest)
return
}
var client = v1.New(conn.MGURL, conn.MGToken) var client = v1.New(conn.MGURL, conn.MGToken)
client.Debug = config.Debug client.Debug = config.Debug
bot.Debug = config.Debug
if update.Message != nil { if update.Message != nil {
nickname := update.Message.From.UserName nickname := update.Message.From.UserName
@ -585,7 +593,7 @@ func telegramWebhookHandler(c *gin.Context) {
if snd.Message.Text == "" { if snd.Message.Text == "" {
setLocale(update.Message.From.LanguageCode) setLocale(update.Message.From.LanguageCode)
err := setAttachment(update.Message, client, &snd, b.Token) err := setAttachment(bot, update.Message, client, &snd, b.Token)
if err != nil { if err != nil {
logger.Error(client.Token, err.Error()) logger.Error(client.Token, err.Error())
c.AbortWithStatus(http.StatusBadRequest) c.AbortWithStatus(http.StatusBadRequest)
@ -1007,7 +1015,7 @@ func textMessage(cid int64, mb string, quoteExternalID string) (chattable tgbota
return return
} }
func setAttachment(attachments *tgbotapi.Message, client *v1.MgClient, snd *v1.SendData, botToken string) error { func setAttachment(bot *tgbotapi.BotAPI, attachments *tgbotapi.Message, client *v1.MgClient, snd *v1.SendData, botToken string) error {
var ( var (
items []v1.Item items []v1.Item
fileID string fileID string
@ -1036,6 +1044,9 @@ func setAttachment(attachments *tgbotapi.Message, client *v1.MgClient, snd *v1.S
case "sticker": case "sticker":
fileID = attachments.Sticker.FileID fileID = attachments.Sticker.FileID
snd.Message.Type = v1.MsgTypeImage snd.Message.Type = v1.MsgTypeImage
case "voice":
fileID = attachments.Voice.FileID
snd.Message.Type = v1.MsgTypeAudio
default: default:
snd.Message.Text = getLocalizedMessage(t) snd.Message.Text = getLocalizedMessage(t)
} }
@ -1048,7 +1059,8 @@ func setAttachment(attachments *tgbotapi.Message, client *v1.MgClient, snd *v1.S
item := v1.Item{} item := v1.Item{}
fileUrl := fmt.Sprintf("https://api.telegram.org/file/bot%s/%s", botToken, file.FilePath) fileUrl := fmt.Sprintf("https://api.telegram.org/file/bot%s/%s", botToken, file.FilePath)
if t != "sticker" { switch {
case t == "sticker" || t == "voice":
item, _, err = getItemData( item, _, err = getItemData(
client, client,
fileUrl, fileUrl,
@ -1057,7 +1069,7 @@ func setAttachment(attachments *tgbotapi.Message, client *v1.MgClient, snd *v1.S
if err != nil { if err != nil {
return err return err
} }
} else { default:
item, err = convertAndUploadImage( item, err = convertAndUploadImage(
client, client,
fileUrl, fileUrl,