Skip to content

Instantly share code, notes, and snippets.

@dugjason
Last active March 15, 2022 18:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dugjason/a81466eb617879676bc69c76a6ba1bd6 to your computer and use it in GitHub Desktop.
Save dugjason/a81466eb617879676bc69c76a6ba1bd6 to your computer and use it in GitHub Desktop.
This is a Node.JS demo of using Front's /channels/:channel_id/incoming_messages API endpoint. We are sending a request to receive an incoming message in Front, including an attachment
/**
* This is a Node.JS demo of using Front's /channels/:channel_id/incoming_messages API endpoint.
* We are sending a request to receive an incoming message in Front, including an attachment.
*
* See https://dev.frontapp.com/reference/post_channels-channel-id-incoming-messages for more details.
*/
const FRONT_API_TOKEN = 'YOUR FRONT API TOKEN';
const CHANNEL_ID = 'YOUR FRONT CHANNEL ID';
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) => {
formData.submit(options, (err, res) => {
if (err)
return reject(new Error(err.message))
const body = [];
res.on('data', (chunk) => body.push(chunk));
res.on('end', () => {
const resString = Buffer.concat(body).toString();
if (res.statusCode < 200 || res.statusCode > 299) {
return reject(new Error(`HTTP status code ${res.statusCode}: ${resString}`))
}
resolve(resString);
})
})
})
}
const formData = new FormData()
// Set your data here: (See full options at https://dev.frontapp.com/reference/post_channels-channel-id-incoming-messages)
formData.append('subject', 'Message subject');
formData.append('body', '<p>Message body</p>');
formData.append('body_format', 'html');
formData.append('sender[name]', 'Sender Name');
formData.append('sender[handle]', 'sender@example.com');
formData.append('metadata[thread_ref]', 'sender@example.com-thread');
formData.append('attachments[0]', fs.createReadStream('./photo.jpg'));
const options = {
host: 'api2.frontapp.com',
path: `/channels/${CHANNEL_ID}/incoming_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()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment