Last active
March 15, 2022 18:23
-
-
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 file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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]', '[email protected]'); | |
formData.append('metadata[thread_ref]', '[email protected]'); | |
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