42wim / matterbridge

bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API (mattermost not required!)
Apache License 2.0
6.59k stars 614 forks source link

Matterbridge stops working after Rocket.Chat server restart #2089

Open tuxmartin opened 11 months ago

tuxmartin commented 11 months ago

Describe the bug I'm using Matterbridge for Rocket.Chat <---> WhatsApp integration.

I have to restart the self-hosted Rocket.Chat server every night due to backup. After restarting, Mattebridge will no longer connect to Rocket.Chat. The only solution is to restart Mattebridge.

To Reproduce Configure Rocket.Chat connection and restart Rocket.Chat server.

[rocketchat.test]
    Server="https://rc.test.eu/"
    Login="test@test.net"
    Password="123456789"
    PrefixMessagesWithNick=false
    RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

Expected behavior Matterbridge must automatically reconnect to the Rocket.Chat server.

Screenshots/debug logs

Oct 20 21:36:18 example.net matterbridge[476126]: time="2023-10-20T21:36:18+02:00" level=debug msg="Receiving message &proto.Message{state:impl.MessageState{NoUnkeyedLiterals:pragma.NoUnkeyedLiterals{}, DoNotCompare:pragma.DoNotCompare{}, DoNotCopy:pragma.DoNotCopy{}, atomicMessageInfo:(*impl.MessageInfo)(0xc0005ec678)}, sizeCache:0, unknownFields:[]uint8(nil), Conversation:(*string)(0xc0004d26d0), SenderKeyDistributionMessage:(*proto.SenderKeyDistributionMessage)(nil), ImageMessage:(*proto.ImageMessage)(nil), 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), PinMessage:(*proto.PinMessage)(nil), PollCreationMessageV3:(*proto.PollCreationMessage)(nil), ScheduledCallEditMessage:(*proto.ScheduledCallEditMessage)(nil), PtvMessage:(*proto.VideoMessage)(nil)}" func=handleMessage file="/root/go/pkg/mod/github.com/42wim/matterbridge@v1.26.1-0.20230405213915-89b0d362d291/bridge/whatsappmulti/handlers.go:107" prefix=whatsapp
Oct 20 21:36:18 example.net matterbridge[476126]: time="2023-10-20T21:36:18+02:00" level=debug msg="<= Sending message from 420123456789@s.whatsapp.net on whatsapp.730123456 to gateway" func=handleTextMessage file="/root/go/pkg/mod/github.com/42wim/matterbridge@v1.26.1-0.20230405213915-89b0d362d291/bridge/whatsappmulti/handlers.go:190" prefix=whatsapp
Oct 20 21:36:18 example.net matterbridge[476126]: time="2023-10-20T21:36:18+02:00" level=debug msg="<= Message is config.Message{Text:"xxx", Channel:"120363190240226368@g.us", Username:"test test", UserID:"420123456789@s.whatsapp.net", Avatar:"https://pps.whatsapp.net/v/t61.24694-24/56105964_2192629130997416_6383665232698408960_n.jpg?stp=dst-jpg_s96x96&ccb=11-4&oh=01_AdQPlOmq6kKa0JohZFZFlY1SskbENaf-J1210hKQMUt5Jg&oe=653FD8CD&_nc_sid=000000&_nc_cat=105", Account:"whatsapp.730123456", Event:"", Protocol:"whatsapp", Gateway:"", ParentID:"", Timestamp:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), ID:"420123456789@s.whatsapp.net/6F099565D7725DDD50F9319A70B22D11", Extra:map[string][]interface {}{}}" func=handleTextMessage file="/root/go/pkg/mod/github.com/42wim/matterbridge@v1.26.1-0.20230405213915-89b0d362d291/bridge/whatsappmulti/handlers.go:191" prefix=whatsapp
Oct 20 21:36:18 example.net matterbridge[476126]: time="2023-10-20T21:36:18+02:00" level=debug msg="=> Sending config.Message{Text:"xxx", Channel:"120363190240226368@g.us", Username:"test test", UserID:"420123456789@s.whatsapp.net", Avatar:"https://pps.whatsapp.net/v/t61.24694-24/56105964_2192629130997416_6383665232698408960_n.jpg?stp=dst-jpg_s96x96&ccb=11-4&oh=01_AdQPlOmq6kKa0JohZFZFlY1SskbENaf-J1210hKQMUt5Jg&oe=653FD8CD&_nc_sid=000000&_nc_cat=105", Account:"whatsapp.730123456", Event:"", Protocol:"whatsapp", Gateway:"gateway1", ParentID:"", Timestamp:time.Date(2023, time.October, 20, 21, 36, 18, 954200950, time.Local), ID:"420123456789@s.whatsapp.net/6F099565D7725DDD50F9319A70B22D11", Extra:map[string][]interface {}{}} from whatsapp.730123456 (120363190240226368@g.us) to rocketchat.test (matterbridge-test)" func=SendMessage file="/root/go/pkg/mod/github.com/42wim/matterbridge@v1.26.1-0.20230405213915-89b0d362d291/gateway/gateway.go:499" prefix=gateway
Oct 20 21:36:19 example.net matterbridge[476126]: time="2023-10-20T21:36:19+02:00" level=debug msg="=> Send from whatsapp.730123456 (120363190240226368@g.us) to rocketchat.test (matterbridge-test) took 46.107684ms" func=func1 file="/root/go/pkg/mod/github.com/42wim/matterbridge@v1.26.1-0.20230405213915-89b0d362d291/gateway/gateway.go:508" prefix=gateway
Oct 20 21:36:19 example.net matterbridge[476126]: time="2023-10-20T21:36:19+02:00" level=error msg="SendMessage failed: {"details":{"method":"sendMessage"},"error":"error-invalid-user","errorType":"Meteor.Error","isClientSafe":true,"message":"Invalid user [error-invalid-user]","reason":"Invalid user"}" func=handleMessage file="/root/go/pkg/mod/github.com/42wim/matterbridge@v1.26.1-0.20230405213915-89b0d362d291/gateway/handlers.go:228" prefix=gateway

Environment (please complete the following information):

Additional context

[whatsapp.499xxxxxx]
    Number="+4204730123456"
    SessionFile="/home/matterbridge/whatsapp-session-4730123456.gob"
    RemoteNickFormat="[{PROTOCOL}] <{NICK}>: "
    Label="+420"
    QrOnWhiteTerminal=false

[rocketchat.test]
    Server="https://rc.test.eu/"
    Login="test@test.net"
    Password="123456789"
    PrefixMessagesWithNick=false
    RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

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

    [[gateway.inout]]
    account = "whatsapp.4730123456"
    channel = "1203xxxxxxxxxxxx597@g.us"

    [[gateway.inout]]
    account="rocketchat.test"
    channel="matterbridge-test"
tuxmartin commented 11 months ago

Is there any "auto reconnect" option?

ghost commented 10 months ago

Hello,

we've got the same problem. After a RocketChat-Server restart we couldn't connect to the RocketChat-Server anymore with the same error.

time="2023-12-04T09:43:04Z" level=error msg="SendMessage failed: {"details":{"method":"sendMessage"},"error":"error-invalid-user","errorType":"Meteor.Error","isClientSafe":true,"message":"Invalid user [error-invalid-user]","reason":"Invalid user"}" prefix=gateway

After a restart of the Matterbridge instance (1.26.0) we connected successfully.

We also had some errors regarding a 404 page not found:

time="2023-12-04T00:41:51Z" level=info msg="reconnect: login" prefix=matterclient
time="2023-12-04T00:41:51Z" level=error msg="reconnect: login failed: AppErrorFromJSON: model.utils.decode_json.app_error, body: 404 page not found
, retrying in 10 seconds" prefix=matterclient
time="2023-12-04T00:42:01Z" level=info msg="reconnect: login" prefix=matterclient
time="2023-12-04T00:42:02Z" level=error msg="reconnect: login failed: AppErrorFromJSON: model.utils.decode_json.app_error, body: 404 page not found
, retrying in 10 seconds" prefix=matterclient
time="2023-12-04T00:42:12Z" level=info msg="reconnect: login" prefix=matterclient
time="2023-12-04T00:42:12Z" level=error msg="reconnect: login failed: AppErrorFromJSON: model.utils.decode_json.app_error, body: 404 page not found
, retrying in 10 seconds" prefix=matterclient
time="2023-12-04T00:42:22Z" level=info msg="reconnect: login" prefix=matterclient
time="2023-12-04T00:42:22Z" level=error msg="reconnect: login failed: AppErrorFromJSON: model.utils.decode_json.app_error, body: 404 page not found
, retrying in 10 seconds" prefix=matterclient
time="2023-12-04T00:42:32Z" level=info msg="reconnect: login" prefix=matterclient
time="2023-12-04T00:42:32Z" level=error msg="reconnect: login failed: AppErrorFromJSON: model.utils.decode_json.app_error, body: 404 page not found
, retrying in 10 seconds" prefix=matterclient

Additionally, and this could be the problem, we got a "Could not get terms of use":

time="2023-12-02T00:34:59Z" level=error msg="connection not alive: : Konnte die Nutzungsbedingungen nicht abrufen., failed to get UserTermsOfService with userId=fgsswnyyi7ff5yz1d84k95apxr: dial tcp 172.28.0.3:5432: connect: no route to host" prefix=matterclient
tuxmartin commented 10 months ago

@JonathanBouillon hi, did you manage to solve it somehow? Restarting matterbridge is not the solution because I will lose messages.

ghost commented 10 months ago

Hello @tuxmartin ,

unfortunately not. We are using multiple gateways for multiple clients. Therefore a restart of the instance would result in losing messages too. And restarting the instance every like 30 minutes would be "stupid" too.

tuxmartin commented 10 months ago

@JonathanBouillon I'm not sure if Matterbridge development is still active. It is a big problem for me, I would like to send some money to solve this error.