42wim/matterbridge

nctalk: Images are not embedded in message when send from other messengers

Opened this issue · 0 comments

Describe the bug
Matterbridge: I'm using the master branch.
Nextcloud: 27.1.8

When I post an image to whatsapp its not embedded into the nctalk message. Instead the message holds a link to the matterbridge mediaserver. Same behaviour when send from telegram.

When I post an image in nctalk, then its transfered to whatsapp nicely.

Sending images between telegram and whatsapp works great.

Text messages are bridged perfectly.

UPDATE
I tested v1.26.0 (from source) and sending images from telegram to nctalk. It doesn't work.

To Reproduce

Nothings special.

Expected behavior
Send embedded images/media from whatsapp/other messengers to nctalk, too.

Screenshots/debug logs
image

image

Environment (please complete the following information):

I'm running Matterbridge in Docker build with the served Dockerfile_whatsappmulti

LOG


matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="Receiving message &proto.Message{state:impl.MessageState{NoUnkeyedLiterals:pragma.NoUnkeyedLiterals{}, DoNotCompare:pragma.DoNotCompare{}, DoNotCopy:pragma.DoNotCopy{}, atomicMessageInfo:(*impl.MessageInfo)(0xc0006b67c0)}, sizeCache:0, unknownFields:[]uint8(nil), Conversation:(*string)(nil), SenderKeyDistributionMessage:(*proto.SenderKeyDistributionMessage)(nil), ImageMessage:(*proto.ImageMessage)(0xc00044d500), ContactMessage:(*proto.ContactMessage)(nil), LocationMessage:(*proto.LocationMessage)(nil), ExtendedTextMessage:(*proto.ExtendedTextMessage)(nil), DocumentMessage:(*proto.DocumentMessage)(nil), AudioMessage:(*proto.AudioMessage)(nil), VideoMessage:(*proto.VideoMessage)(nil), Call:(*proto.Call)(nil), Chat:(*proto.Chat)(nil), ProtocolMessage:(*proto.ProtocolMessage)(nil), ContactsArrayMessage:(*proto.ContactsArrayMessage)(nil), HighlyStructuredMessage:(*proto.HighlyStructuredMessage)(nil), FastRatchetKeySenderKeyDistributionMessage:(*proto.SenderKeyDistributionMessage)(nil), SendPaymentMessage:(*proto.SendPaymentMessage)(nil), LiveLocationMessage:(*proto.LiveLocationMessage)(nil), RequestPaymentMessage:(*proto.RequestPaymentMessage)(nil), DeclinePaymentRequestMessage:(*proto.DeclinePaymentRequestMessage)(nil), CancelPaymentRequestMessage:(*proto.CancelPaymentRequestMessage)(nil), TemplateMessage:(*proto.TemplateMessage)(nil), StickerMessage:(*proto.StickerMessage)(nil), GroupInviteMessage:(*proto.GroupInviteMessage)(nil), TemplateButtonReplyMessage:(*proto.TemplateButtonReplyMessage)(nil), ProductMessage:(*proto.ProductMessage)(nil), DeviceSentMessage:(*proto.DeviceSentMessage)(nil), MessageContextInfo:(*proto.MessageContextInfo)(nil), ListMessage:(*proto.ListMessage)(nil), ViewOnceMessage:(*proto.FutureProofMessage)(nil), OrderMessage:(*proto.OrderMessage)(nil), ListResponseMessage:(*proto.ListResponseMessage)(nil), EphemeralMessage:(*proto.FutureProofMessage)(nil), InvoiceMessage:(*proto.InvoiceMessage)(nil), ButtonsMessage:(*proto.ButtonsMessage)(nil), ButtonsResponseMessage:(*proto.ButtonsResponseMessage)(nil), PaymentInviteMessage:(*proto.PaymentInviteMessage)(nil), InteractiveMessage:(*proto.InteractiveMessage)(nil), ReactionMessage:(*proto.ReactionMessage)(nil), StickerSyncRmrMessage:(*proto.StickerSyncRMRMessage)(nil), InteractiveResponseMessage:(*proto.InteractiveResponseMessage)(nil), PollCreationMessage:(*proto.PollCreationMessage)(nil), PollUpdateMessage:(*proto.PollUpdateMessage)(nil), KeepInChatMessage:(*proto.KeepInChatMessage)(nil), DocumentWithCaptionMessage:(*proto.FutureProofMessage)(nil), RequestPhoneNumberMessage:(*proto.RequestPhoneNumberMessage)(nil), ViewOnceMessageV2:(*proto.FutureProofMessage)(nil), EncReactionMessage:(*proto.EncReactionMessage)(nil), EditedMessage:(*proto.FutureProofMessage)(nil), ViewOnceMessageV2Extension:(*proto.FutureProofMessage)(nil), PollCreationMessageV2:(*proto.PollCreationMessage)(nil), ScheduledCallCreationMessage:(*proto.ScheduledCallCreationMessage)(nil), GroupMentionedMessage:(*proto.FutureProofMessage)(nil), PinInChatMessage:(*proto.PinInChatMessage)(nil), PollCreationMessageV3:(*proto.PollCreationMessage)(nil), ScheduledCallEditMessage:(*proto.ScheduledCallEditMessage)(nil), PtvMessage:(*proto.VideoMessage)(nil), BotInvokeMessage:(*proto.FutureProofMessage)(nil), EncCommentMessage:(*proto.EncCommentMessage)(nil)}" func=handleMessage file="bridge/whatsappmulti/handlers.go:107" prefix=whatsapp
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="Trying to download 3A8D508A4F3211EC3799.jpg with type image/jpeg" func=handleImageMessage file="bridge/whatsappmulti/handlers.go:242" prefix=whatsapp
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="Download OK "3A8D508A4F3211EC3799.jpg" 176946" func=HandleDownloadData2 file="bridge/helper/helper.go:183" prefix=whatsapp
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="<= Sending message from XXX@s.whatsapp.net on whatsapp.XXX to gateway" func=handleImageMessage file="bridge/whatsappmulti/handlers.go:254" prefix=whatsapp
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="<= Message is config.Message{Text:"", Channel:"XXX", Username:"XXX P", UserID:"XXX@s.whatsapp.net", Avatar:"xxx", Account:"whatsapp.XXX", Event:"", Protocol:"whatsapp", Gateway:"", ParentID:"", Timestamp:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), ID:"XXX@s.whatsapp.net/3A8D508A4F3211EC3799", Extra:map[string][]interface {}{"file":[]interface {}{config.FileInfo{Name:"3A8D508A4F3211EC3799.jpg", Data:(*[]uint8)(0xc0000fe000), Comment:"", URL:"", Size:0, Avatar:false, SHA:"", NativeID:""}}}}" func=handleImageMessage file="bridge/whatsappmulti/handlers.go:255" prefix=whatsapp
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="mediaserver path placing file: /mediaserver/104d0511/3A8D508A4F3211EC3799.jpg" func=handleFilesLocal file="gateway/handlers.go:158" prefix=gateway
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="mediaserver download URL = XXX/3A8D508A4F3211EC3799.jpg" func=handleFiles file="gateway/handlers.go:112" prefix=gateway
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="=> Sending config.Message{Text:"", Channel:"1xxx", Username:"XXX P", UserID:"XXX@s.whatsapp.net", Avatar:"xxx", Account:"whatsapp.XXX", Event:"", Protocol:"whatsapp", Gateway:"matterbottest", ParentID:"", Timestamp:time.Date(2024, time.May, 5, 13, 23, 1, 899666261, time.Local), ID:"XXX@s.whatsapp.net/3A8D508A4F3211EC3799", Extra:map[string][]interface {}{"file":[]interface {}{config.FileInfo{Name:"3A8D508A4F3211EC3799.jpg", Data:(*[]uint8)(0xc0000fe000), Comment:"", URL:"XXX/3A8D508A4F3211EC3799.jpg", Size:0, Avatar:false, SHA:"104d0511", NativeID:""}}}} from whatsapp.matterbot (xxx) to telegram.XXX (XXX)" func=SendMessage file="gateway/gateway.go:499" prefix=gateway
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="=> Receiving config.Message{Text:"", Channel:"XXX", Username:"[whatsapp] &lt;XXX P&gt; ", UserID:"XXX@s.whatsapp.net", Avatar:"xxx", Account:"whatsapp.XXX", Event:"", Protocol:"whatsapp", Gateway:"matterbottest", ParentID:"", Timestamp:time.Date(2024, time.May, 5, 13, 23, 1, 899666261, time.Local), ID:"", Extra:map[string][]interface {}{"file":[]interface {}{config.FileInfo{Name:"3A8D508A4F3211EC3799.jpg", Data:(*[]uint8)(0xc0000fe000), Comment:"", URL:"XXX/3A8D508A4F3211EC3799.jpg", Size:0, Avatar:false, SHA:"104d0511", NativeID:""}}}}" func=Send file="bridge/telegram/telegram.go:121" prefix=telegram
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="mID telegram.XXX: 44" func=SendMessage file="gateway/gateway.go:518" prefix=gateway
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="=> Send from whatsapp.matterbot (XXX) to telegram.XXX (-XXX) took 71.451016ms" func=func1 file="gateway/gateway.go:508" prefix=gateway
matterbridge-1  | time="2024-05-05T13:23:01Z" level=debug msg="=> Sending config.Message{Text:"", Channel:"XXX", Username:"XXX P", UserID:"XXX@s.whatsapp.net", Avatar:"xxx", Account:"whatsapp.matterbot", Event:"", Protocol:"whatsapp", Gateway:"matterbottest", ParentID:"", Timestamp:time.Date(2024, time.May, 5, 13, 23, 1, 899666261, time.Local), ID:"XXX@s.whatsapp.net/3A8D508A4F3211EC3799", Extra:map[string][]interface {}{"file":[]interface {}{config.FileInfo{Name:"3A8D508A4F3211EC3799.jpg", Data:(*[]uint8)(0xc0000fe000), Comment:"", URL:"XXX/3A8D508A4F3211EC3799.jpg", Size:0, Avatar:false, SHA:"104d0511", NativeID:""}}}} from whatsapp.XXX (XXX) to nctalk.0 (xzhmhowg)" func=SendMessage file="gateway/gateway.go:499" prefix=gateway
matterbridge-1  | time="2024-05-05T13:23:05Z" level=error msg="Could not send message to room xzhmhowg from [whatsapp] <XXX P> : unexpected return code" func=Send file="bridge/nctalk/nctalk.go:128" prefix=nctalk
matterbridge-1  | time="2024-05-05T13:23:05Z" level=debug msg="=> Send from whatsapp.matterbot (XXX) to nctalk.0 (xzhmhowg) took 3.112660696s" func=func1 file="gateway/gateway.go:508" prefix=gateway

Additional context

[general]
MediaDownloadPath="xxx"
MediaServerDownload="xxx"

[telegram]
    [telegram.xxx]
    Token = "xxx"
    PrefixMessagesWithNick = true
    RemoteNickFormat = "[{PROTOCOL}] <{NICK}> "
    UseFullName=true

[nctalk]
    [nctalk.0]
    SeparateDisplayName = true
    Server = "xxx"
    Login = "bridge-bot"
    Password = "xxx"
    PrefixMessagesWithNick = true
    RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

[whatsapp]
    [whatsapp.xxx]
    Number="xxx"
    RemoteNickFormat="[{PROTOCOL}] @{NICK}: "
    SessionFile="/data/xxx"

[[gateway]]
    name = "matterbottest"
    enable = true

    [[gateway.inout]]
    account = "telegram.xxx"
    channel = "xxx"

    [[gateway.inout]]
    account = "nctalk.0"
    channel = "xxxx"

    [[gateway.inout]]
    account = "whatsapp.xxx"
    channel = "xxx"