微信公众号推送消息


注册一个微信公众号可以做什么呢?

其实可以做很多事情,比如使用微信公众平台的对接我们自己开发的小助手等功能。

WeChat


1. 微信公众号

主要介绍微信公众号的注册方式!

注册一个 微信公众号,个人也可以注册,只是无法认证。但是,如果是认证的企业微信,还需要一个对应主体备案的域名(很麻烦)。所以,如果个人使用的推荐不认证。

WeChat


2. 接入应用

我们自己的影视更新推送服务需要获取微信公众号的一些配置信息!

这些配置需要和 微信公众号后台 中的保持一致,进入页面后,在左侧菜单选择:设置与开发 -> 开发接口管理 -> 基本配置 -> 服务器配置,按下图进行配置:

WeChat

在公众号后台启用服务器配置并提交,如果保存成功则表示已经成功配置。注意 “服务器地址(URL)” 这一项需要配置为 http://{HOST}/wx 的格式,其中 {HOST} 可以是服务器的 IP 或域名。


3. 测试账号

如果是个人公众号的话,无法使用推送功能,测试账号不错的。

使用微信扫码,申请 公众号测试账户 来测试企业公众号的全部功能。进入页面以后,我们来获取如下代码所需信息,以备后续使用。

WeChat

WeChat

要使用公众号模板消息或订阅消息主动推送的话,需要获取以下两个关键参数:即关注你公众号用户的 OpenID,以及需要发送的 template_id 模版。

含义解释touser 是用户的 OpenID,表示你要推送消息的目标用户。如何获取:需要让用户 关注你的公众号 并与你产生交互(例如发送一条消息),然后你可以通过微信的消息推送或用户列表 API 获取 OpenID

# 方式一:从用户发给你消息中提取
# 用户发送消息给公众号时,微信会把POST请求发给你的服务器(获取OpenID)
msg = parse_message(request.data)
touser = msg.source # 用户的OpenID

# 方式二:用access_token获取所有关注用户的列表
client = WeChatClient(APPID, APPSECRET)
users = client.user.get_followers()
print(users['data']['openid'])  # 列表

含义解释template_id 是你在公众号后台申请的模板消息的 唯一标识如何获取:登录 微信公众平台,点击左侧菜单「模板消息」或「订阅消息」,选择已有模板或申请新的模板,模板名称右侧会显示其 template_id,复制下来使用。

from wechatpy import WeChatClient

APPID = "你的appid"
APPSECRET = "你的secret"

client = WeChatClient(APPID, APPSECRET)

data = {
    "first": {"value": "您好,您有一条提醒!"},
    "keyword1": {"value": "订单已发货"},
    "keyword2": {"value": "2024-05-09"},
    "remark": {"value": "感谢您的支持。"}
}

res = client.message.send_template(
    user_id="用户的openid",
    template_id="你的template_id",
    data=data,
    url="https://yourdomain.com/order"
)

print(res)

4. 服务部署

这里部署,我们自己影视更新推送服务!

公众号目前,只支持 服务器docker 环境部署。我们这里只说下微信公众号的推送认证逻辑,后续可以使用类似于 WeChatPY 这样的封装好的接口,更方便一些。具体更多功能,可以参考微信官方接口文档,或者上述库文档。

1. 验证服务器地址:微信后台将发起 GET 请求验证你的 TokenURL2. 处理消息:用户发送消息,微信会 POST 数据到你配置的 URL;3. 发送响应:你需要返回 XML 响应或调用微信接口主动发送;4. 接入高级功能:如自定义菜单、客服、素材管理等,通过 access_token 接口调用。

1. 获取微信 access_token -> 认证校验

url = "https://api.weixin.qq.com/cgi-bin/token"
params = {
    "grant_type": "client_credential",
    "appid": self.app_id,      # 测试号信息
    "secret": self.app_secret, # 测试号信息
}

2. 构建通知内容 -> 推送模版

message = {
    "touser": openid,
    "template_id": self.template_id,
    "url": "https://www.xxx.org",  # 点击消息跳转的链接
    "data": {
        "update_title": {"value": update_title},
        "update_lens": {"value": update_lens},
        "update_text": {"value": update_text},
        "update_time": {"value": update_time},
        "update_remark": {"value": update_remark},
    },
}

3. 发送模板消息 -> 发送指定客户

url = f"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={access_token}"
with httpx.Client(timeout=10) as client:
    response = client.post(url, json=message_content)

5. 微信使用

使用微信扫码关注,即可开启推送了!

这里我们使用自己的企业微信公众号,或者测试的企业微信公众号。

WeChat


文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !
  目录