Louis Lam
3 years ago
5 changed files with 86 additions and 0 deletions
@ -0,0 +1,42 @@ |
|||||
|
const NotificationProvider = require("./notification-provider"); |
||||
|
const axios = require("axios"); |
||||
|
|
||||
|
class ClickSendSMS extends NotificationProvider { |
||||
|
|
||||
|
name = "clicksendsms"; |
||||
|
|
||||
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { |
||||
|
let okMsg = "Sent Successfully."; |
||||
|
try { |
||||
|
console.log({ notification }); |
||||
|
let config = { |
||||
|
headers: { |
||||
|
"Content-Type": "application/json", |
||||
|
"Authorization": "Basic " + Buffer.from(notification.clicksendsmsLogin + ":" + notification.clicksendsmsPassword).toString('base64'), |
||||
|
"Accept": "text/json", |
||||
|
} |
||||
|
}; |
||||
|
let data = { |
||||
|
messages: [ |
||||
|
{ |
||||
|
"body": msg.replace(/[^\x00-\x7F]/g, ""), |
||||
|
"to": notification.clicksendsmsToNumber, |
||||
|
"source": "uptime-kuma", |
||||
|
"from": notification.clicksendsmsSenderName, |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
let resp = await axios.post("https://rest.clicksend.com/v3/sms/send", data, config); |
||||
|
if (resp.data.data.messages[0].status !== "SUCCESS") { |
||||
|
let error = "Something gone wrong. Api returned " + resp.data.data.messages[0].status + "."; |
||||
|
this.throwGeneralAxiosError(error); |
||||
|
} |
||||
|
|
||||
|
return okMsg; |
||||
|
} catch (error) { |
||||
|
this.throwGeneralAxiosError(error); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = ClickSendSMS; |
@ -0,0 +1,38 @@ |
|||||
|
<template> |
||||
|
<div class="mb-3"> |
||||
|
<label for="clicksendsms-login" class="form-label">API Username</label> |
||||
|
<div class="form-text"> |
||||
|
{{ $t("apiCredentials") }} |
||||
|
<a href="http://dashboard.clicksend.com/account/subaccounts" target="_blank">here</a> |
||||
|
</div> |
||||
|
<input id="clicksendsms-login" v-model="$parent.notification.clicksendsmsLogin" type="text" class="form-control" required> |
||||
|
<label for="clicksendsms-key" class="form-label">API Key</label> |
||||
|
<HiddenInput id="clicksendsms-key" v-model="$parent.notification.clicksendsmsPassword" :required="true" autocomplete="one-time-code"></HiddenInput> |
||||
|
</div> |
||||
|
<div class="mb-3"> |
||||
|
<div class="form-text"> |
||||
|
{{ $t("checkPrice", [$t("clicksendsms")]) }} |
||||
|
<a href="https://www.clicksend.com/us/pricing" target="_blank">https://clicksend.com/us/pricing</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="mb-3"> |
||||
|
<label for="clicksendsms-to-number" class="form-label">Recipient Number</label> |
||||
|
<input id="clicksendsms-to-number" v-model="$parent.notification.clicksendsmsToNumber" type="text" minlength="8" maxlength="14" class="form-control" required> |
||||
|
</div> |
||||
|
<div class="mb-3"> |
||||
|
<label for="clicksendsms-sender-name" class="form-label">From Name/Number - |
||||
|
<a href="https://help.clicksend.com/article/4kgj7krx00-what-is-a-sender-id-or-sender-number" target="_blank">More Info</a> |
||||
|
</label> |
||||
|
<input id="clicksendsms-sender-name" v-model="$parent.notification.clicksendsmsSenderName" type="text" minlength="3" maxlength="11" class="form-control"> |
||||
|
<div class="form-text">Leave blank to use a shared sender number.</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import HiddenInput from "../HiddenInput.vue"; |
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
HiddenInput, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
Loading…
Reference in new issue