|
|
|
const FRONT_API_TOKEN = 'YOUR-FRONT-API-TOKEN'; |
|
const CHANNEL_ID = 'cha_...'; |
|
|
|
const FormData = require('form-data'); |
|
const fs = require('fs'); |
|
|
|
// abstract and promisify actual network request |
|
async function makeRequest(formData, options) { |
|
return new Promise((resolve, reject) => { |
|
const req = formData.submit(options, (err, res) => { |
|
if (err) |
|
return reject(new Error(err.message)) |
|
|
|
if (res.statusCode < 200 || res.statusCode > 299) |
|
return reject(new Error(`HTTP status code ${res.statusCode}`)) |
|
|
|
const body = []; |
|
res.on('data', (chunk) => body.push(chunk)); |
|
res.on('end', () => { |
|
const resString = Buffer.concat(body).toString(); |
|
resolve(resString); |
|
}) |
|
}) |
|
}) |
|
} |
|
|
|
const formData = new FormData() |
|
|
|
// Set your data here: (See full options at https://dev.frontapp.com/reference/messages-1#post_channels-channel-id-messages) |
|
formData.append('to[0]', '+14155550000'); |
|
formData.append('body', 'Message body'); |
|
let fileBuffer = fs.readFileSync("./files/vCard.vcf"); |
|
formData.append('attachments[0]', fileBuffer, { |
|
filename: 'Contact Name.vcf', |
|
contentType: 'text/vcard' |
|
}); |
|
|
|
const options = { |
|
host: 'api2.frontapp.com', |
|
path: `/channels/${CHANNEL_ID}/messages`, |
|
method: 'POST', |
|
protocol: 'https:', // note : in the end |
|
headers: { |
|
Authorization: `Bearer ${FRONT_API_TOKEN}` |
|
}, |
|
} |
|
|
|
async function run() { |
|
const res = await makeRequest(formData, options); |
|
console.log(res); |
|
} |
|
|
|
run() |