A new send-message module owns everything a dashboard sends: the PIN
(switchable off in admin), the unlock tokens, the Send message and Quick
replies tiles, the quick replies and quick emojis. It opens no upstream
connection of its own — it finds every module declaring
provides: ["messaging"] through the shell's module list and hands each
message to that module's POST /messaging/send over loopback, so Slack keeps
its one Slack connection and ProdCom its one ProdCom connection. Providers
check the browser's unlock token with GET /verify over loopback before
touching their upstream, so no browser on the network can post as the
location without having entered the PIN here.
Slack 1.3.0 is view-only plus reactions: the Sending group, PIN, send tiles
and quick replies are gone; it serves the messaging descriptor (channels as
recipients) and its reactions ride on the Send Message unlock. A layout's
old Send message / Quick replies tiles draw nothing until removed.
ProdCom 1.4.0 serves the descriptor as identities — only channels with
typingEnabled, since typed text goes out *as* a channel — and posts with
POST /api/v1/channels/{id}/send. Its tile is a click-to-target like Slack's
(accent stripe along the bottom), and typed entries carry a keyboard mark.
The tiles: click any Slack or ProdCom transcript to point sends there; a
Send as menu (only for platforms with identities, hidden otherwise) picks
the ProdCom channel to speak as; the choice is saved with the tile so named
layouts remember it. Wording follows the role — "Send message to #ops…" /
"Send message to ProdCom as FOH…". The PIN pad's dots ride on a real
numeric input so a phone's keyboard appears. Outcome is an icon beside
Send (check / blocked, five seconds, sentence as tooltip). A pill on the
box's bottom edge trades box height for rows of quick-emoji keys, a row
at a time; the single row scrolls sideways on a narrow tile with Send
pinned in place.
The module guide documents the provider contract and the page bus
(window.proddashMessaging + proddash:messaging:* events) the tiles share;
the ProdCom mock gained the send route.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
51 lines
1.2 KiB
JSON
51 lines
1.2 KiB
JSON
{
|
||
"id": "prodcom-transcript",
|
||
"name": "ProdCom",
|
||
"version": "1.4.0",
|
||
"proddash": ">=1.4.0",
|
||
"description": "Live ProdCom transcript; typed text to a ProdCom channel through the Send Message module",
|
||
"permissions": [
|
||
{
|
||
"kind": "local-network",
|
||
"reason": "Reaching the ProdCom API on this network"
|
||
}
|
||
],
|
||
"provides": [
|
||
"messaging"
|
||
],
|
||
"client": "client.js",
|
||
"server": "server.js",
|
||
"style": "style.css",
|
||
"minSize": {
|
||
"w": 3,
|
||
"h": 2
|
||
},
|
||
"defaultSize": {
|
||
"w": 4,
|
||
"h": 4
|
||
},
|
||
"configSchema": {
|
||
"prodcom": {
|
||
"type": "endpoint",
|
||
"label": "ProdCom server",
|
||
"default": {
|
||
"host": "",
|
||
"port": 24480
|
||
},
|
||
"help": "The ProdCom server at THIS location — every campus has its own. Blank until you set it, so a new install never reads another campus’s comms. The Send Message module sends typed text to these channels through this connection."
|
||
},
|
||
"apiKey": {
|
||
"type": "password",
|
||
"label": "API key (only if PSK auth is enabled in ProdCom)",
|
||
"default": ""
|
||
}
|
||
},
|
||
"instanceSchema": {
|
||
"showAvatars": {
|
||
"type": "boolean",
|
||
"label": "Channel icons",
|
||
"default": true
|
||
}
|
||
}
|
||
}
|