Mercurial > prosody-modules
diff mod_slack_webhooks/README.markdown @ 3000:02fc3b64cbb7
Initial commit of mod_slack_webhooks.
This provides an HTTP-based interface to and from Prosody-hosted MUCs
equivalent to Slack's incoming and outgoing webhook interfaces, allowing
a variety of Slack integrations to be used with a Prosody MUC.
author | Nathan Whitehorn <nwhitehorn@physics.ucla.edu> |
---|---|
date | Sun, 15 Apr 2018 08:45:43 -0700 |
parents | |
children | 00fc569e8333 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_slack_webhooks/README.markdown Sun Apr 15 08:45:43 2018 -0700 @@ -0,0 +1,87 @@ +--- +labels: +- 'Stage-Alpha' +summary: 'Allow Slack integrations to work with Prosody MUCs' +... + +Introduction +============ + +This module provides a Slack-compatible "web hook" interface to Prosody MUCs. +Both "incoming" web hooks, which allow Slack integrations to post messages +to Prosody MUCs, and "outgoing" web hooks, which copy messages from Prosody +MUCs to Slack-style integrations by HTTP, are supported. This can also be +used, in conjunction with various Slack inter-namespace bridging tools, to +provide a bidirectional bridge between a Prosody-hosted XMPP MUC and a Slack +channel. + +Usage +===== + +First copy the module to the prosody plugins directory. + +Then add "slack\_webhooks" to your modules\_enabled list: + +``` {.lua} +Component "conference.example.org" "muc" +modules_enabled = { + "slack_webhooks", +} +``` + +Configuration +============= + +The normal use for this module is to provide an incoming webhook to allow +integrations to post to prosody MUCs: + +``` {.lua} +incoming_webhook_path = "/msg/DFSDF56587658765NBDSA" +default_from_nick = "Bot" -- Unless otherwise specified, posts as "Bot" +``` + +This allows Slack-style JSON messages posted to http://conference.example.org/msg/DFSDF56587658765NBDSA/chat to appear in the MUC chat@conference.example.org. A username field in the message is honored as the nick attached to the message; if no username is specified, the message will use the value of default_from_nick. +Specifying a string of random gibberish in the URL is important to prevent spam. + +In addition, there is a second operating mode equivalent to Slack's outgoing +webhooks. This allows all messages from a set of specified chat rooms to be +routed to an external server over HTTP in the format used by Slack's +outgoing webhooks. +``` {.lua} +outgoing_webhook_routing = { + -- Send all messages from chat@conference.example.org to + -- a web server. + ["chat"] = "http://example.org/cgi-bin/messagedest", +} +``` + +Known Issues +============ + +The users from whom messages delivered from integrations are apparently +delivered are not, in general, members of the MUC. Other prosody modules +that try to look up information about the users who most messages, mostly +logging modules, may become confused and fail (clients all work fine because +replayed history also can come from non-present users). In at least some cases, +such as with mod_muc_mam, this can be fixed by hiding the JIDs of the +participants in the room configuration. + +There are a few smaller UI issues: + +* If an integration posts with the same username as a room member, there is + no indication (like Slack's [bot] suffix) that the message is not from that + room member. +* It is not currently possible to prevent posting to some MUCs (this is + also true of Slack). +* It should be possible to set the webhook configuration for a room in the + room configuration rather than statically in Prosody's configuration file. + +Compatibility +============= + + ------- ----------------- + trunk Untested + 0.10 Works + 0.9 Works + ------- ----------------- +