Slack: add some fixes and connect it all up
This commit is contained in:
@@ -8,6 +8,11 @@ import { type DiscordProbe, probeDiscord } from "../../discord/probe.js";
|
||||
import { type IMessageProbe, probeIMessage } from "../../imessage/probe.js";
|
||||
import { webAuthExists } from "../../providers/web/index.js";
|
||||
import { probeSignal, type SignalProbe } from "../../signal/probe.js";
|
||||
import { probeSlack, type SlackProbe } from "../../slack/probe.js";
|
||||
import {
|
||||
resolveSlackAppToken,
|
||||
resolveSlackBotToken,
|
||||
} from "../../slack/token.js";
|
||||
import { probeTelegram, type TelegramProbe } from "../../telegram/probe.js";
|
||||
import { resolveTelegramToken } from "../../telegram/token.js";
|
||||
import { getWebAuthAgeMs, readWebSelfId } from "../../web/session.js";
|
||||
@@ -74,6 +79,41 @@ export const providersHandlers: GatewayRequestHandlers = {
|
||||
discordLastProbeAt = Date.now();
|
||||
}
|
||||
|
||||
const slackCfg = cfg.slack;
|
||||
const slackEnabled = slackCfg?.enabled !== false;
|
||||
const slackBotEnvToken = slackEnabled
|
||||
? resolveSlackBotToken(process.env.SLACK_BOT_TOKEN)
|
||||
: undefined;
|
||||
const slackBotConfigToken = slackEnabled
|
||||
? resolveSlackBotToken(slackCfg?.botToken)
|
||||
: undefined;
|
||||
const slackBotToken = slackBotEnvToken ?? slackBotConfigToken ?? "";
|
||||
const slackBotTokenSource = slackBotEnvToken
|
||||
? "env"
|
||||
: slackBotConfigToken
|
||||
? "config"
|
||||
: "none";
|
||||
const slackAppEnvToken = slackEnabled
|
||||
? resolveSlackAppToken(process.env.SLACK_APP_TOKEN)
|
||||
: undefined;
|
||||
const slackAppConfigToken = slackEnabled
|
||||
? resolveSlackAppToken(slackCfg?.appToken)
|
||||
: undefined;
|
||||
const slackAppToken = slackAppEnvToken ?? slackAppConfigToken ?? "";
|
||||
const slackAppTokenSource = slackAppEnvToken
|
||||
? "env"
|
||||
: slackAppConfigToken
|
||||
? "config"
|
||||
: "none";
|
||||
const slackConfigured =
|
||||
slackEnabled && Boolean(slackBotToken) && Boolean(slackAppToken);
|
||||
let slackProbe: SlackProbe | undefined;
|
||||
let slackLastProbeAt: number | null = null;
|
||||
if (probe && slackConfigured) {
|
||||
slackProbe = await probeSlack(slackBotToken, timeoutMs);
|
||||
slackLastProbeAt = Date.now();
|
||||
}
|
||||
|
||||
const signalCfg = cfg.signal;
|
||||
const signalEnabled = signalCfg?.enabled !== false;
|
||||
const signalHost = signalCfg?.httpHost?.trim() || "127.0.0.1";
|
||||
@@ -152,6 +192,17 @@ export const providersHandlers: GatewayRequestHandlers = {
|
||||
probe: discordProbe,
|
||||
lastProbeAt: discordLastProbeAt,
|
||||
},
|
||||
slack: {
|
||||
configured: slackConfigured,
|
||||
botTokenSource: slackBotTokenSource,
|
||||
appTokenSource: slackAppTokenSource,
|
||||
running: runtime.slack.running,
|
||||
lastStartAt: runtime.slack.lastStartAt ?? null,
|
||||
lastStopAt: runtime.slack.lastStopAt ?? null,
|
||||
lastError: runtime.slack.lastError ?? null,
|
||||
probe: slackProbe,
|
||||
lastProbeAt: slackLastProbeAt,
|
||||
},
|
||||
signal: {
|
||||
configured: signalConfigured,
|
||||
baseUrl: signalBaseUrl,
|
||||
|
||||
@@ -3,6 +3,7 @@ import { sendMessageDiscord } from "../../discord/index.js";
|
||||
import { shouldLogVerbose } from "../../globals.js";
|
||||
import { sendMessageIMessage } from "../../imessage/index.js";
|
||||
import { sendMessageSignal } from "../../signal/index.js";
|
||||
import { sendMessageSlack } from "../../slack/send.js";
|
||||
import { sendMessageTelegram } from "../../telegram/send.js";
|
||||
import { resolveTelegramToken } from "../../telegram/token.js";
|
||||
import { sendMessageWhatsApp } from "../../web/outbound.js";
|
||||
@@ -87,6 +88,22 @@ export const sendHandlers: GatewayRequestHandlers = {
|
||||
payload,
|
||||
});
|
||||
respond(true, payload, undefined, { provider });
|
||||
} else if (provider === "slack") {
|
||||
const result = await sendMessageSlack(to, message, {
|
||||
mediaUrl: request.mediaUrl,
|
||||
});
|
||||
const payload = {
|
||||
runId: idem,
|
||||
messageId: result.messageId,
|
||||
channelId: result.channelId,
|
||||
provider,
|
||||
};
|
||||
context.dedupe.set(`send:${idem}`, {
|
||||
ts: Date.now(),
|
||||
ok: true,
|
||||
payload,
|
||||
});
|
||||
respond(true, payload, undefined, { provider });
|
||||
} else if (provider === "signal") {
|
||||
const cfg = loadConfig();
|
||||
const host = cfg.signal?.httpHost?.trim() || "127.0.0.1";
|
||||
|
||||
Reference in New Issue
Block a user