110 lines
4.4 KiB
JavaScript
110 lines
4.4 KiB
JavaScript
// JavaScript Document
|
|
exports.onesignal_create_push_notification = async function (options) {
|
|
// get appid
|
|
const appid = this.parseOptional(options.appid, '*', process.env.ONESIGNAL_APP_ID)
|
|
console.log(options.appid + " => " + appid)
|
|
// get message internal name
|
|
const osname = this.parseOptional(options.osname, '*', 'message_auto')
|
|
console.log(options.osname + " => " + osname)
|
|
// target_channel
|
|
const target_channel = this.parseOptional(options.target_channel, '*', 'push')
|
|
console.log(options.target_channel + " => " + target_channel)
|
|
// get language
|
|
const oslang = this.parseOptional(options.oslang, '*', 'en')
|
|
console.log(options.oslang + " => " + oslang)
|
|
|
|
const segment = this.parseOptional(options.segment, '*', 'All')
|
|
console.log("Segment: " + options.segment + " => " + segment)
|
|
// gte message
|
|
//const osmessage = this.parseOptional(options.os_message, '*', 'Hello world')
|
|
//console.log(options.os_message + " => " + osmessage)
|
|
|
|
const osimage = this.parseOptional(options.os_image, '*', null)
|
|
console.log("osimage: " + options.os_image + " => " + osimage)
|
|
|
|
const osicon = this.parseOptional(options.os_icon, '*', null)
|
|
console.log("osicon: " + options.os_icon + " => " + osicon)
|
|
|
|
const osbadge = this.parseOptional(options.os_badge, '*', null)
|
|
console.log("osbadge: " + options.os_badge + " => " + osbadge)
|
|
|
|
const ostitle = this.parseOptional(options.os_title, '*', null)
|
|
console.log(options.os_title + " => " + ostitle)
|
|
|
|
const messages = this.parseRequired(options.bindings, '*', 'Bindings Required')
|
|
console.log(options.bindings + " => " + messages)
|
|
|
|
const headings = this.parseRequired(options.headings, '*', 'Headings Required')
|
|
console.log(options.headings + " => " + headings)
|
|
|
|
const template_id = this.parseOptional(options.template_id, '*', null)
|
|
console.log(options.template_id + " => " + template_id)
|
|
|
|
const big_picture = this.parseOptional(options.big_picture, '*', null)
|
|
console.log(options.big_picture + " => " + big_picture)
|
|
|
|
const turl = this.parseOptional(options.url, '*', null)
|
|
console.log(options.url + " => " + turl)
|
|
|
|
//const data = this.parseOptional(options.data, '*', null)
|
|
//console.log(options.data + " => " + data)
|
|
|
|
const filters = this.parseOptional(options.filters, '*', {})
|
|
console.log(options.filters + " => " + filters)
|
|
|
|
//const include_aliases = this.parseOptional(options.include_aliases, '*', '{ external_id: [] }')
|
|
//console.log(options.include_aliasess + " => " + include_aliases)
|
|
|
|
const include_subscription_ids = this.parseOptional(options.include_subscription_ids, '*', null)
|
|
console.log(options.include_subscription_ids + " => " + include_subscription_ids)
|
|
|
|
const send_after = this.parseOptional(options.send_after, '*', null)
|
|
console.log(options.send_after + " => " + send_after)
|
|
|
|
const delayed_option = this.parseOptional(options.delayed_option, '*', null)
|
|
console.log(options.delayed_option + " => " + delayed_option)
|
|
|
|
const delivery_time_of_day = this.parseOptional(options.delivery_time_of_day, '*', null)
|
|
console.log(options.delivery_time_of_day + " => " + delivery_time_of_day)
|
|
|
|
const throttle_rate_per_minute = this.parseOptional(options.throttle_rate_per_minute, '*', null)
|
|
console.log(options.throttle_rate_per_minute + " => " + throttle_rate_per_minute)
|
|
|
|
const fetch = require('node-fetch');
|
|
|
|
const url = 'https://api.onesignal.com/notifications?c=push';
|
|
const os_options = {
|
|
method: 'POST',
|
|
headers: {
|
|
accept: 'application/json', 'content-type': 'application/json',
|
|
Authorization: `Basic ${process.env.ONESIGNAL_REST_API_KEY}`
|
|
},
|
|
body: JSON.stringify(
|
|
Object.fromEntries(
|
|
Object.entries({
|
|
contents: messages,
|
|
headings: headings, app_id: appid,
|
|
included_segments: [segment],
|
|
target_channel: target_channel,
|
|
big_picture: osimage,
|
|
chrome_big_picture: osimage,
|
|
chrome_web_image: osimage,
|
|
chrome_icon: osimage,
|
|
chrome_web_icon: osimage,
|
|
firefox_icon: osimage
|
|
|
|
}).filter(([_, v]) => v != null)
|
|
))
|
|
};
|
|
console.log(os_options)
|
|
return fetch(url, os_options)
|
|
.then(res => {
|
|
return res.json().then(json => {
|
|
json.status = res.status; // Add status to json response
|
|
return json;
|
|
});
|
|
})
|
|
.catch(err => console.error('Error:', err));
|
|
|
|
}
|