# NAME
Net::Matrix::Webhook - A http->matrix webhook
# VERSION
version 0.901
# SYNOPSIS
Net::Matrix::Webhook->new({
matrix_home_server => 'matrix.example.com',
matrix_user => 'your-bot',
matrix_password => '12345',
http_port => '8765', # = default
})->run;
# or use the wrapper script http2matix.pl included in this distribution
http2matrix.pl --matrix_home_server matrix.example.com --matrix_user your-bot --matrix_password 12345
# Then send your requests
curl http://localhost:8765/?message=hello%2C%20world%21
# DESCRIPTION
L\[matrix|https://matrix.org/\] is an open network for secure, decentralized communication. A bit like IRC, but less 90ies.
`Net::Matrix::Webhook` implements a webhook, so you can easily post messages to your matrix chat rooms via HTTP requests. It uses [IO::Async](https://metacpan.org/pod/IO%3A%3AAsync) to start a web server and connect as a client to matrix. It will then forward your messages.
Per default, everybody can now post to this endpoint. If you want to add a tiny bit of "security", you can pass a `secret` to `Net::Matrix::Webhook`. If you do this, you will also have to send a `token` consisting of a `sha1_hex` of the message and the secret:
my $token = sha1_hex( encode_utf8($msg), $secret );
request('http://localhost:8765/?message=hello%2C%20world%21&token='.$token);
# OPTIONS
If you use [http2matrix](https://metacpan.org/pod/http2matrix), you can pass the options either via the commandline as `--option` or via ENV as `OPTION`, for example `--matrix_home_server matrix.example.com` or `MATRIX_HOME_SERVER=matrix.example.com`
## matrix\_home\_server
Required.
The hostname of your matrix home server. Without the protocol!
## matrix\_room
Required. Example: `#dev:example.net`
The room you want the bot to join. The bot-user has to be invited to this room.
To get the room address, use [riot](https://metacpan.org/pod/riot), go to the "room settings" and find the "main address" in "published addresses". You might need to set it first via "local address" - "add".
## matrix\_user
Required.
The user name of your bot. You will have to set up an account for this user on your matrix home server.
## matrix\_password
Required.
The password of your bot.
## http\_port
Optional. Default: 8765
The HTTP port the webserver will use.
## secret
Optional.
A shared secret to calculate / validate the optional `token` parameter, for a little bit of "security".
# OUTPUT
Output happens via `Log::Any`.
If you use [http2matrix.pl](https://metacpan.org/pod/http2matrix.pl), you can use environment vars `LOGADAPTER` and `LOGLEVEL` to finetune the output.
# SEE ALSO
- [https://matrix.org/](https://matrix.org/)
- [Net::Async::Matrix](https://metacpan.org/pod/Net%3A%3AAsync%3A%3AMatrix)
# THANKS
Thanks to
- [validad.com](https://www.validad.com/) for supporting Open Source.
# AUTHOR
Thomas Klausner <domm@plix.at>
# COPYRIGHT AND LICENSE
This software is copyright (c) 2020 - 2021 by Thomas Klausner.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.