关于通过多种服务端方法集成MoEngage Web推送通知的技术咨询
MoEngage Web推送多服务端集成指南
1. 不依赖特定服务端技术的集成方法
- 直接调用MoEngage REST API:所有服务端技术都支持HTTP请求,直接用MoEngage的推送、用户管理API完成集成,无需依赖语言专属SDK
- 通用HTTP请求封装:基于MoEngage的API规范,封装一套通用的请求逻辑(比如处理身份验证、payload构造),跨语言复用
- Webhook触发推送:将服务端事件(如用户行为、系统通知)通过Webhook推送给MoEngage,触发预设的推送自动化流程
2. 跨服务端的通用集成原则
- 身份验证必合规:所有请求必须携带
Authorization头,格式为Basic <Base64编码的APP_ID:API_KEY>,确保请求被MoEngage合法接收 - 用户ID统一绑定:将自有网站的用户ID与MoEngage的
customer_id字段一一对应,避免用户数据分散或重复 - Payload结构标准化:严格按照MoEngage官方定义的JSON结构构造请求,必填字段(如
platform、title)不能缺失,可选字段按需添加 - 错误处理与重试:捕获API返回的状态码(401权限错误、400参数错误等),针对临时故障(如5xx错误)实现指数退避重试机制
- 合规性管控:服务端需记录用户订阅状态变更,确保仅向已授权用户推送,符合数据隐私法规要求
3. 不同服务端下的订阅处理与推送实现
订阅状态同步
核心是将前端获取的Web Push订阅信息(endpoint、加密密钥)同步到MoEngage,以下是主流语言的极简实现:
Python(使用requests库)
import requests import base64 APP_ID = "你的MoEngage应用ID" API_KEY = "你的MoEngage API密钥" AUTH_HEADER = f"Basic {base64.b64encode(f'{APP_ID}:{API_KEY}'.encode()).decode()}" def sync_web_push_subscription(user_id, endpoint, p256dh_key, auth_key): api_url = f"https://api-01.moengage.com/v1/{APP_ID}/users/web/subscribe" payload = { "customer_id": user_id, "subscription": { "endpoint": endpoint, "keys": { "p256dh": p256dh_key, "auth": auth_key } } } headers = {"Authorization": AUTH_HEADER, "Content-Type": "application/json"} response = requests.post(api_url, json=payload, headers=headers) return response.status_code == 200
Node.js(使用axios库)
const axios = require('axios'); const { Buffer } = require('node:buffer'); const APP_ID = "你的MoEngage应用ID"; const API_KEY = "你的MoEngage API密钥"; const AUTH_HEADER = `Basic ${Buffer.from(`${APP_ID}:${API_KEY}`).toString('base64')}`; async function syncWebPushSubscription(userId, endpoint, p256dhKey, authKey) { const apiUrl = `https://api-01.moengage.com/v1/${APP_ID}/users/web/subscribe`; const payload = { customer_id: userId, subscription: { endpoint, keys: { p256dh: p256dhKey, auth: authKey } } }; const response = await axios.post(apiUrl, payload, { headers: { Authorization: AUTH_HEADER, 'Content-Type': 'application/json' } }); return response.status === 200; }
发送Web推送通知
通过MoEngage API触发推送,以下是Java的实现示例:
Java(使用OkHttp库)
import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import java.util.Base64; public class MoEngageWebPush { private static final String APP_ID = "你的MoEngage应用ID"; private static final String API_KEY = "你的MoEngage API密钥"; private static final String AUTH_HEADER = "Basic " + Base64.getEncoder().encodeToString((APP_ID + ":" + API_KEY).getBytes()); public static boolean sendWebPush(String userId, String title, String message) throws Exception { OkHttpClient client = new OkHttpClient(); String apiUrl = "https://api-01.moengage.com/v1/" + APP_ID + "/campaigns/trigger"; String payload = String.format(""" { "campaign_type": "push", "audience": {"customer_id": "%s"}, "payload": { "title": "%s", "message": "%s", "platform": "web" } }""", userId, title, message); RequestBody body = RequestBody.create(payload, MediaType.parse("application/json")); Request request = new Request.Builder() .url(apiUrl) .addHeader("Authorization", AUTH_HEADER) .post(body) .build(); try (Response response = client.newCall(request).execute()) { return response.isSuccessful(); } } }
内容的提问来源于stack exchange,提问作者Vishesh Kumar Singh
相关产品推荐
相关产品推荐

