cdp-edge 1.24.1 → 1.24.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -218,8 +218,8 @@ export default {
|
|
|
218
218
|
META_ACCESS_TOKEN: env.META_ACCESS_TOKEN ? 'set' : 'MISSING',
|
|
219
219
|
GA4_API_SECRET: env.GA4_API_SECRET ? 'set' : 'MISSING',
|
|
220
220
|
WA_WEBHOOK_VERIFY_TOKEN: env.WA_WEBHOOK_VERIFY_TOKEN ? 'set' : 'MISSING',
|
|
221
|
-
WHATSAPP_ACCESS_TOKEN: env.WHATSAPP_ACCESS_TOKEN
|
|
222
|
-
WHATSAPP_PHONE_NUMBER_ID: env.WHATSAPP_PHONE_NUMBER_ID ? 'set' : 'not set (optional - only for auto-reply)',
|
|
221
|
+
WHATSAPP_ACCESS_TOKEN: (env.WHATSAPP_ACCESS_TOKEN || env.WA_ACCESS_TOKEN) ? 'set' : 'not set (optional - only for auto-reply)',
|
|
222
|
+
WHATSAPP_PHONE_NUMBER_ID: (env.WHATSAPP_PHONE_NUMBER_ID || env.WA_PHONE_ID) ? 'set' : 'not set (optional - only for auto-reply)',
|
|
223
223
|
WA_NOTIFY_NUMBER: env.WA_NOTIFY_NUMBER ? 'set' : 'not set (optional - only for auto-reply)',
|
|
224
224
|
TIKTOK_ACCESS_TOKEN: env.TIKTOK_ACCESS_TOKEN ? 'set' : 'not set (optional)',
|
|
225
225
|
CALLMEBOT_PHONE: env.CALLMEBOT_PHONE ? 'set' : 'not set (optional)',
|
|
@@ -40,9 +40,19 @@ interface WhatsAppMessage {
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
// ── Resolvedores de secrets (canônico + legado) ────────────────────────────────
|
|
44
|
+
// Meta Cloud API v22.0 usa PHONE_NUMBER_ID e ACCESS_TOKEN como termos oficiais.
|
|
45
|
+
// Suportamos ambos os nomes para compatibilidade com secrets já configurados.
|
|
46
|
+
function resolvePhoneNumberId(env: Env): string | undefined {
|
|
47
|
+
return env.WHATSAPP_PHONE_NUMBER_ID || env.WA_PHONE_ID;
|
|
48
|
+
}
|
|
49
|
+
function resolveAccessToken(env: Env): string | undefined {
|
|
50
|
+
return env.WHATSAPP_ACCESS_TOKEN || env.WA_ACCESS_TOKEN;
|
|
51
|
+
}
|
|
52
|
+
|
|
43
53
|
// ── sendWhatsApp — envia mensagem via Meta Cloud API ──────────────────────────
|
|
44
54
|
export async function sendWhatsApp(env: Env, tipo: string, payload: TrackPayload, options: WhatsAppOptions = {}): Promise<any> {
|
|
45
|
-
if (!env
|
|
55
|
+
if (!resolvePhoneNumberId(env) || !resolveAccessToken(env) || !env.WA_NOTIFY_NUMBER) {
|
|
46
56
|
return { skipped: 'WhatsApp não configurado' };
|
|
47
57
|
}
|
|
48
58
|
|
|
@@ -116,9 +126,11 @@ export async function sendWhatsApp(env: Env, tipo: string, payload: TrackPayload
|
|
|
116
126
|
// ── _sendWARequest — executor interno ─────────────────────────────────────────
|
|
117
127
|
async function _sendWARequest(env: Env, body: Record<string, any>): Promise<any> {
|
|
118
128
|
try {
|
|
119
|
-
const
|
|
129
|
+
const phoneNumberId = resolvePhoneNumberId(env);
|
|
130
|
+
const accessToken = resolveAccessToken(env);
|
|
131
|
+
const res = await fetch(`https://graph.facebook.com/v22.0/${phoneNumberId}/messages`, {
|
|
120
132
|
method: 'POST',
|
|
121
|
-
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${
|
|
133
|
+
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${accessToken}` },
|
|
122
134
|
body: JSON.stringify(body),
|
|
123
135
|
});
|
|
124
136
|
const data = await res.json();
|
|
@@ -33,8 +33,12 @@ export interface Env {
|
|
|
33
33
|
GA4_API_SECRET?: string;
|
|
34
34
|
TIKTOK_ACCESS_TOKEN?: string;
|
|
35
35
|
WA_WEBHOOK_VERIFY_TOKEN?: string;
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
// WhatsApp Cloud API — nomes canônicos (Meta Cloud API v22.0)
|
|
37
|
+
WHATSAPP_ACCESS_TOKEN?: string; // canonical: Bearer token do System User
|
|
38
|
+
WHATSAPP_PHONE_NUMBER_ID?: string; // canonical: ID numérico do número no Meta Business
|
|
39
|
+
// WhatsApp Cloud API — nomes legados (backwards compat)
|
|
40
|
+
WA_ACCESS_TOKEN?: string;
|
|
41
|
+
WA_PHONE_ID?: string;
|
|
38
42
|
WA_NOTIFY_NUMBER?: string;
|
|
39
43
|
CALLMEBOT_PHONE?: string;
|
|
40
44
|
WEBHOOK_SECRET_TICTO?: string;
|