前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >别的技术团队是怎么用消息推送平台的?

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

作者头像
Java3y
发布2023-08-25 09:28:18
5970
发布2023-08-25 09:28:18
举报
文章被收录于专栏:Java3yJava3y

今天继续聊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
复制
{
  "code": "string", // 【必填】 发送消息默认填 send
  "messageParam": { // 【必填】
    "extra": {   // 额外的参数,暂无作用
      "key1": "value1"
    },
    "receiver": "string",  // 【必填】 要发送消息的人。如果有多个用,逗号分隔开。最多传100个
    "variables": {  // 【选填,有占位符才需要该参数】 占位符的key和value
      "key1": "value1"
    }
  },
  "messageTemplateId": 0  //【必填】 刚在消息推送后台创建的模板id
}

多文案发送接口

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

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

调用接口

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

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

代码语言:javascript
复制
// 调用的是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
复制
// 调用的是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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建模板
  • 接口文档
    • 单文案发送接口
      • 多文案发送接口
      • 调用接口
      • 查看调用下发情况
      相关产品与服务
      云直播
      云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档