mautrix / signal

A Matrix-Signal puppeting bridge
GNU Affero General Public License v3.0
484 stars 74 forks source link

Voice messages and signal stickers are shown as Unsupported event in Element X (Android) #513

Closed brknkfr closed 1 month ago

brknkfr commented 1 month ago
  1. Setup mautrix-signal (version v0.6.1) bridge and register as a signal user (A)
  2. Setup Element X (version 0.4.12 on Android) with matrix id of signal user (A)
  3. Setup Element Web (version 1.11.66 with matrix id of signal user (A)
  4. Send a voice message/a signal sticker from Signal App from another signal user (B) to signal user (A)
  5. Element Web displays sticker (as GIF) and voice message (as OGG) correctly
  6. Element X shows Unsupported event for both messages (voice message and sticker)

Event detail of sticker message (taken from Element Web):

{
  "content": {
    "body": "šŸ˜­",
    "fi.mau.signal.sticker": {
      "emoji": "šŸ˜­",
      "id": 2,
      "pack": {
        "id": "+1NUB9L2SX7AdN+LnFHdHQ==",
        "key": "F+lxwTQDViJ4HS7iSeZHO3dFg3ULaMEbuCt1CcaLbf0="
      }
    },
    "file": {
      "hashes": {
        "sha256": "Dm+da6llHUS94froeHhucmwl8eFoOTJKCm1IgSy0tsM"
      },
      "iv": "hoG8lacgcBsAAAAAAAAAAA",
      "key": {
        "alg": "A256CTR",
        "ext": true,
        "k": "D5PAcUbf0HD42d6nSStaAEoNd54h4nOQJiScJUtTXL8",
        "key_ops": [
          "encrypt",
          "decrypt"
        ],
        "kty": "oct"
      },
      "url": "mxc://domain.tld/somestring",
      "v": "v2"
    },
    "info": {
      "blurhash": "LEHM7Vxu00WYl:ofV@ni9JV?~Us:",
      "h": 256,
      "mimetype": "image/webp",
      "size": 21000,
      "w": 256,
      "xyz.amorgan.blurhash": "LEHM7Vxu00WYl:ofV@ni9JV?~Us:"
    }
  },
  "event_id": "$someeventid",
  "origin_server_ts": 1715955173218,
  "room_id": "!someroomidstring:domain.tld",
  "sender": "@signal_somestring:domain.tld",
  "type": "m.sticker",
  "unsigned": {}
}

Event detail of voice message (taken from Element Web):

{
  "content": {
    "body": ".ogg",
    "file": {
      "hashes": {
        "sha256": "HdyOUKIA73zwT31cqDqyjU3nnPwsi3/Vhma3QvdSVqc"
      },
      "iv": "kv0LqpHsLPcAAAAAAAAAAA",
      "key": {
        "alg": "A256CTR",
        "ext": true,
        "k": "9ZDhGTAzx2VFzoJhXYFUi8Pf50fc8OidRsBZy9yQL48",
        "key_ops": [
          "encrypt",
          "decrypt"
        ],
        "kty": "oct"
      },
      "url": "mxc://domain.tld/somestring",
      "v": "v2"
    },
    "info": {
      "mimetype": "audio/ogg",
      "size": 14658
    },
    "m.mentions": {},
    "msgtype": "m.audio",
    "org.matrix.msc1767.audio": {},
    "org.matrix.msc3245.voice": {}
  },
  "event_id": "$someeventid",
  "origin_server_ts": 1715955059340,
  "room_id": "!someroomidstring:domain.tld",
  "sender": "@signal_somestring:domain.tld",
  "type": "m.room.message",
  "unsigned": {}
}

I was told in #element-x-android:matrix.org that this was because Element X (or underlying Rust-SDK) is very strict with the event structure and this has probably to be fixed in mautrix-signal bridge.