Add PromoSMS (Polish SMS Gateway) as new notification providerpull/605/head
parent
ddad2dcb4a
commit
12b5489eb5
@ -0,0 +1,41 @@
|
|||||||
|
const NotificationProvider = require("./notification-provider");
|
||||||
|
const axios = require("axios");
|
||||||
|
|
||||||
|
class PromoSMS extends NotificationProvider {
|
||||||
|
|
||||||
|
name = "promosms";
|
||||||
|
|
||||||
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
let okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
|
try {
|
||||||
|
let buffer = new Buffer(notification.promosmsLogin + ":" + notification.promosmsPassword);
|
||||||
|
let promosmsAuth = buffer.toString('base64');
|
||||||
|
let config = {
|
||||||
|
headers: {
|
||||||
|
"Authorization": "Basic" + promosmsAuth,
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded",
|
||||||
|
"Accept": "text/json"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let data = {
|
||||||
|
"recipients": [
|
||||||
|
{
|
||||||
|
"recipients": notification.promosmsPhoneNumber
|
||||||
|
}
|
||||||
|
],
|
||||||
|
//Lets remove non ascii char
|
||||||
|
"text": msg.replace(/[^\x00-\x7F]/g, ""),
|
||||||
|
"type": notification.promosmsSMSType,
|
||||||
|
"sender": notification.promosmsSenderName
|
||||||
|
};
|
||||||
|
await axios.post("https://promosms.com/api/rest/v3_2/sms", data, config)
|
||||||
|
|
||||||
|
return okMsg;
|
||||||
|
} catch (error) {
|
||||||
|
this.throwGeneralAxiosError(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = PromoSMS;
|
@ -0,0 +1,39 @@
|
|||||||
|
<template>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="promosms-login" class="form-label">API LOGIN</label>
|
||||||
|
<input id="promosms-login" v-model="$parent.notification.promosmsLogin" type="text" class="form-control" required>
|
||||||
|
<label for="promosms-key" class="form-label">API PASSWORD</label>
|
||||||
|
<HiddenInput id="promosms-key" v-model="$parent.notification.promosmsPassword" :required="true" autocomplete="one-time-code"></HiddenInput>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="promosms-type-sms" class="form-label">{{ $t("SMS Type") }}</label>
|
||||||
|
<select id="promosms-type-sms" v-model="$parent.notification.promosmsSMSType" class="form-select">
|
||||||
|
<option value="0">{{ $t("promosmsTypeFlash") }}</option>
|
||||||
|
<option value="1">{{ $t("promosmsTypeEco") }}</option>
|
||||||
|
<option value="2">{{ $t("promosmsTypeFull") }}</option>
|
||||||
|
<option value="3">{{ $t("promosmsTypeSpeed") }}</option>
|
||||||
|
</select>
|
||||||
|
<i18n-t tag="div" keypath="Check PromoSMS prices" class="form-text">
|
||||||
|
<a href="https://promosms.com/cennik/" target="_blank">https://promosms.com/cennik/</a>
|
||||||
|
</i18n-t>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="promosms-phone-number" class="form-label">{{ $t("promosmsPhoneNumber") }}</label>
|
||||||
|
<input id="promosms-phone-number" v-model="$parent.notification.promosmsPhoneNumber" type="text" class="form-control" required>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="promosms-sender-name" class="form-label">{{ $t("promosmsSMSSender") }}</label>
|
||||||
|
<input id="promosms-sender-name" v-model="$parent.notification.promosmsSenderName" type="text" minlength="3" maxlength="11" class="form-control">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import HiddenInput from "../HiddenInput.vue";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
HiddenInput,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
Loading…
Reference in new issue