Skip to content

Commit 0af1048

Browse files
rofeclaude
andcommitted
Slack card: fall back to @mention when display name is unknown
For @adobe.com invitees not yet in the tenant, look up their Slack user ID and show it as a clickable @mention behind the email so the approver can check their profile. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 080729c commit 0af1048

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

src/slack.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,19 @@ function teamDeepLink(request, env) {
3737
return `https://teams.microsoft.com/l/team/${encodeURIComponent(channelId)}/conversations?groupId=${encodeURIComponent(groupId)}&tenantId=${encodeURIComponent(tenantId)}`;
3838
}
3939

40-
function cardBodyBlocks(request, env, { displayName } = {}) {
40+
function cardBodyBlocks(request, env, { displayName, slackUserId } = {}) {
4141
const requester = request.requester_email ?? request.requester_name ?? 'Someone';
4242
const teamLink = teamDeepLink(request, env);
4343
const teamDisplay = teamLink
4444
? `<${teamLink}|${request.team_name}>`
4545
: request.team_name;
4646
const intro = `${requester} requested to invite one person to Adobe Enterprise Support`;
47-
const emailDisplay = displayName ? `${request.member_email} (${displayName})` : request.member_email;
47+
const nameSuffix = displayName
48+
? ` (${displayName})`
49+
: slackUserId
50+
? ` (<@${slackUserId}>)`
51+
: '';
52+
const emailDisplay = `${request.member_email}${nameSuffix}`;
4853
const fields = `> *Email*: ${emailDisplay}\n> *Team*: ${teamDisplay}`;
4954
return [
5055
{
@@ -74,13 +79,20 @@ export async function postApprovalCard(env, request) {
7479
throw new Error('SLACK_ADMIN_CHANNEL_ID is not set. Set it in wrangler.toml [vars] or in the Cloudflare dashboard so it is not removed on deploy.');
7580
}
7681
let displayName;
82+
let slackUserId;
7783
if (request.member_email.toLowerCase().endsWith('@adobe.com')) {
7884
try {
7985
const user = await resolveUser(env, request.member_email);
8086
displayName = user?.displayName;
8187
} catch { /* not in tenant yet */ }
88+
if (!displayName) {
89+
try {
90+
const res = await slack(env, 'users.lookupByEmail', { email: request.member_email });
91+
slackUserId = res.user?.id;
92+
} catch { /* user not on Slack */ }
93+
}
8294
}
83-
const opts = { displayName };
95+
const opts = { displayName, slackUserId };
8496
const requester = request.requester_email ?? request.requester_name ?? 'Someone';
8597
const result = await slack(env, 'chat.postMessage', {
8698
channel,

0 commit comments

Comments
 (0)