# 问题排查

提交问题前,请先排查和定位问题所在

# 消息发送失败,怎么排查?

  1. 进入云平台->消息服务->消息日志审计 ; 根据筛选条件,筛选出发送失败消息,可以看到具体发送失败原因;

图片

  1. 鼠标放置红色字体 "发送失败" 上边,会弹出错误原因提示框

图片

如果云平台没有发现有对应的记录

# 如何查看消息失败记录?

发送失败的消息,在失败状态的旁边,有一个图标提示,鼠标移入会出现消息失败的记录。包括什么时间失败的,失败的原因是什么。因为消息失败有重发的机制,所以失败记录可以有多条。每条失败原因的前面,都有一个【】,【】里提示问题的源头,比如以下原因:

【阿里云短信】短信模板不合法

这个原因的源头是阿里云短信,需要去阿里云短信控制台去查找问题,其他的问题同理,先确定问题源头,再查找并排除问题出现的原因


# 业务系统发送消息问题排查逻辑

  1. 先从云平台→消息服务→消息日志审计 中,查询是否存在刚刚发送的消息,如果发送了且发送失败根据发送失败去找原因;如果没有该消息按照下方逻辑排查;

  2. 从业务系统去着手排查,配置参数正确吗?调用报错吗?有消息相关控制按钮吗?都没问题再往下;

  3. 确认业务系统的对应的应用存在,且配置了相对应的消息类型,且模板不为空;以上问题都确认了没问题,相信问题已解决。

  4. 如果问题还是没有处理成功,可联系开发人员协助排查问题

# 功能相关

功能使用相关问题

# 消息如何接入,提供哪些接入方式?

目前消息服务提供了6种消息发送方式:SMS(手机短信)、MAIL(邮件)、WECHAT(微信)、DINGTALK(钉钉)、SUPERAPP(APP)、WEBSITE(系统消息)

发送消息

应用系统接入消息服务发送消息,三个前提步骤:

  • 应用注册:开放平台进行应用注册(未对接)或后台管理员分配;提供应用名称、应用描述信息,得到appId等信息。

  • 消息类型申请:定义消息类型、类型编码、发送方式(多选)。

  • 消息模板设置:单模板、多模板;多个发送方式定义同一模板,也可以每个发送方式定义一个模板。

所有对接API为restful风格,基于OAuth2.0 或 JWT (二选一)的认证授权模式。


查看消息

  • 接口查看:提供的API可以查询消息。
  • 消息组件:VUE项目可以集成消息中心组件,个人接收到的系统消息可以进行管理。

# 消息有哪些状态?

消息任务状态

消息服务通过任务形式向终端用户发送消息,一次消息任务既可以单发给一个人,也可以群发给多个人。

消息任务的状态,包括:待发送、定时中、审核中、已发送、草稿、审核未通过、已撤回、超时撤回等;

  • 待发送:已进入消息队列,尚未完成发送任务的消息任务,处于待发送状态。

  • 定时中:消息任务支持定时,定时发送的消息任务,处于定时中状态。

  • 审核中:消息任务支持审核功能,提交审核的消息任务,处于审核中状态。

  • 已发送:发送完成的消息任务,处于已发送状态。

  • 草稿:消息任务支持存为草稿,同时定时中消息任务,支持取消发送,这2种情况的消息任务,处于草稿状态。

  • 审核未通过:审核未通过的消息任务,处于审核未通过状态。

  • 已撤回:审核中消息任务,支持撤回,这种情况的消息任务,被标记为已撤回。

  • 超时撤回:定时发送的消息任务,同样支持审核,如果该消息任务超过了定时时间,仍未审核,将会被撤回,此时被标记为超时撤回。


消息记录状态

消息记录是消息任务发送到每个用户产生的一条记录。消息记录状态只能表示发送到最终用户是成功和失败。

  • 发送成功:用户接收到消息。

  • 发送失败:用户接收不到消息;发送失败记录失败日志。


接收用户消息状态

目前系统消息支持用户在PC/APP(门户/超级APP)双端上进行状态操作管理。

  • 系统消息:接收用户可以在PC/APP 上标记接收到消息已读、未读状态;无用垃圾消息可放到消息回收站;回收站中消息可以进行删除。

# 是否支持手工发送消息?

支持;部门管理员 可以手工发送消息。


# 消息的安全性、稳定性(大并发情况)、可靠性(漏发补发机制)是如何保证的?

安全性

  • 敏感词校验:消息支持敏感词校验;敏感词库会不断迭代更新,用户可以选择性的维护校内敏感词信息。

  • 消息模板规范内容:规定消息发送按照一定格式发送,且消息模板会进行敏感词校验,走流程审核。

  • 消息发送审核:人工发送消息,可以设置流程审核通过才可发送。

--------------- 针对用户 -------------

  • 用户免打扰:根据不同业务,规定业务消息发送时间段。(二期开发)

稳定性

  • 消息队列:消息队列是为了异步+流量削峰,大并发情况下缓冲瞬时流量。

  • 多线程:增加消费能力,防止队列中数据堆积。

  • 分布式多节点:服务可以横向扩展,增加服务节点,提供更高的容错性、稳定性


可靠性

  • 自动重发:发送失败,系统按照倍增时间间隔自动重发。默认重发5次,初始时间间隔2分钟,倍数为2,(2 ,4 ,8,16 ,32 分钟重发,共计5次);可自行设置。

  • 任务审计:通过消息任务审计,对比消息记录,进行查缺补漏,遗漏记录会自动补发;默认审计33分钟 - 7天内所有发送成功的消息任务,时间区间可自行设置。

# 如何为用户添加消息前台登录权限(为前台用户配置发送部门)?

添加步骤如下:

  1. 云平台-授权服务-应用角色,找到【消息发布员】角色;

    图片

    图片

  2. 为【消息发布员】角色授权一个岗位用户组;

    图片

  3. 用户服务-岗位用户组,往刚刚授权的岗位里,加入一个用户,并为用户配置可管理岗位;

    图片

    图片

  4. 这时,使用这个账号登录前台,即可登录成功;

    图片

  5. 新建消息时,发送部门来自刚刚岗位设置的,用户可管理部门;

    图片


# app小铃铛误区

  1. 这里的小铃铛指的是系统消息,不是app推送消息

    图片

  2. app推送消息是在消息通知栏里边显示的,消失后不会留下记录

    图片

# 什么是透传消息,透传消息有什么效果?

app推送消息个推网关,Andriod常见问题基础名词解释-透传模板消息


# 发送相关

消息发送相关问题

# app锁屏消息发送失败,提示账号没有绑定cid?

检查该账号app端是否登录;若已登录还提示改错误,则需联系app开发人员

# 流程代办没有消息

  1. 查看云平台菜单-消息服务-消息日志审计,查找是否有流程表单应用的任务记录,以及任务发送明细的发送状态

  2. 如果没有记录,检查流程对接消息,并查看流程表单sys_message表,查看消息发送接口调用情况

  3. 如果有记录,根据错误信息排查问题


# app推送消息,离线收不到推送消息

在云平台上-找到消息服务-消息日志审计,查看发送记录是否成功 (如果发送成功收不到消息,查看消息类型配置的消息网关,消息网关的intent参数是否有配置,普通通知网关时候要选择第二个,打开应用内页面(StartActivityTemplate))


# 消息发送接口调用成功,但是云平台-消息服务-消息日志审计里找不到记录

可以看一下未发送任务列表,确认一下是否任务是待审核状态,如果是待审核状态,在消息设置里边把审核关闭

图片

图片

  • 查看rancher中 message-service-center 工作负载的日志,是否有对应业务系统的调用记录(有传参打印)。以及查看业务系统调用消息接口后返回的响应信息,是否有报错信息,并根据报错信息进行决绝; (ps:可能是因为appId对应的消息应用被停用;发送方式和messageTypeCode对应的消息类型所配置的发送方式不满足;未传paramValueJson下的模板字段以及值)
  • 如果rancher中 message-service-center 工作负载的日志看不到调用记录,请核实业务系统是否跟消息服务有对接,以及对接是否成功,举例参考:
    认证未发送消息
    流程未发送消息

# 手机没有收到app推送

  • 云平台->消息服务->消息日志审计查看到记录是发送成功的
  • 先检查一下自己的手机设置(包括通知栏弹窗设置,以及app通知设置)
  • 检查消息app网关参数和使用的app的appId,appKey,masterSecret是否一致(可能发到其他app上了)
  • 找app开发协助检查推送下发情况

云平台->消息服务->消息日志审计查看到记录是失败的,根据失败原因排查原因


# app锁屏消息发送失败,提示参数不合法

账号未绑定cid,属于参数不合法的一种,且大部分情况下都是这个原因。


# APP推送问题分析逻辑

  1. 验证消息类型是否配置了app推送网关

  2. 验证消息类型网关配置参数是否正确;intent生成配置见如何生成intent

  3. 验证个推配置的参数是否正确;尤其是个推配置的android和ios证书需要存在

# 认证发送验证码无反应,无记录(认证消息对接)

确认对接应用appId,模板参数(消息模板和短信模板不一样),以及发送方式 对接文档


# 实施相关

实施相关问题

# 容器内部地址怎么获得?

容器内部地址规则如下:

http://<service-name(服务名)>.<namespace(命名空间)>.svc.cluster.local:<port(端口)>/<项目路径(没有可以省略)>

<>内的内容需要依据部署实际情况调整

# 短信额度管理菜单(新版老版)

导入菜单脚本sql


# 流程对接消息

  1. 流程配置开启

  2. 流程配置消息地址

  3. 流程配置消息appid

  4. 消息创建appid和消息类型消息模板

  5. form-flow工作负载里边的映射配置:

MSG_SWITCH(open:开,off:关)
MSG_APP_ID(消息应用appId),
MSG_SERVER_URL(消息发送的接口地址)

注:如果消息服务应用管理没有流程表单应用,可以执行sql (流程表单应用初始化sql) 配置完成后,检查流程图节点是否开启消息,以及配置的消息的发送方式是否满足消息平台的发送方式配置。


# 企业微信 用户不在接受范围

确认企业微信应用后台配置应用接收人权限范围;确认企业微信网关参数,agentId


# 在线发送页面一直刷新

rancher message-page的映射配置里确认有没有key:CAS_TYPE value:auth 的配置参数


# 在线发送页面一直loading,加载不出来

  1. f12打开浏览器控制台-network,查看是否有404或者报错接口(如果有报错接口,核对接口域名以及地址,然后在rancher上修改正确配置)

  2. 查看浏览器地址栏,地址中是否有ticket,,如果有,需要在云平台-认证管理-认证对接配置,搜索消息,尝试修改对接配置


# 云平台菜单不显示消息服务

检查message-route.sql执行情况,以及执行的sql里边的现场环境地址url是否有改


# 部署工作负载报红,ErrImagePull: rpc error:...

检查镜像地址,镜像版本,以及镜像凭证的配置


# oracle用户锁定

执行下边sql解锁

alter user message account unlock


# 如何生成intent

生成新的intent,只需要知道当前项目安卓的包名、和打开地址的全路径(不清楚的问下安卓工程师) 修改XXXX部分,对照上面参考:

intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x04000000;package=XXXXX;component=XXXXXX;S.payload=&{params};end


# 没有根据roleCode和applicationId的接口

升级认证并确认导入yaml,查看poa-docs.xxx.edu.cn里边 授权服务-ROLE-获取应用下的一个角色关联的用户组(https://poa.xxx.edu.cn/apis/authz/v1/application/{applicationId}/role/{rolecode}/groups)有没有这个接口 如果有接口,核实一下执行消息应用角色初始化的sql(应用角色code应该是527,不是80) 消息应用初始化脚本sql

# 确认用户服务接口是否有问题


# 发送部门无数据

  • 打开rancher 找到message-service-manager工作负载日志,有没有bad_gateway,以及404;
  • bad_gateway和404的地址一般情况下都是用户服务的接口问题
  • 确认用户接口没问题
  • 确认云平台角色sql有没有导入,消息平台应用角色有没有创建,
  • 消息应用角色有没有没有配置用户组,配置的用户组里边有没有配置部门范围,用户有没有消息应用角色权限。实施文档 (参考第九步)

# 接口报错

接口报错相关问题

# 消息弹窗报错

f12看浏览器控制台network报错信息


# 接口调用反馈,消息通知和消息类型配置的发送方式不一致

检查传参 sendType:""


# 消息任务未发送接口404 ,批量不限制接口 404

升级消息版本1.6.0以上


# 消息发送接口404或bad_gateway

  1. 检查 https://poa-docs.xxx.edu.cn 是否有messagecenter的接口文档

  2. 如果没有,参考下面文档第三步

https://supwisdom.coding.net/s/3be1c9bb-5e93-47fc-bcb6-a92eab4255cd,查看密码:ym46


# 对接access token获取问题

https://supwisdom.coding.net/s/9a9174e7-6fd5-4b3c-98c7-63e1e2e7f5c4


# poa方式对接消息发送接口,传输token问题

token属于 Authorization 的Bearea token,header 用 Authorization字段传输


# app推送消息个推网关,Andriod常见问题

点击查看


# app推送消息个推网关,iOS常见问题

点击查看


# 消息类型报错:No message available?

将消息版本升级到1.6.0以后的版本


# 进入消息模板后报错:TemplateVariableType类型枚举不存在?

将消息版本升级到1.6.0以后的版本