Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >别的技术团队是怎么用消息推送平台的?

别的技术团队是怎么用消息推送平台的?

作者头像
Java3y
发布于 2023-08-25 01:28:18
发布于 2023-08-25 01:28:18
86100
代码可运行
举报
文章被收录于专栏:Java3yJava3y
运行总次数:0
代码可运行

今天继续聊Java开源项目austin,Gitee 4.8K stars,GitHub 3.8K stars

只要公司内部有发送消息的需求,都应该要有类似austin的项目。消息推送平台对各类消息进行统一发送处理,这有利于对功能的收拢,以及提高业务需求开发的效率。

目前README给出的教程都是基于推送后台的(运营层面),那如果是业务第三方(别的团队技术)是怎么使用的?今天就以实际场景来补下文档。

现在运营给直播团队提了个需求,说要发送主播开播提醒消息邮件这个渠道给到订阅主播的用户。文案为:xxx用户您关注的主播xxx开播啦!赶紧来看:xxx链接

因为公司内部有消息推送平台,所以承接该需求的直播团队技术就会找到消息推送平台的负责人,说要接入消息推送平台来实现这个需求。

创建模板

无论是运营还是技术想要发送消息,都需要在消息推送后台创建模板,有了模板才会有全链路追踪,这是使用平台的前提。

于是直播团队的开发就去消息推送后台创建对应的模板:

这时候直播团队的技术又想了,如果我也想把系统的告警也发邮件通知下,是不是也可以?

现在模板创建完,就已经OK了。

接口文档

目前austin只提供了HTTP接口,没有RPC接口,要用RPC的需要将austin改造下,我相信也不难。一个技术团队里,往往也不止一种技术栈,Java/Python/Go这些语言都是比较常见的,而HTTP接口是通用的,很适合作为平台接口给到第三方去调用。

单文案发送接口

接口解释:相同的文案发给1个或多个用户 接口路径:/send接口参数样例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "code": "string", // 【必填】 发送消息默认填 send
  "messageParam": { // 【必填】
    "extra": {   // 额外的参数,暂无作用
      "key1": "value1"
    },
    "receiver": "string",  // 【必填】 要发送消息的人。如果有多个用,逗号分隔开。最多传100个
    "variables": {  // 【选填,有占位符才需要该参数】 占位符的key和value
      "key1": "value1"
    }
  },
  "messageTemplateId": 0  //【必填】 刚在消息推送后台创建的模板id
}

多文案发送接口

接口解释:不同的文案发给不同的用户 接口路径:/batchSend接口参数样例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "code": "string", // 【必填】 发送消息默认填 send
  "messageParam":[ // 【必填】
    { 
      "extra": {   // 额外的参数,暂无作用
        "key1": "value1"
      },
      "receiver": "string",  // 【必填】 要发送消息的人。如果有多个用,逗号分隔开。最多传100个
      "variables": {  // 【选填,有占位符才需要该参数】 占位符的key和value
        "key1": "value1"
      }
    }
  ],
  "messageTemplateId": 0  //【必填】 刚在消息推送后台创建的模板id
}

调用接口

刚刚创建出来的两个模板分别为514和515:

当调用515的模板(直播订阅)参数可能会如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 调用的是batch接口,因为是不同的人接受到不同的文案

{
    "code": "send",
    "messageParam": [
        {
            "receiver": "123@qq.com",
            "variables": {
                "anchor": "Java3y",
                "user": "小明",
                "url": "https://www.baidu.com/"
            }
        },
        {
            "receiver": "456@qq.com",
            "variables": {
                "anchor": "Java3y",
                "user": "小红",
                "url": "https://www.so.com/"
            }
        }
    ],
    "messageTemplateId": 515
}

variables的key就对应着模板里的占位符:{user}用户您关注的主播{anchor}开播啦!赶紧来看:{

最后下发的文案就是:小红用户您关注的主播Java3y开播啦!赶紧来看:www.so.com链接

当调用514的模板(直播程序告警)参数可能会如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 调用的是send接口,因为是相同的文案发给1到N个人

{
    "code": "send",
    "messageParam": {
        "receiver": "345@qq.com,445@qq.com,444@qq.com",
        "variables": {
            "alarm": "2023-05-13 14:16:04.697 [dynamic-tp1] ERROR c.java3y.austin.handler.handler.impl.EmailHandler - EmailHandler#handler fail!cn.hutool.extra.mail.MailException: Invalid Addresses: null \tat cn.hutool.extra.mail.Mail.send(Mail.java:391) \tat cn.hutool.extra.mail.MailUtil.send(MailUtil.java:416) \tat cn.hutool.extra.mail.MailUtil.send(MailUtil.java:194) \tat cn.hutool.extra.mail.MailUtil.send(MailUtil.java:176) \tat com.java3y.austin.handler.handler.impl.EmailHandler.handler(EmailHandler.java:60) \tat com.java3y.austin.handler.handler.BaseHandler.doHandler(BaseHandler.java:61) \tat com.java3y.austin.handler.pending.Task.run(Task.java:66) \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) \tat java.lang.Thread.run(Thread.java:748) Caused by: com.sun.mail.smtp.SMTPSendFailedException: 550 The recipient may contain a non-existent account, please check the recipient address.  \tat com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388) \tat com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1215) \tat com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:586) \tat javax.mail.Transport.send0(Transport.java:169) \tat javax.mail.Transport.send(Transport.java:98) \tat cn.hutool.extra.mail.Mail.doSend(Mail.java:407) \tat cn.hutool.extra.mail.Mail.send(Mail.java:385) \t... 9 more ,params:TaskInfo(messageTemplateId=515, businessId=2000051520230513, receiver=[123@qq.com], idType=50, sendChannel=40, templateType=20, msgType=10, shieldType=10, contentModel=EmailContentModel(title=主播订阅开播提醒, content=小红用户您关注的主播Java3y开播啦!赶紧来看:www.so.com链接, url=null), sendAccount=373) 2023-05-13 14:16:04.698 [dynamic-tp1] INFO  com.java3y.austin.support.utils.LogUtils - {\"businessId\":2000051520230513,\"ids\":[\"123@qq.com\"],\"logTimestamp\":1683958564698,\"state\":70}"
        }
    },
    "messageTemplateId": 514
}

variables的key就对应着模板里的占位符:{$alarm}

查看调用下发情况

根据下发用户的维度查询:

根据模板的维度查询:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java3y 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信消息推送神器pushplus介绍,让消息推送如此简单
原生实现微信消息推送需要申请公众号、成为开发者,实现微信公众号接入和消息推送等接口。
杨永贞
2022/10/25
12.2K0
微信消息推送神器pushplus介绍,让消息推送如此简单
消息推送平台的设计
第一点:导入消息接收人的数据可以支持excel导入,然后去各个业务线去拉取完整的用户id即可,导入的数据需要分页提交给服务或者分页落库
花落花相惜
2021/11/23
2.5K0
小程序消息推送x微搭低代码,微信消息推送快速上手实操教程
近期有很多同学关注小程序消息推送的问题,今天就简单介绍下微搭低代码开发的小程序应用如何实现微信订阅消息的推送,目前方案有两种:
漫话开发者
2023/01/02
2K0
小程序消息推送x微搭低代码,微信消息推送快速上手实操教程
揭秘!消息管理平台的实现原理
这个系列就以「消息管理平台」来打个样吧,这是我维护近一年的系统了。这篇文章可以带你全面认识「消息管理平台」是怎么设计和实现的,有兴趣的同学欢迎在评论区下留言和交流。
Java3y
2020/09/24
1.6K0
揭秘!消息管理平台的实现原理
【随笔】自动化油价推送:GitHub Actions 实战
在网上找到一个油价网站,http://www.qiyoujiage.com , 定位到自己所在的具体地址,例如:http://www.qiyoujiage.com/hubei/xxx.shtml ,通过 jsoup 抓取关键数据,如 92#-0# 汽油价格等其他自己需要的数据。
框架师
2023/12/16
2070
【随笔】自动化油价推送:GitHub Actions 实战
Spug推送平台:开发者的消息推送神器
外滩首席运维
2025/02/25
1120
Austin消息中心
写这篇文章是首先我之前也是做过消息中心的需求,当时3y开源了它的项目Austin,当时觉得挺好的,之后我负责的消息中心重构了一版,现在想想也挺开心的。所以想把之前学习的整理了下来。
路行的亚洲
2023/08/31
9730
Austin消息中心
带你了解什么是Push消息推送
而Push消息是这么多种类型之中非常重要和常用的一种类型,最近也希望针对Push推送做些新的尝试,于是去学习学习些Push消息运营的技巧。
Java3y
2019/08/29
2.6K0
带你了解什么是Push消息推送
喜马拉雅亿级用户量的离线消息推送系统架构设计实践
对于IM的开发者来说,离线消息推送是再熟悉不过的需求了,比如下图就是典型的IM离线消息通知效果。
JackJiang
2021/07/14
1.4K0
喜马拉雅亿级用户量的离线消息推送系统架构设计实践
Android消息推送:手把手教你集成小米推送
继承自PushMessageReceiver(抽象类,继承自BroadcastReceiver),其作用主要是:
Carson.Ho
2019/02/22
4.7K0
消息推送技术,除了websocket还知道那些?
WebSocket是一种网络通信协议,它提供了在单个TCP连接上进行全双工通信的能力。这意味着数据可以在客户端和服务器之间双向流动,而无需客户端通过轮询或重复请求来获取更新。
老K博客
2024/06/01
7120
消息推送技术,除了websocket还知道那些?
移动端开发之APP消息推送[通俗易懂]
有这样一种场景,当你在手机APP上输入你的信息,会自动跳出一个弹窗,表示某任务已执行。最简单的一个例子就是当你输入手机号,点击获取验证码的时候,就会跳出一个对话框,说“验证码已发送到手机,请注意查收”,这些都是如何实现的。
全栈程序员站长
2022/09/05
3.6K0
移动端开发之APP消息推送[通俗易懂]
如何构建一套高可用的移动消息推送平台?
消息推送作为移动 APP 运营中的一项关键技术,已经被越来越广泛的运用。本文追溯了推送技术的发展历史,剖析了其核心原理,并对推送服务的关键技术进行深入剖析,围绕消息推送时产生的服务不稳定性,消息丢失、延迟,接入复杂性,统计缺失等问题,提供了一整套平台级的高可用消息推送解决方案。实践中,借助于该平台,不仅能提能显著提高消息到达率,还能提高研发效率,并道出了移动开发基础设施的平台化架构思路。
Java3y
2019/09/12
3.2K0
如何构建一套高可用的移动消息推送平台?
微信小程序之订阅消息推送java开发
2019年10月份微信发布了模板消息整改公告由模板消息更改为订阅消息: 具体公告地址:https://developers.weixin.qq.com/community/develop/doc/
猿码优创
2020/06/12
5.1K0
喜马拉雅亿级用户量的离线消息推送系统架构设计实践
对于IM的开发者来说,离线消息推送是再熟悉不过的需求了,比如下图就是典型的IM离线消息通知效果。
JackJiang
2021/07/12
1.1K0
SignalR 中丰富多彩的消息推送方式
在上一篇 SignalR 文章中,演示了如何通过 SignalR 实现了简单的聊天室功能;本着简洁就是美的原则,这一篇我们也来聊聊在 SignalR 中的用户和组的概念,理解这些基础知识有助于更好的开发基于 SignalR 的应用,通过对用户和分组的理解,进一步扩展出对用户和分组的管理,以及消息推送的各种方式,为全面接入 SignalR 做准备。
梁规晓
2019/04/11
1K0
SignalR 中丰富多彩的消息推送方式
小程序消息推送,订阅消息的实现,借助云开发云函数实现定时推送订阅消息功能
由于长期性订阅消息,目前仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。仅就线下公共服务这一点,长期性订阅消息就和大部分开发者无缘了。 所以我们这里只能以使用一次性订阅消息为例。
编程小石头
2022/03/18
2.6K0
小程序消息推送,订阅消息的实现,借助云开发云函数实现定时推送订阅消息功能
小程序订阅消息推送(含源码)java实现小程序推送,springboot实现微信消息推送
至于如何创建模板消息,如果获取模板id我这节就不再讲解,不知道的同学可以查看我上篇文章《借助云开发实现小程序订阅消息和模板消息的推送功能》里面有详细的讲解。
编程小石头
2020/01/05
4.9K0
小程序订阅消息推送(含源码)java实现小程序推送,springboot实现微信消息推送
Java点餐系统和点餐小程序新加微信消息推送功能
我们今天就以排号入座为例,当排号等位的用户被叫号时,会给用户发送一条微信订阅消息。就是在管理点击下图的可入座时,发送订阅消息给用户。
编程小石头
2020/10/11
2.1K0
Hutool该怎么用?
在日常开发中,我们会使用很多工具类来提升项目开发的速度,而国内用的比较多的 Hutool 框架,就是其中之一。
程序猿川子
2024/05/21
2580
Hutool该怎么用?
推荐阅读
相关推荐
微信消息推送神器pushplus介绍,让消息推送如此简单
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验