新逸Cary
3 years ago
committed by
GitHub
33 changed files with 143 additions and 17 deletions
@ -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 config = { |
||||
|
headers: { |
||||
|
"Content-Type": "application/json", |
||||
|
"Authorization": "Basic " + Buffer.from(notification.promosmsLogin + ":" + notification.promosmsPassword).toString('base64'), |
||||
|
"Accept": "text/json", |
||||
|
} |
||||
|
}; |
||||
|
let data = { |
||||
|
"recipients": [ notification.promosmsPhoneNumber ], |
||||
|
//Lets remove non ascii char
|
||||
|
"text": msg.replace(/[^\x00-\x7F]/g, ""), |
||||
|
"type": Number(notification.promosmsSMSType), |
||||
|
"sender": notification.promosmsSenderName |
||||
|
}; |
||||
|
|
||||
|
let resp = await axios.post("https://promosms.com/api/rest/v3_2/sms", data, config); |
||||
|
|
||||
|
if (resp.data.response.status !== 0) { |
||||
|
let error = "Something gone wrong. Api returned " + resp.data.response.status + "."; |
||||
|
this.throwGeneralAxiosError(error); |
||||
|
} |
||||
|
|
||||
|
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