WhatsApp

解决 WhatsApp 24 小时对话窗口期过期后的模板消息重新激活逻辑WhatsApp Business Cloud API 极简入门与 Token 永久授权指南


解决 WhatsApp 24 小时对话窗口期过期后的模板消息重新激活逻辑WhatsApp Business Cloud API 极简入门与 Token 永久授权指南

痛点描述

在 WhatsApp Business API 中,用户与企业之间的对话窗口期为 24 小时。在此期间,企业可以自由发送消息。但一旦超过 24 小时,企业不能再发送普通消息,必须使用经过预先批准的模板消息。这导致很多企业在用户未及时响应时,无法有效地进行后续沟通,从而影响客户体验和转化率。

核心逻辑

为了解决 WhatsApp 24 小时对话窗口期过期后的模板消息重新激活逻辑,我们需要遵循以下步骤:

  1. 监测对话活动:记录用户的最后消息时间。
  2. 检查窗口期:在用户交互后的 24 小时内,持续监测是否有新的消息。
  3. 使用模板消息:如果超出时间限制,利用已批准的模板消息重新激活用户对话。
  4. 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);
});

高级优化建议

  1. 使用 Webhook:通过 WhatsApp Webhook 监控消息活动,实时更新用户的最后消息时间,减少不必要的 API 调用。
  2. 状态管理:维护用户的状态,避免重复发送相同的模板消息。
  3. A/B 测试:对不同的模板消息效果进行 A/B 测试,优化转化率。
  4. 批量发送:对于多个用户,可以实现批量发送模板消息的功能,提升效率。
方案优势劣势
直接发送模板消息简单易用,快速实现仅限于已批准的模板,灵活性差
监测用户活动并发送提高用户响应率,灵活性高实现复杂,依赖于状态管理
Webhook 监控实时响应用户行为,最优的用户体验需额外配置和维护

通过本指南,您可以有效地解决 WhatsApp 24 小时对话窗口期过期后的模板消息重新激活逻辑,提升您的业务沟通效率。如果您在集成过程中遇到复杂的架构问题,欢迎咨询 apianswer.com 技术团队。

本文由 ApiAnswer 原创。我们在 API 集成、自动化流程和 Telegram Bot 开发领域拥有丰富经验。

遇到技术瓶颈? 获取专家支持