解决 WhatsApp 24 小时对话窗口期过期后的模板消息重新激活逻辑WhatsApp Business Cloud API 极简入门与 Token 永久授权指南
解决 WhatsApp 24 小时对话窗口期过期后的模板消息重新激活逻辑WhatsApp Business Cloud API 极简入门与 Token 永久授权指南
痛点描述
在 WhatsApp Business API 中,用户与企业之间的对话窗口期为 24 小时。在此期间,企业可以自由发送消息。但一旦超过 24 小时,企业不能再发送普通消息,必须使用经过预先批准的模板消息。这导致很多企业在用户未及时响应时,无法有效地进行后续沟通,从而影响客户体验和转化率。
核心逻辑
为了解决 WhatsApp 24 小时对话窗口期过期后的模板消息重新激活逻辑,我们需要遵循以下步骤:
- 监测对话活动:记录用户的最后消息时间。
- 检查窗口期:在用户交互后的 24 小时内,持续监测是否有新的消息。
- 使用模板消息:如果超出时间限制,利用已批准的模板消息重新激活用户对话。
- Token 永久授权:使用 WhatsApp Business Cloud API 的 Token 永久授权,确保在发送模板消息时不受身份验证问题的影响。
Python 代码示例
import requests
import time
# WhatsApp Business API Token
TOKEN = 'YOUR_ACCESS_TOKEN'
API_URL = 'https://graph.facebook.com/v13.0/YOUR_PHONE_NUMBER_ID/messages'
# 发送模板消息函数
def send_template_message(to, template_name):
headers = {
'Authorization': f'Bearer {TOKEN}',
'Content-Type': 'application/json'
}
payload = {
'messaging_product': 'whatsapp',
'to': to,
'type': 'template',
'template': {
'name': template_name,
'language': {'code': 'en_US'}
}
}
response = requests.post(API_URL, headers=headers, json=payload)
return response.json()
# 检查是否需要发送模板消息
def check_and_send_template(user_id, last_message_time):
current_time = time.time()
if current_time - last_message_time > 86400: # 86400 seconds = 24 hours
return send_template_message(user_id, 'your_template_name')
# 示例用户交互
last_message_time = time.time() - 90000 # 模拟最后消息时间为 25 小时前
user_id = 'USER_PHONE_NUMBER'
response = check_and_send_template(user_id, last_message_time)
print(response)
JavaScript 代码示例
const axios = require('axios');
// WhatsApp Business API Token
const TOKEN = 'YOUR_ACCESS_TOKEN';
const API_URL = 'https://graph.facebook.com/v13.0/YOUR_PHONE_NUMBER_ID/messages';
// 发送模板消息函数
async function sendTemplateMessage(to, templateName) {
const headers = {
'Authorization': `Bearer ${TOKEN}`,
'Content-Type': 'application/json'
};
const payload = {
messaging_product: 'whatsapp',
to: to,
type: 'template',
template: {
name: templateName,
language: { code: 'en_US' }
}
};
const response = await axios.post(API_URL, payload, { headers });
return response.data;
}
// 检查是否需要发送模板消息
async function checkAndSendTemplate(userId, lastMessageTime) {
const currentTime = Math.floor(Date.now() / 1000);
if (currentTime - lastMessageTime > 86400) { // 86400 seconds = 24 hours
return await sendTemplateMessage(userId, 'your_template_name');
}
}
// 示例用户交互
const lastMessageTime = Math.floor(Date.now() / 1000) - 90000; // 模拟最后消息时间为 25 小时前
const userId = 'USER_PHONE_NUMBER';
checkAndSendTemplate(userId, lastMessageTime).then(response => {
console.log(response);
});
高级优化建议
- 使用 Webhook:通过 WhatsApp Webhook 监控消息活动,实时更新用户的最后消息时间,减少不必要的 API 调用。
- 状态管理:维护用户的状态,避免重复发送相同的模板消息。
- A/B 测试:对不同的模板消息效果进行 A/B 测试,优化转化率。
- 批量发送:对于多个用户,可以实现批量发送模板消息的功能,提升效率。
| 方案 | 优势 | 劣势 |
|---|---|---|
| 直接发送模板消息 | 简单易用,快速实现 | 仅限于已批准的模板,灵活性差 |
| 监测用户活动并发送 | 提高用户响应率,灵活性高 | 实现复杂,依赖于状态管理 |
| Webhook 监控 | 实时响应用户行为,最优的用户体验 | 需额外配置和维护 |
通过本指南,您可以有效地解决 WhatsApp 24 小时对话窗口期过期后的模板消息重新激活逻辑,提升您的业务沟通效率。如果您在集成过程中遇到复杂的架构问题,欢迎咨询 apianswer.com 技术团队。