commit
8004c650be
@ -0,0 +1,127 @@
|
||||
const NotificationProvider = require("./notification-provider");
|
||||
const { default: axios } = require("axios");
|
||||
|
||||
class Cellsynt extends NotificationProvider {
|
||||
|
||||
name = "Cellsynt";
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||
let okMsg = "Sent Successfully.";
|
||||
|
||||
try {
|
||||
let data = {
|
||||
params: {
|
||||
/* Your username (received when account is setup).
|
||||
*/
|
||||
"username": notification.cellsyntLogin,
|
||||
|
||||
/* Your password to use together with the username for
|
||||
authentication (received when account is setup).
|
||||
*/
|
||||
"password": notification.cellsyntPassword,
|
||||
|
||||
/* Recipient's telephone number on international format with
|
||||
leading 00 followed by country code, e.g. 00447920110000 for
|
||||
UK number 07920 110 000 (max 17 digits in total).
|
||||
To send the same message to multiple recipients, separate
|
||||
numbers with comma. Max 25000 recipients per HTTP request.
|
||||
*/
|
||||
"destination": notification.cellsyntDestination,
|
||||
|
||||
"text": msg.replace(/[^\x00-\x7F]/g, ""),
|
||||
/* Character set text and other data is sent as in the HTTP
|
||||
request. Possible values: ISO-8859-1 (default) and UTF-8
|
||||
*/
|
||||
"charset": "UTF-8",
|
||||
|
||||
/* Controls the originator type the message should be sent with.
|
||||
Possible values: numeric, shortcode and alpha.
|
||||
*/
|
||||
"originatortype": notification.Originatortype,
|
||||
|
||||
/* Identifier which will be visible on recipient's mobile phone as
|
||||
originator of the message. Allowed values and function depends
|
||||
on parameter originatortype's value according to below:
|
||||
** alpha **
|
||||
3Send SMS
|
||||
Alphanumeric string (max 11 characters). The following
|
||||
characters are guaranteed to work: a-z, A-Z and 0-9. Other
|
||||
characters may work but functionality can not be guaranteed.
|
||||
Recipients can not reply to messages with alphanumeric
|
||||
originators
|
||||
** numeric **
|
||||
Numeric value (max 15 digits) with telephone number on
|
||||
international format without leading 00 (example UK number
|
||||
07920 110 000 should be set as 447920110000). Receiving
|
||||
mobile phone will add a leading + sign and thus see the
|
||||
originator as a normal mobile phone number (+447920110000).
|
||||
Therefore it is also possible to reply to the message.
|
||||
*/
|
||||
//"originator": "uptime-kuma",
|
||||
"originator": notification.cellsyntOriginator,
|
||||
/* Type of message that should be sent. Possible values: text
|
||||
(default), binary and unicode */
|
||||
//"type": "text",
|
||||
|
||||
/* Maximum number of SMS permitted to be linked together when
|
||||
needed (default value is 1, see Long SMS). Maximum value is 6
|
||||
(i.e. max 153 x 6 = 918 characters).
|
||||
*/
|
||||
"allowconcat": notification.cellsyntAllowLongSMS?6:1,
|
||||
|
||||
/* Value can be set to true if message should be sent as "flash
|
||||
message", i.e. displayed directly on phone screen instead of
|
||||
being saved to inbox. This is identical to setting class=0.
|
||||
Please note that support for flash messages cannot be
|
||||
guaranteed to all operator networks. If flash is not supported the
|
||||
message will be sent as a regular text message instead
|
||||
(class=1).
|
||||
*/
|
||||
//"flash": "",
|
||||
|
||||
/* Message class can be set to 0 (flash message), 1 (default, MEspecific), 2 (SIM-specific) or 3 (TE-specific).
|
||||
*/
|
||||
//"class": "",
|
||||
|
||||
/* UDH (User Data Header) can be used to send concatenated
|
||||
SMS, contain formatting information, convey port numbers as a
|
||||
mean to cause start of an application etc. The value should be
|
||||
given on hexadecimal format for the corresponding bytes you
|
||||
wish to send (e.g. AABBCC).
|
||||
*/
|
||||
//"udh": "",
|
||||
|
||||
/* Protocol Identifier (specified in GSM 03.40) says how the
|
||||
message should be interpreted. Value should be given on
|
||||
hexadecimal format, e.g. 00 for a regular message and 7D
|
||||
(decimal 125) for a configuration message ("ME Data
|
||||
download").
|
||||
*/
|
||||
//"pid": "",
|
||||
}
|
||||
};
|
||||
try {
|
||||
if (heartbeatJSON != null) {
|
||||
msg = msg;
|
||||
data.params.text = msg.replace(/[^\x00-\x7F]/g, "");
|
||||
}
|
||||
|
||||
let resp = await axios.post("https://se-1.cellsynt.net/sms.php", null, data);
|
||||
if(typeof resp.data == undefined || resp.data == null || resp.data.includes("Error")) {
|
||||
this.throwGeneralAxiosError(resp.data);
|
||||
}
|
||||
}catch (error) {
|
||||
this.throwGeneralAxiosError(error);
|
||||
}
|
||||
|
||||
return okMsg;
|
||||
} catch (error) {
|
||||
this.throwGeneralAxiosError(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Cellsynt;
|
@ -0,0 +1,59 @@
|
||||
<template>
|
||||
<div class="mb-3">
|
||||
<label for="cellsynt-login" class="form-label">{{ $t("Username") }}</label>
|
||||
<input id="cellsynt-login" v-model="$parent.notification.cellsyntLogin" type="text" class="form-control" required>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="cellsynt-key" class="form-label">{{ $t("Password") }}</label>
|
||||
<HiddenInput id="cellsynt-key" v-model="$parent.notification.cellsyntPassword" :required="true" autocomplete="new-password"></HiddenInput>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="cellsynt-Originatortype" class="form-label">{{ $t("Originator type") }}</label>
|
||||
<select id="cellsynt-Originatortype" v-model="$parent.notification.cellsyntOriginatortype" :required="true" class="form-select">
|
||||
<option value="alpha">{{ $t("Alpha (recommended)") }}</option>
|
||||
<option value="numeric">{{ $t("Numeric") }}</option>
|
||||
</select>
|
||||
<div class="form-text">
|
||||
<p><b>{{ $t("Alpha (recommended)") }}:</b><br>
|
||||
{{ $t("Alphanumeric string (max 11 characters). The following characters are guaranteed to work: a-z, A-Z and 0-9. Other characters may work but functionality can not be guaranteed. Recipients can not reply to messages with alphanumeric originators.") }}</p>
|
||||
<p><b>{{ $t("Numeric") }}:</b><br>
|
||||
{{ $t("Numeric value (max 15 digits) with telephone number on international format without leading 00 (example UK number 07920 110 000 should be set as 447920110000). Receiving mobile phone will add a leading + sign and thus see the originator as a normal mobile phone number (+447920110000). Therefore it is also possible to reply to the message.") }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="cellsynt-originator" class="form-label">{{ $t("Originator") }}</label>
|
||||
<input id="cellsynt-originator" v-model="$parent.notification.cellsyntOriginator" type="text" class="form-control" required>
|
||||
<div class="form-text"><p>{{ $t("Identifier which will be visible on recipient's mobile phone as originator of the message. Allowed values and function depends on parameter originatortype.") }}</p></div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="cellsynt-destination" class="form-label">{{ $t("Destination") }}</label>
|
||||
<input id="cellsynt-destination" v-model="$parent.notification.cellsyntDestination" type="text" class="form-control" required>
|
||||
<div class="form-text"><p>{{ $t("Recipient's telephone number on international format with leading 00 followed by country code, e.g. 00447920110000 for UK number 07920 110 000 (max 17 digits in total). To send the same message to multiple recipients, separate numbers with comma. Max 25000 recipients per HTTP request.") }}</p></div>
|
||||
</div>
|
||||
<div class="form-check form-switch">
|
||||
<input id="cellsynt-allow-long" v-model="$parent.notification.cellsyntAllowLongSMS" type="checkbox" class="form-check-input">
|
||||
<label for="cellsynt-allow-long" class="form-label">{{ $t("Allow Long SMS") }}</label>
|
||||
<div class="form-text">{{ $t("Long SMS (also known as \"concatenated SMS\") enables sending messages exceeding 160 characters.") }}</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="cellsynt-destination" class="form-label">{{ $t("Details") }}</label>
|
||||
<div class="form-text">
|
||||
{{ $t("For sign-up and price information check out this link") }}, <a href="https://www.cellsynt.com/en/" target="_blank">https://www.cellsynt.com/en/</a>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import HiddenInput from "../HiddenInput.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
HiddenInput
|
||||
},
|
||||
mounted() {
|
||||
this.$parent.notification.cellsyntOriginator = "uptime-kuma";
|
||||
this.$parent.notification.cellsyntOriginatortype = "alpha";
|
||||
console.log("hello world");
|
||||
}
|
||||
};
|
||||
</script>
|
@ -0,0 +1,48 @@
|
||||
import { currentLocale } from "../../../src/i18n";
|
||||
|
||||
describe("Test i18n.js", () => {
|
||||
|
||||
it("currentLocale()", () => {
|
||||
const setLanguage = (language) => {
|
||||
Object.defineProperty(window.navigator, 'language', {
|
||||
value: language,
|
||||
writable: true
|
||||
});
|
||||
Object.defineProperty(window.navigator, 'languages', {
|
||||
value: [language],
|
||||
writable: true
|
||||
});
|
||||
}
|
||||
setLanguage('en-EN');
|
||||
|
||||
expect(currentLocale()).equal("en");
|
||||
|
||||
setLanguage('zh-HK');
|
||||
expect(currentLocale()).equal("zh-HK");
|
||||
|
||||
// Note that in Safari on iOS prior to 10.2, the country code returned is lowercase: "en-us", "fr-fr" etc.
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language
|
||||
setLanguage('zh-hk');
|
||||
expect(currentLocale()).equal("en");
|
||||
|
||||
setLanguage('en-US');
|
||||
expect(currentLocale()).equal("en");
|
||||
|
||||
setLanguage('ja-ZZ');
|
||||
expect(currentLocale()).equal("ja");
|
||||
|
||||
setLanguage('zz-ZZ');
|
||||
expect(currentLocale()).equal("en");
|
||||
|
||||
setLanguage('zz-ZZ');
|
||||
expect(currentLocale()).equal("en");
|
||||
|
||||
setLanguage('en');
|
||||
localStorage.locale = "en";
|
||||
expect(currentLocale()).equal("en");
|
||||
|
||||
localStorage.locale = "zh-HK";
|
||||
expect(currentLocale()).equal("zh-HK");
|
||||
});
|
||||
|
||||
});
|
Loading…
Reference in new issue