mymindstorm / matrix-appservice-mumble Goto Github PK
View Code? Open in Web Editor NEWMatrix <--> Murmur Bridge
Home Page: https://matrix.org/docs/projects/bridge/matrix-appservice-mumble
License: MIT License
Matrix <--> Murmur Bridge
Home Page: https://matrix.org/docs/projects/bridge/matrix-appservice-mumble
License: MIT License
Messages sent recursively to a channel and all subchannels don't get relayed to matrix
Here's a normal message:
array: [ [ 1 ], [ [Array], 113 ], [], [ [Array] ], [], 'asdf' ],
Here's a recursive message:
array: [ [ 1 ], [ [Array], 113 ], [], [], [ [Array] ], 'asf' ],
If I'm reading that right, based on mumble's src/murmur/MurmurRPC.proto, I'm guessing there are no channels specified, just trees of channels, so we'd probably want to at some point query the bridged channel, following the parent links to the root, and listen for tree changes / reparenting, and do a lookup of all bridged channels below that point in the trees specified in the message
ZeroC ICE will remain available as the RPC API
Hi, I was hoping to get this cool-looking bridge up and running. To this end, I spun up a dev homeserver, and started up a newly-compiled 1.4.0 murmur server.
However, though it reports that it can successfully connect to the gRPC endpoint on murmur, the bot never appears in the room. It has been invited!
I've tried tracking through the code but I am not familiar enough with how bridges work. Perhaps it get hung up awaiting setupCallBacks
:
matrix-appservice-mumble/src/main.ts
Line 173 in 504ce43
or somewhere around there, given where the console messages halt and due to lack of error messages.
some pointers as where to look would be appreciated. Can the latest git HEAD be built simply by git clone
-ing and running build.sh
? If so, I can give debugging it a shot myself- or at least add some more debug console.logs !
Config etc information included below.
Cheers :)
From the container running MAM:
bertieb@matrix-mumble-bridge-test:~$ matrix-appservice-mumble -c mumble-config.yaml -f mumble-registration.yaml
Connecting to Murmur...
Connetion to Murmur established!
Matrix-side listening on port 8090
nothing more is printed.
mumble-config.yaml:
# Address where Murmur is listening for gRPC. This will be in Murmur's logs.
mumble_grpc_endpoint: '192.168.1.218:50051'
# Homeserver domain
domain: 'example.org'
# Homeserver URL
homeserverURL: 'https://matrix.example.org/'
# Internal ID of the Matrix room to use for bridge admin commands.
# Anyone in this room will be able to link Mumble channels to Matrix.
# Type "help" for commands, you should only use this room for bot admin tasks.
# On Riot this is under 'Room Settings' => 'Advanced' => 'Room information'.
matrixRoom: '!REDACTEDROOMID:example.org'
mumble-registration.yml:
id: REDACTED_ID
hs_token: REDACTED_HS_TOKEN
as_token: REDACTED_AS_TOKEN
namespaces:
users:
- exclusive: true
regex: '@mumble_.*'
aliases: []
rooms: []
url: 'http://192.168.1.209:8090'
sender_localpart: mumblebot
rate_limited: true
protocols: null
I can curl MAM on port 8090 from the HS, though it gives an error:
curl 192.168.1.209:8090
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /</pre>
</body>
</html>
and I can curl the homeserver URL from the container running MAM:
$ curl https://matrix.example.org/
<html>
<head><title>302 Found</title></head>
<body>
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
Are there any chances getting mumble calls initiated through Matrix rooms?
Sound quality of mumble is quite better compared to matrix.
Thx!
Seems to be impossible. Setting an actor on a text message requires a session id.
Use hierarchical spaces to map 1:1 to hierarchical mumble rooms
https://element.io/blog/spaces-the-next-frontier/
We can tell if a Matrix avatar changes easily since there is an event. I think you have the right event from Mumble's side.
Most of this would be authenticating and linking users. matrix-appservice-bridge lets us add data to a user context, so this would probably look like:
[Mumble] Authenticated User: !link @xxx:matrix.org
[Matrix] Bot DM to User: confirm Yes / No
http://matrix-org.github.io/matrix-appservice-bridge/1.11.1/MatrixUser.html
Originally posted by @mymindstorm in #11 (comment)
Commands:
Channel links:
Presence:
Sync the mumble avatar (I presume user.texture on a UserStateChanged event) to the fake matrix user's avatar.
I suppose we'd need some way to detect whether it has changed, and whether the matrix one is out of date.
[edited to change matrix puppet to fake matrix user]
When channels is set in mumble-config.yaml, no messages are relayed from mumble. It appears that the UserTextMessage event's message.channels[0] has the correct id etc but the name is just "", so it never matches the specified channel names. TBH I'm not sure whether this is a murmur issue (I'm using 1.3.0-7 on archlinux) or a bridge issue.
The docs say to compile gRPC using make however according to gRPC's repo, this is deprecated.
From the compile docs:
After running make and sudo make install on the main directory, cd third_party/protobuf and do another sudo make install.
From the gRPC docs:
Building with make on UNIX systems (deprecated)
NOTE: make used to be gRPC's default build system, but we're no longer recommending it. You should use bazel or cmake instead. The Makefile is only intended for internal usage and is not meant for public consumption.
https://github.com/grpc/grpc/blob/master/BUILDING.md#building-with-make-on-unix-systems-deprecated
I am not sure if bazel or cmake will automatically compile protoc
in third_party/
. When I ran bazel it didn't seem like it but I could be mistaken.
Edit:
Output when trying to sudo make install
:
~/grpc-make$ sudo make install
Installing via 'make' is no longer supported. Use cmake or bazel instead.
Please consult BUILDING.md to get more information.
make: *** [Makefile:707: stop] Error 1
Investigate using minimist or yargs.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.