发微信通知 · 唯一发送方 + 两个入口

这一页是唯一口径。机器可读版:neibu/contracts/wechat-send-authority.json。任何地方与本页冲突,以本页为准。

红线(老板 2026-11-06)

「bendi 有挂微信。但我们不能用这微信发消息。要用 qxiaodian 的机器发消息。」

在 bendi 上要求发送,会自动转发给 qxiaodian 执行(老板 11-06:「如果有人给bendi要求发送微信信息,bendi把发送任务转发给qxiaodian,让他执行」)。实现:tools/wechat-uia-send.ps1 在 bendi 上带 -Live 时不碰本机微信,而是把这条写成队列条目并推到 git,返回 stage=forwarded + 队列 id;真正发送由 qxiaodian 完成,回执在 queue/_done/<id>.json。没有任何开关能让 bendi 自己发 —— 逃生口已按老板指示删除。

一、你要发消息,只有两个入口(发送方都还是 qxiaodian)

谁用多快怎么做说明
你(在中台点) 约 30 秒 店铺 → 售后品退 → 发微信通知卡片:选目标 → 填内容 → 发送 卡片只负责“写队列 + 推到 git”;真正操作微信的是 qxiaodian
机器 / 脚本 约 30 秒 ~ 5 分钟 C:\neibu\tools\wxnotify.ps1 -To "会话名" -Text "内容" 慢的那几分钟是发起方“被唤醒 + 思考”的时间,不是网络

二、入口 1:中台点按钮 给非技术用

  1. 打开中台 → 进 店铺 → 售后品退(有「客服看图版」那一页)
  2. 找到 「发微信通知(经 qxiaodian 的微信发出,不经过你本机)」
  3. 选目标(下拉是白名单)→ 填内容 → 点发送 → 确认一次
  4. 等约 30 秒,卡片下方出现回执 ✅ 已发送

别连点同一件事只发一次。重复通知比迟到的通知更糟。

失败提示若红字写“消息没能同步到发送机(git 推送失败),所以没有发出去”,那是真的没发出去(不会骗你),把红字发我。

三、入口 2:命令行 给机器 / 自动化

# 发一条
C:\neibu\tools\wxnotify.ps1 -To "徐邦挺" -Text "要发的话"

# 我能发给谁(白名单)
C:\neibu\tools\wxnotify.ps1 -Allow

# 最近回执(含“等待中”)
C:\neibu\tools\wxnotify.ps1 -Status

# 只校验,不真写
C:\neibu\tools\wxnotify.ps1 -To "徐邦挺" -Text "试验" -DryRun

它怎么自动选路(你不用管):

四、完整链路(谁在干什么)

发起方(你 / 任意机器)
   ↓  写一条队列条目
neibu/queue/<id>.json              ← 白名单 + 幂等 id + class=public
   ↓  git
qxiaodian 的常驻 worker            ← 唯一的发送方(-Watch,每 30 秒;每分钟自愈任务)
   ↓  UIA 写入 + 点击发送
qxiaodian 上登录的微信
   ↓  回执
neibu/queue/_done|_failed/<id>.json   ← stage=sent 才算成功

五、回执怎么读(stage 字典)

stage含义你该怎么办
sent已发出没事。回执里 messageSeen 是气泡数快照,用于佐证。
blocked:sender-policy正常拦截这台不是发送方(例如 bendi 带 -Live)。改用 wxnotify.ps1 入队。
sendUnverified点了但不确定微信窗口可能隐藏/白屏。先恢复界面(重新登录),worker 下一轮会重试;不要盲目重发。
row:noRow找不到会话名字没匹配上;核对微信里显示的名字(含 [内部] 这类括号)。
noInput / wrongChat会话没打开检查微信是否登录、窗口是否异常。
writeMismatch回读不一致会自动重试一次;仍失败会清空草稿(不留残字给人误发)。
failed + hint失败按 hint 字面处理。

六、出问题时的 4 步定位(从近到远)

  1. 看回执:queue/_done、queue/_failed,或跑 wxnotify.ps1 -Status。你那条 id 在不在?
  2. 看是否入队:queue/ 里还有待发文件 = 没被取走;一个都没有且没回执 = 没进队列(推送失败会明确报错)。
  3. 看发送机是否活着:queue/_health/qxiaodian.json 的 at 要在近几分钟内。⚠️ 用实时心跳,别看 git 里那份(队列空时提交会稀疏)。bendi 的心跳不新鲜是正常的 —— 它不是发送方。
  4. 看微信本身:qxiaodian 上微信是否登录、主窗是否隐藏/白屏(窗口异常时 UIA 能写字但点不动发送)。

七、安全边界(别绕过)

八、常见坑(都是踩过的)

2026-11-06 修订:改为“唯一发送方 + 两个入口”。原页面把“bendi 本机直发”列为正式路径,那是错的 —— 老板明确禁止。机器可读权威口径:neibu/contracts/wechat-send-authority.json。