import {Axios} from 'axios';
export class Dialog360 {
private axios: Axios;
constructor(private apiKey: string) {
this.axios = new Axios({
baseURL: 'https://waba.360dialog.io/v1',
headers: {
'D360-API-KEY': this.apiKey,
'Content-Type': 'application/json',
},
});
}
private async retrieveWhatsappId(phone: string) {
const body = {
blocking: 'wait',
contacts: [phone],
force_check: true,
};
const {data} = await this.axios.post('/contacts', JSON.stringify(body));
const parsed = JSON.parse(data);
console.log(parsed);
if (!parsed.contacts) return null;
return parsed.contacts[0].wa_id;
}
public async sendTemplateMessage(phone: string) {
const body = {
to: phone,
type: 'template',
template: {
namespace: '2c617ca1_6c79_4041_9a2b_6575f0e83391',
language: {
policy: 'deterministic',
code: 'pt_br',
},
name: 'testeaf',
},
};
const {data} = await this.axios.post('/messages', JSON.stringify(body));
console.log(data);
}
public async sendTextMessage(phone: string, text: string) {
const whatsappId = await this.retrieveWhatsappId(phone);
if (!whatsappId) throw new Error('Invalid contact');
const body = {
recipient_type: 'individual',
to: whatsappId,
type: 'text',
text: {
body: text,
},
};
const {data} = await this.axios.post('/messages', JSON.stringify(body));
console.log(data);
}
}