Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

notifier: Slack DM channel (depends on deeper Slack integration)

未关闭
#95 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
42/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
冷清
技术栈
typescript
领域
api, backend

调研方向

从 apps/api/src/notify/index.ts 和 issue #82 开始,了解现有的 notifier contract 和电子邮件流程。在选择 Slack credential 和 delivery 行为之前,阅读 specs/api/saml.md 和 specs/behaviors/help-wanted-roles.md。完成的标准是实现 Slack DM delivery、handle resolution、fallback 或 combined delivery、SLACK_BOT_TOKEN 配置,以及相应的 failure logging。

由索引模型根据 Issue 内容生成。

描述

Follow-up from #82

#82 wires up a real notifier for help-wanted-role events (interest expressed, role filled). The agreed-on first-cut shape is email-only via Resend — covered in that issue.

This issue tracks the Slack DM channel, deliberately deferred until we tackle deeper Slack integration.

Why deferred

The Notifier interface in apps/api/src/notify/index.ts already accepts maintainerSlackHandle per notification, so the data flow is ready. What's missing is the credential trust — sending a DM from a workspace bot requires either:

  1. A workspace-installed Slack app with chat:write scope + a bot token (the easiest path).
  2. SAML IdP-side identity assertions extended to support delegated Slack actions (much heavier).

We're already the SAML IdP for codeforphilly.slack.com (specs/api/saml.md), but that's an inbound SAML flow (user signs into Slack via us). Sending DMs out to Slack is the inverse — we'd be initiating a workspace action on a member's behalf. Cleaner to do that via a dedicated Slack app with its own token.

Scope (when picked up)

  • Add a SlackDmNotifier implementation alongside EmailNotifier.
  • A new env var (SLACK_BOT_TOKEN) — sealed-secret in the cluster repo.
  • Map Slack handles → user IDs via users.lookupByEmail (or users.list cached) since handles can change. Skip if the handle doesn't resolve.
  • Compound notifier: try Slack DM first, fall back to email if Slack delivery fails or the recipient has no Slack handle. (Or run both — pick when implementing.)
  • Failure logging at the same envelope as today's notifier.

Related

主要语言
TypeScript
星标
1
派生
1
平均合并
1 天 20 小时
30 天内合并 PR
25

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

CodeForPhilly/codeforphilly-ng 的其他 Issue

查看 CodeForPhilly/codeforphilly-ng 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。