mod_muc_members_json

Introduction

This module allows you to import MUC membership information from an external URL in JSON format.

Details

If you have an organization or community and lots of members and/or channels, it can be frustrating to manage MUC affiliations manually. This module will fetch a JSON file from a configured URL, and use that to automatically set the MUC affiliations.

It also supports hats/badges.

Configuration

Add the module to the MUC host (not the global modules_enabled):

    Component "conference.example.com" "muc"
        modules_enabled = { "muc_members_json" }

You can define (globally or per-MUC component) the following options:

Name Description
muc_members_json_url The URL to the JSON file describing memberships
muc_members_json_mucs The MUCs to manage, and their associated configuration

The muc_members_json_mucs setting determines which rooms will be managed by the plugin, and how to map roles to hats (if desired).

muc_members_json_mucs = {
    -- This configures hats for the myroom@<this MUC host> MUC
    myroom = {
        -- The optional field 'member_hat' defines a hat that will be
        -- added to any user that is listed in the members JSON
        -- (regardless of what roles they have, if any)
        member_hat = {
            id = "urn:uuid:6a1b143a-1c5c-11ee-80aa-4ff1ce4867dc";
            title = "Cool Member";
        };
        -- The optional field 'team_hats' defines one or more hats
        -- that will be assigned to users that have the specified
        -- roles in the JSON.
        team_hats = {
            janitor = {
                id = "urn:uuid:ec32f550-7d5f-11ee-81ee-6b139cac3bf6";
                title = "Janitor";
            }
        }
    };
}

JSON format

{
  "members": [
    {
      "jids": [
        "user@example.com",
        "user2@example.com"
      ]
    },
    {
      "jids": ["user3@example.com"],
      "roles": ["janitor"]
    }
  ]
}

The JSON format must be an object with a members array.

Each member must have a jids field, and optionally a roles field (both are arrays of strings).

Compatibility

trunk Works
0.12 Works

Installation

With the plugin installer in Prosody 0.12 you can use:

sudo prosodyctl install --server=https://modules.prosody.im/rocks/ mod_muc_members_json

For earlier versions see the documentation for installing 3rd party modules