@oficialapi/sdk 1.0.1 → 3.0.0
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/README.md +586 -68
- package/dist/index.d.mts +279 -108
- package/dist/index.d.ts +279 -108
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# OficialAPI SDK
|
|
2
2
|
|
|
3
|
-
SDK oficial da OficialAPI para integração
|
|
4
|
-
|
|
3
|
+
SDK oficial da OficialAPI para integração.
|
|
5
4
|
|
|
6
5
|
## 📦 Instalação
|
|
7
6
|
|
|
@@ -27,6 +26,15 @@ const sdk = new OficialAPISDK({
|
|
|
27
26
|
});
|
|
28
27
|
```
|
|
29
28
|
|
|
29
|
+
## 🔐 Autenticação
|
|
30
|
+
|
|
31
|
+
Obtenha o token de acesso e passe-o em cada chamada ao SDK:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
const tokenResponse = await sdk.auth.getToken('client-id', 'client-secret');
|
|
35
|
+
const accessToken = tokenResponse.access_token;
|
|
36
|
+
```
|
|
37
|
+
|
|
30
38
|
## 📚 Exemplos de Uso
|
|
31
39
|
|
|
32
40
|
### WhatsApp
|
|
@@ -38,7 +46,7 @@ const result = await sdk.whatsapp.sendText({
|
|
|
38
46
|
token: 'sk_live_9999999999999999999999999999',
|
|
39
47
|
sender: '5511999999999',
|
|
40
48
|
messageText: 'Olá! Como posso ajudar você hoje?'
|
|
41
|
-
});
|
|
49
|
+
}, accessToken);
|
|
42
50
|
|
|
43
51
|
console.log(result.data.messageId);
|
|
44
52
|
```
|
|
@@ -52,7 +60,7 @@ await sdk.whatsapp.sendMedia({
|
|
|
52
60
|
fileUrl: 'https://example.com/image.jpg',
|
|
53
61
|
type: 'image',
|
|
54
62
|
caption: 'Veja esta imagem!'
|
|
55
|
-
});
|
|
63
|
+
}, accessToken);
|
|
56
64
|
```
|
|
57
65
|
|
|
58
66
|
#### Enviar Template
|
|
@@ -71,7 +79,7 @@ await sdk.whatsapp.sendTemplate({
|
|
|
71
79
|
]
|
|
72
80
|
}
|
|
73
81
|
]
|
|
74
|
-
});
|
|
82
|
+
}, accessToken);
|
|
75
83
|
```
|
|
76
84
|
|
|
77
85
|
#### Enviar Botões
|
|
@@ -97,7 +105,7 @@ await sdk.whatsapp.sendButtons({
|
|
|
97
105
|
}
|
|
98
106
|
}
|
|
99
107
|
]
|
|
100
|
-
});
|
|
108
|
+
}, accessToken);
|
|
101
109
|
```
|
|
102
110
|
|
|
103
111
|
#### Enviar Lista Interativa
|
|
@@ -125,7 +133,7 @@ await sdk.whatsapp.sendList({
|
|
|
125
133
|
]
|
|
126
134
|
}
|
|
127
135
|
]
|
|
128
|
-
});
|
|
136
|
+
}, accessToken);
|
|
129
137
|
```
|
|
130
138
|
|
|
131
139
|
#### Enviar Contato
|
|
@@ -150,7 +158,7 @@ await sdk.whatsapp.sendContact({
|
|
|
150
158
|
]
|
|
151
159
|
}
|
|
152
160
|
]
|
|
153
|
-
});
|
|
161
|
+
}, accessToken);
|
|
154
162
|
```
|
|
155
163
|
|
|
156
164
|
#### Enviar Localização
|
|
@@ -163,7 +171,7 @@ await sdk.whatsapp.sendLocation({
|
|
|
163
171
|
longitude: -46.6333,
|
|
164
172
|
name: 'São Paulo',
|
|
165
173
|
address: 'São Paulo, SP, Brasil'
|
|
166
|
-
});
|
|
174
|
+
}, accessToken);
|
|
167
175
|
```
|
|
168
176
|
|
|
169
177
|
#### Enviar Áudio
|
|
@@ -173,7 +181,7 @@ await sdk.whatsapp.sendAudio({
|
|
|
173
181
|
token: 'sk_live_...',
|
|
174
182
|
sender: '5511999999999',
|
|
175
183
|
audioUrl: 'https://example.com/audio.ogg'
|
|
176
|
-
});
|
|
184
|
+
}, accessToken);
|
|
177
185
|
```
|
|
178
186
|
|
|
179
187
|
#### Enviar Vídeo
|
|
@@ -184,7 +192,7 @@ await sdk.whatsapp.sendVideo({
|
|
|
184
192
|
sender: '5511999999999',
|
|
185
193
|
videoUrl: 'https://example.com/video.mp4',
|
|
186
194
|
caption: 'Veja este vídeo!'
|
|
187
|
-
});
|
|
195
|
+
}, accessToken);
|
|
188
196
|
```
|
|
189
197
|
|
|
190
198
|
#### Enviar Documento
|
|
@@ -196,7 +204,7 @@ await sdk.whatsapp.sendDocument({
|
|
|
196
204
|
documentUrl: 'https://example.com/document.pdf',
|
|
197
205
|
filename: 'documento.pdf',
|
|
198
206
|
caption: 'Aqui está o documento'
|
|
199
|
-
});
|
|
207
|
+
}, accessToken);
|
|
200
208
|
```
|
|
201
209
|
|
|
202
210
|
#### Enviar Pedido com Opções de Pagamento
|
|
@@ -226,17 +234,106 @@ await sdk.whatsapp.sendOrderDetails({
|
|
|
226
234
|
name: 'Cartão de Crédito'
|
|
227
235
|
}
|
|
228
236
|
]
|
|
229
|
-
});
|
|
237
|
+
}, accessToken);
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
#### Atualizar Status do Pedido
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
await sdk.whatsapp.sendOrderStatus({
|
|
244
|
+
token: 'sk_live_...',
|
|
245
|
+
sender: '5511999999999',
|
|
246
|
+
orderId: 'ORDER123',
|
|
247
|
+
status: 'SHIPPED',
|
|
248
|
+
messageText: 'Seu pedido foi enviado!'
|
|
249
|
+
}, accessToken);
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
#### Enviar Sticker
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
await sdk.whatsapp.sendSticker({
|
|
256
|
+
token: 'sk_live_...',
|
|
257
|
+
sender: '5511999999999',
|
|
258
|
+
stickerUrl: 'https://example.com/sticker.webp'
|
|
259
|
+
}, accessToken);
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
#### Solicitar Localização
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
await sdk.whatsapp.sendLocationRequest({
|
|
266
|
+
token: 'sk_live_...',
|
|
267
|
+
sender: '5511999999999',
|
|
268
|
+
messageText: 'Por favor, compartilhe sua localização'
|
|
269
|
+
}, accessToken);
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
#### Enviar Mensagem com Botão CTA URL
|
|
273
|
+
|
|
274
|
+
```typescript
|
|
275
|
+
await sdk.whatsapp.sendCtaUrl({
|
|
276
|
+
token: 'sk_live_...',
|
|
277
|
+
sender: '5511999999999',
|
|
278
|
+
messageText: 'Confira nosso site!',
|
|
279
|
+
buttonText: 'Acessar',
|
|
280
|
+
url: 'https://example.com'
|
|
281
|
+
}, accessToken);
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
#### Enviar Carrossel de Mídia
|
|
285
|
+
|
|
286
|
+
```typescript
|
|
287
|
+
await sdk.whatsapp.sendMediaCarousel({
|
|
288
|
+
token: 'sk_live_...',
|
|
289
|
+
sender: '5511999999999',
|
|
290
|
+
cards: [
|
|
291
|
+
{
|
|
292
|
+
card_index: 0,
|
|
293
|
+
media: { link: 'https://example.com/image1.jpg' },
|
|
294
|
+
title: 'Produto 1',
|
|
295
|
+
description: 'Descrição do produto 1',
|
|
296
|
+
actions: [{ type: 'link', value: 'https://example.com/product1' }]
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
card_index: 1,
|
|
300
|
+
media: { link: 'https://example.com/image2.jpg' },
|
|
301
|
+
title: 'Produto 2',
|
|
302
|
+
description: 'Descrição do produto 2',
|
|
303
|
+
actions: [{ type: 'link', value: 'https://example.com/product2' }]
|
|
304
|
+
}
|
|
305
|
+
]
|
|
306
|
+
}, accessToken);
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
#### Responder Mensagem
|
|
310
|
+
|
|
311
|
+
```typescript
|
|
312
|
+
await sdk.whatsapp.replyMessage({
|
|
313
|
+
token: 'sk_live_...',
|
|
314
|
+
messageId: 'wamid.xxx',
|
|
315
|
+
messageText: 'Esta é uma resposta!'
|
|
316
|
+
}, accessToken);
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
#### Reagir a Mensagem
|
|
320
|
+
|
|
321
|
+
```typescript
|
|
322
|
+
await sdk.whatsapp.reactMessage({
|
|
323
|
+
token: 'sk_live_...',
|
|
324
|
+
messageId: 'wamid.xxx',
|
|
325
|
+
emoji: '👍'
|
|
326
|
+
}, accessToken);
|
|
230
327
|
```
|
|
231
328
|
|
|
232
329
|
#### Gerenciar Templates
|
|
233
330
|
|
|
234
331
|
```typescript
|
|
235
332
|
// Listar templates
|
|
236
|
-
const templates = await sdk.whatsapp.listTemplates('sk_live_...');
|
|
333
|
+
const templates = await sdk.whatsapp.listTemplates('sk_live_...', accessToken);
|
|
237
334
|
|
|
238
335
|
// Obter detalhes de um template
|
|
239
|
-
const template = await sdk.whatsapp.getTemplate('sk_live_...', 'template_id');
|
|
336
|
+
const template = await sdk.whatsapp.getTemplate('sk_live_...', 'template_id', accessToken);
|
|
240
337
|
|
|
241
338
|
// Criar template
|
|
242
339
|
await sdk.whatsapp.createTemplate({
|
|
@@ -250,7 +347,7 @@ await sdk.whatsapp.createTemplate({
|
|
|
250
347
|
text: 'Olá {{1}}! Bem-vindo ao nosso serviço.'
|
|
251
348
|
}
|
|
252
349
|
]
|
|
253
|
-
});
|
|
350
|
+
}, accessToken);
|
|
254
351
|
|
|
255
352
|
// Upload de mídia para template
|
|
256
353
|
const file = new File(['...'], 'image.jpg', { type: 'image/jpeg' });
|
|
@@ -258,7 +355,7 @@ await sdk.whatsapp.uploadMedia({
|
|
|
258
355
|
token: 'sk_live_...',
|
|
259
356
|
file: file,
|
|
260
357
|
filename: 'image.jpg'
|
|
261
|
-
});
|
|
358
|
+
}, accessToken);
|
|
262
359
|
```
|
|
263
360
|
|
|
264
361
|
### Telegram
|
|
@@ -271,7 +368,7 @@ await sdk.telegram.sendMessage({
|
|
|
271
368
|
chatId: '123456789',
|
|
272
369
|
text: 'Olá! Como posso ajudar?',
|
|
273
370
|
parseMode: 'HTML'
|
|
274
|
-
});
|
|
371
|
+
}, accessToken);
|
|
275
372
|
```
|
|
276
373
|
|
|
277
374
|
#### Enviar Mídia
|
|
@@ -283,7 +380,7 @@ await sdk.telegram.sendMedia({
|
|
|
283
380
|
fileUrl: 'https://example.com/image.jpg',
|
|
284
381
|
type: 'photo',
|
|
285
382
|
caption: 'Veja esta imagem!'
|
|
286
|
-
});
|
|
383
|
+
}, accessToken);
|
|
287
384
|
```
|
|
288
385
|
|
|
289
386
|
#### Enviar Botões
|
|
@@ -299,7 +396,7 @@ await sdk.telegram.sendButtons({
|
|
|
299
396
|
{ text: 'Opção 2', callback_data: 'option2' }
|
|
300
397
|
]
|
|
301
398
|
]
|
|
302
|
-
});
|
|
399
|
+
}, accessToken);
|
|
303
400
|
```
|
|
304
401
|
|
|
305
402
|
#### Enviar Localização
|
|
@@ -310,7 +407,7 @@ await sdk.telegram.sendLocation({
|
|
|
310
407
|
chatId: '123456789',
|
|
311
408
|
latitude: -23.5505,
|
|
312
409
|
longitude: -46.6333
|
|
313
|
-
});
|
|
410
|
+
}, accessToken);
|
|
314
411
|
```
|
|
315
412
|
|
|
316
413
|
#### Enviar Contato
|
|
@@ -322,7 +419,7 @@ await sdk.telegram.sendContact({
|
|
|
322
419
|
phoneNumber: '+5511999999999',
|
|
323
420
|
firstName: 'João',
|
|
324
421
|
lastName: 'Silva'
|
|
325
|
-
});
|
|
422
|
+
}, accessToken);
|
|
326
423
|
```
|
|
327
424
|
|
|
328
425
|
#### Enviar Enquete
|
|
@@ -333,8 +430,118 @@ await sdk.telegram.sendPoll({
|
|
|
333
430
|
chatId: '123456789',
|
|
334
431
|
question: 'Qual sua cor favorita?',
|
|
335
432
|
options: ['Vermelho', 'Azul', 'Verde'],
|
|
336
|
-
isAnonymous: false
|
|
337
|
-
|
|
433
|
+
isAnonymous: false,
|
|
434
|
+
type: 'quiz',
|
|
435
|
+
correctOptionId: 1
|
|
436
|
+
}, accessToken);
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
#### Enviar Venue (Local)
|
|
440
|
+
|
|
441
|
+
```typescript
|
|
442
|
+
await sdk.telegram.sendVenue({
|
|
443
|
+
token: 'sk_live_...',
|
|
444
|
+
chatId: '123456789',
|
|
445
|
+
latitude: -23.5505,
|
|
446
|
+
longitude: -46.6333,
|
|
447
|
+
title: 'Restaurante XYZ',
|
|
448
|
+
address: 'Rua ABC, 123, São Paulo'
|
|
449
|
+
}, accessToken);
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
#### Enviar Dado/Emoji Animado
|
|
453
|
+
|
|
454
|
+
```typescript
|
|
455
|
+
await sdk.telegram.sendDice({
|
|
456
|
+
token: 'sk_live_...',
|
|
457
|
+
chatId: '123456789',
|
|
458
|
+
emoji: '🎲'
|
|
459
|
+
}, accessToken);
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
#### Enviar Sticker
|
|
463
|
+
|
|
464
|
+
```typescript
|
|
465
|
+
await sdk.telegram.sendSticker({
|
|
466
|
+
token: 'sk_live_...',
|
|
467
|
+
chatId: '123456789',
|
|
468
|
+
stickerUrl: 'https://example.com/sticker.webp'
|
|
469
|
+
}, accessToken);
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
#### Enviar Voz
|
|
473
|
+
|
|
474
|
+
```typescript
|
|
475
|
+
await sdk.telegram.sendVoice({
|
|
476
|
+
token: 'sk_live_...',
|
|
477
|
+
chatId: '123456789',
|
|
478
|
+
voiceUrl: 'https://example.com/voice.ogg',
|
|
479
|
+
caption: 'Mensagem de voz',
|
|
480
|
+
duration: 30
|
|
481
|
+
}, accessToken);
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
#### Enviar Video Note
|
|
485
|
+
|
|
486
|
+
```typescript
|
|
487
|
+
await sdk.telegram.sendVideoNote({
|
|
488
|
+
token: 'sk_live_...',
|
|
489
|
+
chatId: '123456789',
|
|
490
|
+
videoNoteUrl: 'https://example.com/video_note.mp4',
|
|
491
|
+
duration: 10,
|
|
492
|
+
length: 360
|
|
493
|
+
}, accessToken);
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
#### Enviar Grupo de Mídia
|
|
497
|
+
|
|
498
|
+
```typescript
|
|
499
|
+
await sdk.telegram.sendMediaGroup({
|
|
500
|
+
token: 'sk_live_...',
|
|
501
|
+
chatId: '123456789',
|
|
502
|
+
media: [
|
|
503
|
+
{ type: 'photo', media: 'https://example.com/image1.jpg', caption: 'Imagem 1' },
|
|
504
|
+
{ type: 'photo', media: 'https://example.com/image2.jpg', caption: 'Imagem 2' }
|
|
505
|
+
]
|
|
506
|
+
}, accessToken);
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
#### Enviar Teclado de Resposta
|
|
510
|
+
|
|
511
|
+
```typescript
|
|
512
|
+
await sdk.telegram.sendReplyKeyboard({
|
|
513
|
+
token: 'sk_live_...',
|
|
514
|
+
chatId: '123456789',
|
|
515
|
+
text: 'Escolha uma opção:',
|
|
516
|
+
keyboard: [
|
|
517
|
+
[{ text: 'Opção 1' }, { text: 'Opção 2' }],
|
|
518
|
+
[{ text: 'Opção 3' }]
|
|
519
|
+
],
|
|
520
|
+
resizeKeyboard: true,
|
|
521
|
+
oneTimeKeyboard: true
|
|
522
|
+
}, accessToken);
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
#### Editar Mensagem
|
|
526
|
+
|
|
527
|
+
```typescript
|
|
528
|
+
await sdk.telegram.editMessage({
|
|
529
|
+
token: 'sk_live_...',
|
|
530
|
+
chatId: '123456789',
|
|
531
|
+
messageId: 123,
|
|
532
|
+
text: 'Mensagem editada!',
|
|
533
|
+
parseMode: 'HTML'
|
|
534
|
+
}, accessToken);
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
#### Deletar Mensagem
|
|
538
|
+
|
|
539
|
+
```typescript
|
|
540
|
+
await sdk.telegram.deleteMessage({
|
|
541
|
+
token: 'sk_live_...',
|
|
542
|
+
chatId: '123456789',
|
|
543
|
+
messageId: 123
|
|
544
|
+
}, accessToken);
|
|
338
545
|
```
|
|
339
546
|
|
|
340
547
|
### WebChat
|
|
@@ -346,7 +553,7 @@ await sdk.webchat.sendText({
|
|
|
346
553
|
token: 'sk_live_...',
|
|
347
554
|
sender: 'user123',
|
|
348
555
|
messageText: 'Olá!'
|
|
349
|
-
});
|
|
556
|
+
}, accessToken);
|
|
350
557
|
```
|
|
351
558
|
|
|
352
559
|
#### Enviar Card
|
|
@@ -365,7 +572,46 @@ await sdk.webchat.sendCard({
|
|
|
365
572
|
value: 'https://example.com/product'
|
|
366
573
|
}
|
|
367
574
|
]
|
|
368
|
-
});
|
|
575
|
+
}, accessToken);
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
#### Enviar Mídia
|
|
579
|
+
|
|
580
|
+
```typescript
|
|
581
|
+
await sdk.webchat.sendMedia({
|
|
582
|
+
token: 'sk_live_...',
|
|
583
|
+
sender: 'user123',
|
|
584
|
+
fileUrl: 'https://example.com/image.jpg',
|
|
585
|
+
type: 'image',
|
|
586
|
+
caption: 'Veja esta imagem!'
|
|
587
|
+
}, accessToken);
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
#### Enviar Carousel
|
|
591
|
+
|
|
592
|
+
```typescript
|
|
593
|
+
await sdk.webchat.sendCarousel({
|
|
594
|
+
token: 'sk_live_...',
|
|
595
|
+
sender: 'user123',
|
|
596
|
+
cards: [
|
|
597
|
+
{
|
|
598
|
+
title: 'Produto 1',
|
|
599
|
+
description: 'Descrição do produto 1',
|
|
600
|
+
imageUrl: 'https://example.com/product1.jpg',
|
|
601
|
+
buttons: [
|
|
602
|
+
{ type: 'url', title: 'Ver Mais', value: 'https://example.com/product1' }
|
|
603
|
+
]
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
title: 'Produto 2',
|
|
607
|
+
description: 'Descrição do produto 2',
|
|
608
|
+
imageUrl: 'https://example.com/product2.jpg',
|
|
609
|
+
buttons: [
|
|
610
|
+
{ type: 'url', title: 'Ver Mais', value: 'https://example.com/product2' }
|
|
611
|
+
]
|
|
612
|
+
}
|
|
613
|
+
]
|
|
614
|
+
}, accessToken);
|
|
369
615
|
```
|
|
370
616
|
|
|
371
617
|
#### Enviar Formulário
|
|
@@ -390,7 +636,36 @@ await sdk.webchat.sendForm({
|
|
|
390
636
|
}
|
|
391
637
|
],
|
|
392
638
|
submitButtonText: 'Enviar'
|
|
393
|
-
});
|
|
639
|
+
}, accessToken);
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
#### Enviar Quick Replies
|
|
643
|
+
|
|
644
|
+
```typescript
|
|
645
|
+
await sdk.webchat.sendQuickReplies({
|
|
646
|
+
token: 'sk_live_...',
|
|
647
|
+
sender: 'user123',
|
|
648
|
+
messageText: 'Como podemos ajudar?',
|
|
649
|
+
quickReplies: [
|
|
650
|
+
{ type: 'text', title: 'Suporte', payload: 'SUPPORT' },
|
|
651
|
+
{ type: 'text', title: 'Vendas', payload: 'SALES' },
|
|
652
|
+
{ type: 'location', title: 'Compartilhar Localização' }
|
|
653
|
+
]
|
|
654
|
+
}, accessToken);
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
#### Enviar Botões
|
|
658
|
+
|
|
659
|
+
```typescript
|
|
660
|
+
await sdk.webchat.sendButtons({
|
|
661
|
+
token: 'sk_live_...',
|
|
662
|
+
sender: 'user123',
|
|
663
|
+
messageText: 'Escolha uma opção:',
|
|
664
|
+
buttons: [
|
|
665
|
+
{ type: 'url', title: 'Visitar Site', value: 'https://example.com' },
|
|
666
|
+
{ type: 'postback', title: 'Falar com Atendente', value: 'HUMAN_AGENT' }
|
|
667
|
+
]
|
|
668
|
+
}, accessToken);
|
|
394
669
|
```
|
|
395
670
|
|
|
396
671
|
### Facebook
|
|
@@ -402,7 +677,7 @@ const posts = await sdk.facebook.listPosts({
|
|
|
402
677
|
token: 'sk_live_...',
|
|
403
678
|
pageId: 'page_id',
|
|
404
679
|
limit: 10
|
|
405
|
-
});
|
|
680
|
+
}, accessToken);
|
|
406
681
|
```
|
|
407
682
|
|
|
408
683
|
#### Criar Post
|
|
@@ -413,17 +688,132 @@ await sdk.facebook.createPost({
|
|
|
413
688
|
pageId: 'page_id',
|
|
414
689
|
message: 'Novo post!',
|
|
415
690
|
link: 'https://example.com'
|
|
416
|
-
});
|
|
691
|
+
}, accessToken);
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
#### Listar Comentários
|
|
695
|
+
|
|
696
|
+
```typescript
|
|
697
|
+
const comments = await sdk.facebook.listComments({
|
|
698
|
+
token: 'sk_live_...',
|
|
699
|
+
postId: 'post_id',
|
|
700
|
+
limit: 20
|
|
701
|
+
}, accessToken);
|
|
702
|
+
```
|
|
703
|
+
|
|
704
|
+
#### Responder Comentário
|
|
705
|
+
|
|
706
|
+
```typescript
|
|
707
|
+
await sdk.facebook.replyComment({
|
|
708
|
+
token: 'sk_live_...',
|
|
709
|
+
commentId: 'comment_id',
|
|
710
|
+
message: 'Obrigado pelo comentário!'
|
|
711
|
+
}, accessToken);
|
|
417
712
|
```
|
|
418
713
|
|
|
419
|
-
####
|
|
714
|
+
#### Deletar Comentário
|
|
715
|
+
|
|
716
|
+
```typescript
|
|
717
|
+
await sdk.facebook.deleteComment({
|
|
718
|
+
token: 'sk_live_...',
|
|
719
|
+
commentId: 'comment_id'
|
|
720
|
+
}, accessToken);
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
#### Enviar Mensagem de Texto
|
|
420
724
|
|
|
421
725
|
```typescript
|
|
422
726
|
await sdk.facebook.sendText({
|
|
423
727
|
token: 'sk_live_...',
|
|
424
728
|
recipientId: 'user_id',
|
|
425
729
|
message: 'Olá!'
|
|
426
|
-
});
|
|
730
|
+
}, accessToken);
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
#### Enviar Mídia
|
|
734
|
+
|
|
735
|
+
```typescript
|
|
736
|
+
await sdk.facebook.sendMedia({
|
|
737
|
+
token: 'sk_live_...',
|
|
738
|
+
recipientId: 'user_id',
|
|
739
|
+
fileUrl: 'https://example.com/image.jpg',
|
|
740
|
+
type: 'image',
|
|
741
|
+
caption: 'Veja esta imagem!'
|
|
742
|
+
}, accessToken);
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
#### Enviar Botões
|
|
746
|
+
|
|
747
|
+
```typescript
|
|
748
|
+
await sdk.facebook.sendButtons({
|
|
749
|
+
token: 'sk_live_...',
|
|
750
|
+
recipientId: 'user_id',
|
|
751
|
+
message: 'Escolha uma opção:',
|
|
752
|
+
buttons: [
|
|
753
|
+
{ type: 'web_url', title: 'Visitar Site', url: 'https://example.com' },
|
|
754
|
+
{ type: 'postback', title: 'Opção', payload: 'OPTION_1' }
|
|
755
|
+
]
|
|
756
|
+
}, accessToken);
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
#### Enviar Sticker
|
|
760
|
+
|
|
761
|
+
```typescript
|
|
762
|
+
await sdk.facebook.sendSticker({
|
|
763
|
+
token: 'sk_live_...',
|
|
764
|
+
recipientId: 'user_id',
|
|
765
|
+
stickerId: 369239263222822
|
|
766
|
+
}, accessToken);
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
#### Responder Mensagem
|
|
770
|
+
|
|
771
|
+
```typescript
|
|
772
|
+
await sdk.facebook.replyMessage({
|
|
773
|
+
token: 'sk_live_...',
|
|
774
|
+
messageId: 'message_id',
|
|
775
|
+
message: 'Esta é uma resposta!'
|
|
776
|
+
}, accessToken);
|
|
777
|
+
```
|
|
778
|
+
|
|
779
|
+
#### Responder com Mídia
|
|
780
|
+
|
|
781
|
+
```typescript
|
|
782
|
+
await sdk.facebook.replyMedia({
|
|
783
|
+
token: 'sk_live_...',
|
|
784
|
+
messageId: 'message_id',
|
|
785
|
+
fileUrl: 'https://example.com/image.jpg',
|
|
786
|
+
type: 'image',
|
|
787
|
+
caption: 'Aqui está!'
|
|
788
|
+
}, accessToken);
|
|
789
|
+
```
|
|
790
|
+
|
|
791
|
+
#### Compartilhar Post do Instagram
|
|
792
|
+
|
|
793
|
+
```typescript
|
|
794
|
+
await sdk.facebook.sharePost({
|
|
795
|
+
token: 'sk_live_...',
|
|
796
|
+
mediaId: 'media_id',
|
|
797
|
+
recipientId: 'user_id'
|
|
798
|
+
}, accessToken);
|
|
799
|
+
```
|
|
800
|
+
|
|
801
|
+
#### Obter Perfil de Usuário
|
|
802
|
+
|
|
803
|
+
```typescript
|
|
804
|
+
const userProfile = await sdk.facebook.getUserProfile({
|
|
805
|
+
token: 'sk_live_...',
|
|
806
|
+
userId: 'user_id'
|
|
807
|
+
}, accessToken);
|
|
808
|
+
```
|
|
809
|
+
|
|
810
|
+
#### Obter Perfil de Página
|
|
811
|
+
|
|
812
|
+
```typescript
|
|
813
|
+
const pageProfile = await sdk.facebook.getPageProfile({
|
|
814
|
+
token: 'sk_live_...',
|
|
815
|
+
pageId: 'page_id'
|
|
816
|
+
}, accessToken);
|
|
427
817
|
```
|
|
428
818
|
|
|
429
819
|
### Instagram
|
|
@@ -435,7 +825,7 @@ await sdk.instagram.sendText({
|
|
|
435
825
|
token: 'sk_live_...',
|
|
436
826
|
recipientId: 'user_id',
|
|
437
827
|
message: 'Olá!'
|
|
438
|
-
});
|
|
828
|
+
}, accessToken);
|
|
439
829
|
```
|
|
440
830
|
|
|
441
831
|
#### Enviar Mídia
|
|
@@ -447,7 +837,7 @@ await sdk.instagram.sendMedia({
|
|
|
447
837
|
fileUrl: 'https://example.com/image.jpg',
|
|
448
838
|
type: 'image',
|
|
449
839
|
caption: 'Veja esta imagem!'
|
|
450
|
-
});
|
|
840
|
+
}, accessToken);
|
|
451
841
|
```
|
|
452
842
|
|
|
453
843
|
#### Enviar Resposta Privada a Comentário
|
|
@@ -457,56 +847,194 @@ await sdk.instagram.sendPrivateReply({
|
|
|
457
847
|
token: 'sk_live_...',
|
|
458
848
|
commentId: 'comment_id',
|
|
459
849
|
message: 'Obrigado pelo comentário!'
|
|
460
|
-
});
|
|
850
|
+
}, accessToken);
|
|
461
851
|
```
|
|
462
852
|
|
|
463
|
-
|
|
853
|
+
#### Enviar Múltiplas Imagens (Carrossel)
|
|
464
854
|
|
|
465
|
-
|
|
855
|
+
```typescript
|
|
856
|
+
await sdk.instagram.sendImages({
|
|
857
|
+
token: 'sk_live_...',
|
|
858
|
+
recipientId: 'user_id',
|
|
859
|
+
images: [
|
|
860
|
+
{ url: 'https://example.com/image1.jpg', caption: 'Imagem 1' },
|
|
861
|
+
{ url: 'https://example.com/image2.jpg', caption: 'Imagem 2' },
|
|
862
|
+
{ url: 'https://example.com/image3.jpg', caption: 'Imagem 3' }
|
|
863
|
+
]
|
|
864
|
+
}, accessToken);
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
#### Enviar Sticker (Like Heart)
|
|
466
868
|
|
|
467
869
|
```typescript
|
|
468
|
-
|
|
469
|
-
|
|
870
|
+
await sdk.instagram.sendSticker({
|
|
871
|
+
token: 'sk_live_...',
|
|
872
|
+
recipientId: 'user_id',
|
|
873
|
+
stickerType: 'heart'
|
|
874
|
+
}, accessToken);
|
|
470
875
|
```
|
|
471
876
|
|
|
472
|
-
|
|
877
|
+
#### Reagir a Mensagem
|
|
473
878
|
|
|
474
|
-
|
|
879
|
+
```typescript
|
|
880
|
+
await sdk.instagram.reactMessage({
|
|
881
|
+
token: 'sk_live_...',
|
|
882
|
+
messageId: 'message_id',
|
|
883
|
+
reactionType: 'love'
|
|
884
|
+
}, accessToken);
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
#### Remover Reação
|
|
475
888
|
|
|
476
889
|
```typescript
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
890
|
+
await sdk.instagram.removeReaction({
|
|
891
|
+
token: 'sk_live_...',
|
|
892
|
+
recipientId: 'user_id',
|
|
893
|
+
messageId: 'message_id'
|
|
894
|
+
}, accessToken);
|
|
481
895
|
```
|
|
482
896
|
|
|
483
|
-
|
|
897
|
+
#### Enviar Quick Replies
|
|
484
898
|
|
|
485
|
-
|
|
899
|
+
```typescript
|
|
900
|
+
await sdk.instagram.sendQuickReplies({
|
|
901
|
+
token: 'sk_live_...',
|
|
902
|
+
recipientId: 'user_id',
|
|
903
|
+
message: 'Como podemos ajudar?',
|
|
904
|
+
quickReplies: [
|
|
905
|
+
{ content_type: 'text', title: 'Suporte', payload: 'SUPPORT' },
|
|
906
|
+
{ content_type: 'text', title: 'Vendas', payload: 'SALES' }
|
|
907
|
+
]
|
|
908
|
+
}, accessToken);
|
|
909
|
+
```
|
|
486
910
|
|
|
487
|
-
|
|
488
|
-
2. Renova o token quando necessário
|
|
489
|
-
3. Adiciona o token em todas as requisições
|
|
911
|
+
#### Enviar Template Genérico (Carrossel)
|
|
490
912
|
|
|
491
|
-
|
|
913
|
+
```typescript
|
|
914
|
+
await sdk.instagram.sendGenericTemplate({
|
|
915
|
+
token: 'sk_live_...',
|
|
916
|
+
recipientId: 'user_id',
|
|
917
|
+
elements: [
|
|
918
|
+
{
|
|
919
|
+
title: 'Produto 1',
|
|
920
|
+
subtitle: 'R$ 99,90',
|
|
921
|
+
image_url: 'https://example.com/product1.jpg',
|
|
922
|
+
buttons: [
|
|
923
|
+
{ type: 'web_url', title: 'Ver Mais', url: 'https://example.com/product1' },
|
|
924
|
+
{ type: 'postback', title: 'Comprar', payload: 'BUY_1' }
|
|
925
|
+
]
|
|
926
|
+
},
|
|
927
|
+
{
|
|
928
|
+
title: 'Produto 2',
|
|
929
|
+
subtitle: 'R$ 149,90',
|
|
930
|
+
image_url: 'https://example.com/product2.jpg',
|
|
931
|
+
buttons: [
|
|
932
|
+
{ type: 'web_url', title: 'Ver Mais', url: 'https://example.com/product2' },
|
|
933
|
+
{ type: 'postback', title: 'Comprar', payload: 'BUY_2' }
|
|
934
|
+
]
|
|
935
|
+
}
|
|
936
|
+
]
|
|
937
|
+
}, accessToken);
|
|
938
|
+
```
|
|
939
|
+
|
|
940
|
+
#### Enviar Template de Botões
|
|
492
941
|
|
|
493
942
|
```typescript
|
|
494
|
-
sdk.
|
|
943
|
+
await sdk.instagram.sendButtonTemplate({
|
|
944
|
+
token: 'sk_live_...',
|
|
945
|
+
recipientId: 'user_id',
|
|
946
|
+
text: 'O que você gostaria de fazer?',
|
|
947
|
+
buttons: [
|
|
948
|
+
{ type: 'web_url', title: 'Visitar Site', url: 'https://example.com' },
|
|
949
|
+
{ type: 'postback', title: 'Falar com Atendente', payload: 'HUMAN_AGENT' }
|
|
950
|
+
]
|
|
951
|
+
}, accessToken);
|
|
495
952
|
```
|
|
496
953
|
|
|
497
|
-
|
|
954
|
+
#### Enviar Ação do Remetente (Typing, Seen)
|
|
498
955
|
|
|
499
956
|
```typescript
|
|
500
|
-
|
|
957
|
+
// Mostrar "digitando..."
|
|
958
|
+
await sdk.instagram.sendSenderAction({
|
|
959
|
+
token: 'sk_live_...',
|
|
960
|
+
recipientId: 'user_id',
|
|
961
|
+
action: 'typing_on'
|
|
962
|
+
}, accessToken);
|
|
963
|
+
|
|
964
|
+
// Parar de mostrar "digitando..."
|
|
965
|
+
await sdk.instagram.sendSenderAction({
|
|
966
|
+
token: 'sk_live_...',
|
|
967
|
+
recipientId: 'user_id',
|
|
968
|
+
action: 'typing_off'
|
|
969
|
+
}, accessToken);
|
|
970
|
+
|
|
971
|
+
// Marcar como visualizado
|
|
972
|
+
await sdk.instagram.sendSenderAction({
|
|
973
|
+
token: 'sk_live_...',
|
|
974
|
+
recipientId: 'user_id',
|
|
975
|
+
action: 'mark_seen'
|
|
976
|
+
}, accessToken);
|
|
501
977
|
```
|
|
502
978
|
|
|
503
|
-
|
|
979
|
+
#### Obter Perfil de Usuário
|
|
980
|
+
|
|
981
|
+
```typescript
|
|
982
|
+
const userProfile = await sdk.instagram.getUserProfile({
|
|
983
|
+
token: 'sk_live_...',
|
|
984
|
+
userId: '17841465415913137'
|
|
985
|
+
}, accessToken);
|
|
986
|
+
|
|
987
|
+
console.log(userProfile.data.name);
|
|
988
|
+
console.log(userProfile.data.username);
|
|
989
|
+
console.log(userProfile.data.follower_count);
|
|
990
|
+
```
|
|
991
|
+
|
|
992
|
+
#### Listar Publicações
|
|
993
|
+
|
|
994
|
+
```typescript
|
|
995
|
+
const posts = await sdk.instagram.listPosts({
|
|
996
|
+
token: 'sk_live_...',
|
|
997
|
+
limit: 10
|
|
998
|
+
}, accessToken);
|
|
999
|
+
```
|
|
1000
|
+
|
|
1001
|
+
#### Obter Perfil da Conta Comercial
|
|
1002
|
+
|
|
1003
|
+
```typescript
|
|
1004
|
+
const businessProfile = await sdk.instagram.getBusinessProfile({
|
|
1005
|
+
token: 'sk_live_...'
|
|
1006
|
+
}, accessToken);
|
|
1007
|
+
```
|
|
1008
|
+
|
|
1009
|
+
### Canais
|
|
504
1010
|
|
|
505
|
-
|
|
1011
|
+
#### Listar Canais
|
|
1012
|
+
|
|
1013
|
+
```typescript
|
|
1014
|
+
const channels = await sdk.channels.list(accessToken);
|
|
1015
|
+
console.log(channels);
|
|
1016
|
+
```
|
|
1017
|
+
|
|
1018
|
+
### Integrações
|
|
1019
|
+
|
|
1020
|
+
#### Criar Webhook
|
|
1021
|
+
|
|
1022
|
+
```typescript
|
|
1023
|
+
const webhook = await sdk.integrations.createWebhook({
|
|
1024
|
+
url: 'https://example.com/webhook',
|
|
1025
|
+
expiresInDays: 365
|
|
1026
|
+
}, accessToken);
|
|
1027
|
+
```
|
|
1028
|
+
|
|
1029
|
+
## 🛠️ Tratamento de Erros
|
|
506
1030
|
|
|
507
1031
|
```typescript
|
|
508
1032
|
try {
|
|
509
|
-
await sdk.whatsapp.sendText({
|
|
1033
|
+
await sdk.whatsapp.sendText({
|
|
1034
|
+
token: 'sk_live_...',
|
|
1035
|
+
sender: '5511999999999',
|
|
1036
|
+
messageText: 'Olá!'
|
|
1037
|
+
}, accessToken);
|
|
510
1038
|
} catch (error) {
|
|
511
1039
|
console.error('Erro:', error.message);
|
|
512
1040
|
console.error('Status:', error.status);
|
|
@@ -516,15 +1044,12 @@ try {
|
|
|
516
1044
|
|
|
517
1045
|
## 📝 Tipos TypeScript
|
|
518
1046
|
|
|
519
|
-
Todos os tipos estão disponíveis para importação:
|
|
520
|
-
|
|
521
1047
|
```typescript
|
|
522
1048
|
import type {
|
|
523
1049
|
SDKConfig,
|
|
524
1050
|
Channel,
|
|
525
1051
|
SendWhatsAppTextParams,
|
|
526
|
-
ApiResponse
|
|
527
|
-
// ... outros tipos
|
|
1052
|
+
ApiResponse
|
|
528
1053
|
} from '@oficialapi/sdk';
|
|
529
1054
|
```
|
|
530
1055
|
|
|
@@ -535,19 +1060,12 @@ O SDK possui retry automático configurável:
|
|
|
535
1060
|
- **maxRetries**: Número máximo de tentativas (padrão: 3)
|
|
536
1061
|
- **retryDelay**: Delay entre tentativas em ms (padrão: 1000)
|
|
537
1062
|
|
|
538
|
-
O retry é aplicado automaticamente em
|
|
539
|
-
- Erros de rede
|
|
540
|
-
- Erros 5xx (erros do servidor)
|
|
541
|
-
- Timeouts
|
|
1063
|
+
O retry é aplicado automaticamente em erros de rede, erros 5xx e timeouts.
|
|
542
1064
|
|
|
543
1065
|
## 📖 Documentação Completa
|
|
544
1066
|
|
|
545
1067
|
Para mais informações, consulte a [documentação completa da API](https://api.oficialapi.com.br/api/docs).
|
|
546
1068
|
|
|
547
|
-
## 🤝 Suporte
|
|
548
|
-
|
|
549
|
-
Para suporte, entre em contato através do [painel administrativo](https://access.oficialapi.com.br) ou abra uma issue no repositório.
|
|
550
|
-
|
|
551
1069
|
## 📄 Licença
|
|
552
1070
|
|
|
553
1071
|
MIT
|