微信公众号如何实现消息推送?

微信公众号可以通过以下几种方式实现消息推送:

1. 模板消息

模板消息是一种允许公众号向用户发送预设格式消息的功能。以下是实现步骤:

步骤一:配置模板消息

  1. 登录微信公众平台,在“功能” -> “模板消息”中添加需要的模板。
  2. 记录下模板ID(Template ID)。

步骤二:获取Access Token

使用AppID和AppSecret获取Access Token:

const axios = require('axios');

async function getAccessToken(appId, appSecret) {
    const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appId}&secret=${appSecret}`;
    const response = await axios.get(url);
    return response.data.access_token;
}

步骤三:发送模板消息

构建请求体并发送消息:

async function sendTemplateMessage(openId, accessToken, templateId, data) {
    const url = `https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=${accessToken}`;

    const postData = {
        touser: openId,
        template_id: templateId,
        url: 'http://www.example.com', // 可选,点击模板卡片后的跳转网页
        data: data
    };

    const response = await axios.post(url, postData);
    return response.data;
}

// 示例调用
const appId = 'YOUR_APP_ID';
const appSecret = 'YOUR_APP_SECRET';
const openId = 'USER_OPEN_ID';
const templateId = 'TEMPLATE_ID';

getAccessToken(appId, appSecret).then(accessToken => {
    sendTemplateMessage(openId, accessToken, templateId, {
        first: { value: '您好,这是一条模板消息', color: '#173177' },
        keyword1: { value: '订单号:123456', color: '#173177' },
        keyword2: { value: '支付金额:¥100', color: '#173177' },
        remark: { value: '感谢您的使用', color: '#173177' }
    }).then(result => {
        console.log(result);
    });
});

2. 客服消息

客服消息允许公众号在48小时内向用户发送任意内容的消息。以下是实现步骤:

步骤一:获取Access Token

同模板消息。

步骤二:发送客服消息

async function sendCustomMessage(openId, accessToken, message) {
    const url = `https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=${accessToken}`;

    const postData = {
        touser: openId,
        msgtype: 'text',
        text: {
            content: message
        }
    };

    const response = await axios.post(url, postData);
    return response.data;
}

// 示例调用
sendCustomMessage(openId, accessToken, '您好,这是一条客服消息').then(result => {
    console.log(result);
});

3. 被动回复消息

当用户向公众号发送消息时,公众号可以自动回复一条消息。以下是实现步骤:

步骤一:验证消息来源

在服务器端设置URL处理微信服务器验证请求。

步骤二:处理用户消息并回复

app.post('/wechat', (req, res) => {
    const { FromUserName, ToUserName, MsgType, Content } = req.body.xml;

    let replyContent = '';
    if (MsgType === 'text') {
        replyContent = `您发送的是:${Content}`;
    }

    const replyXml = `
        <xml>
            <ToUserName><![CDATA[${FromUserName}]]></ToUserName>
            <FromUserName><![CDATA[${ToUserName}]]></FromUserName>
            <CreateTime>${Date.now()}</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content><![CDATA[${replyContent}]]></Content>
        </xml>
    `;

    res.set('Content-Type', 'application/xml');
    res.send(replyXml);
});

注意事项

  • 频率限制
    模板消息和客服消息都有每日发送量的限制,请合理规划使用。
  • 用户体验
    发送的消息应具有实际价值,避免过度打扰用户。
  • 合规性检查
    发送的内容需符合微信平台的规定,不得含有违规信息。

通过以上几种方式,可以有效地实现微信公众号的消息推送功能。希望这些信息对你有所帮助!如有具体问题,请进一步提问。

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我