售后纠纷里游客最常讲的一句话是“没人通知我”。所以通知不是体验项,是凭证。哪些节点必须发、失败了怎么补,直接决定第二天的工单量。判断“非发不可”的标准只有一条:这条消息能不能避免一次现场争执或一次客服工单。
只有三类是必发
出票成功,要给票码或者取票方式,等于交付凭证;退款结果,受理和到账要分两条发,不能合成一条,因为到账有时间差,只发“已受理”那一条会被读成“钱没退”;临时变更,包括档期切换、改签后的新时段、临时闭园、票种停用导致无法核销。时段提醒、停止入园提醒、核销回执、到期提醒属于体验类,可以降级;但分时票和二次入园票的核销回执值得留,能省掉一次“我到底进没进过”的拉扯。
发送要挂在事务提交之后。最容易犯的错是把出票和发通知写进同一个事务:出票回滚了,短信已经飞出去,游客拿着一个无效码站到闸机口。正确顺序是出票事务提交成功、拿到票号,再写一条待发送任务。退款反过来,先落“退款受理”状态再发通知,否则通知说退了而状态还在审核。通知任务表最少要有这些字段:触发事件、收件号码来源(下单人手机还是持票人手机)、渠道、幂等键(事件号加票号加渠道)、状态、重试次数、下次重试时间、失败原因码。没有幂等键,一次接口重推就能发出去三条同样的短信。

失败分两种,处置不一样。暂时性失败是通道超时、被限流、网关抖动,重试有意义,按 60 秒、300 秒、900 秒三次退避就够。永久性失败是用户未订阅、订阅消息配额用完、号码为空,重试只是把队列塞满,让真正紧急的临时变更排在后面等待。区分靠失败原因码,后台要按原因码分别配策略:永久性的不进重试队列,立刻降级换渠道。
降级链是首选渠道、短消息、人工外呼三段,外呼清单当天必须清零。临时闭园要在决策后半小时覆盖当日预约且尚未入园的人群,这个时限倒推得出来:假设当日未入园约三千人,短信通道受签名与模板审核的并发限制,每分钟只能出两三百条,串行发要十几分钟,加上回执处理实际按半小时排。只走模板消息时,可触达面仅是已关注人群的一部分,剩下的得靠另一条路补。

还要有合并窗口。一次改签会产生一串事件:旧票作废、新票出票、时段变更、金额差处理。不合并,用户收到三四条,第一反应是“是不是被退了两次”。实现上是给同一订单在几分钟内的同类事件合成一条对外文案。合并只作用于体验类,退款到账和临时变更不参与合并,这两类迟到不如不到。
看板上留四个数就够判断链路健康:当日各渠道应发、实发、失败三档数量,加上失败原因码的前三位。这套数的用途只有一个——发现“某条链路今天整段没发出去”这种事故。这类事故发现得晚,通常不是没人会修,而是没人看。

鄂公网安备 42018502004652号