Add OneSender Webhook notification (#4971)
Co-authored-by: Frank Elsinga <frank@elsinga.de>pull/5018/head
parent
13f67462ad
commit
92e982a910
@ -0,0 +1,47 @@
|
|||||||
|
const NotificationProvider = require("./notification-provider");
|
||||||
|
const axios = require("axios");
|
||||||
|
|
||||||
|
class Onesender extends NotificationProvider {
|
||||||
|
name = "Onesender";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
|
try {
|
||||||
|
let data = {
|
||||||
|
heartbeat: heartbeatJSON,
|
||||||
|
monitor: monitorJSON,
|
||||||
|
msg,
|
||||||
|
to: notification.onesenderReceiver,
|
||||||
|
type: "text",
|
||||||
|
recipient_type: "individual",
|
||||||
|
text: {
|
||||||
|
body: msg
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (notification.onesenderTypeReceiver === "private") {
|
||||||
|
data.to = notification.onesenderReceiver + "@s.whatsapp.net";
|
||||||
|
} else {
|
||||||
|
data.recipient_type = "group";
|
||||||
|
data.to = notification.onesenderReceiver + "@g.us";
|
||||||
|
}
|
||||||
|
let config = {
|
||||||
|
headers: {
|
||||||
|
"Authorization": "Bearer " + notification.onesenderToken,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
await axios.post(notification.onesenderURL, data, config);
|
||||||
|
return okMsg;
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
this.throwGeneralAxiosError(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Onesender;
|
@ -0,0 +1,81 @@
|
|||||||
|
<template>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="host-onesender" class="form-label">{{ $t("Host Onesender") }}</label>
|
||||||
|
<input
|
||||||
|
id="host-onesender"
|
||||||
|
v-model="$parent.notification.onesenderURL"
|
||||||
|
type="url"
|
||||||
|
placeholder="https://xxxxxxxxxxx.com/api/v1/messages"
|
||||||
|
pattern="https?://.+"
|
||||||
|
class="form-control"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="receiver-onesender" class="form-label">{{ $t("Token Onesender") }}</label>
|
||||||
|
<HiddenInput id="receiver-onesender" v-model="$parent.notification.onesenderToken" :required="true" autocomplete="false"></HiddenInput>
|
||||||
|
<i18n-t tag="div" keypath="wayToGetOnesenderUrlandToken" class="form-text">
|
||||||
|
<a href="https://onesender.net/" target="_blank">{{ $t("here") }}</a>
|
||||||
|
</i18n-t>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="webhook-request-body" class="form-label">{{ $t("Recipient Type") }}</label>
|
||||||
|
<select
|
||||||
|
id="webhook-request-body"
|
||||||
|
v-model="$parent.notification.onesenderTypeReceiver"
|
||||||
|
class="form-select"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<option value="private">{{ $t("Private Number") }}</option>
|
||||||
|
<option value="group">{{ $t("Group ID") }}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div v-if="$parent.notification.onesenderTypeReceiver == 'private'" class="form-text">{{ $t("privateOnesenderDesc", ['"application/json"']) }}</div>
|
||||||
|
<div v-else class="form-text">{{ $t("groupOnesenderDesc") }}</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<input
|
||||||
|
id="type-receiver-onesender"
|
||||||
|
v-model="$parent.notification.onesenderReceiver"
|
||||||
|
type="text"
|
||||||
|
placeholder="628123456789 or 628123456789-34534"
|
||||||
|
class="form-control"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<input
|
||||||
|
id="type-receiver-onesender"
|
||||||
|
v-model="computedReceiverResult"
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import HiddenInput from "../HiddenInput.vue";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
HiddenInput,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
computedReceiverResult() {
|
||||||
|
let receiver = this.$parent.notification.onesenderReceiver;
|
||||||
|
return this.$parent.notification.onesenderTypeReceiver === "private" ? receiver + "@s.whatsapp.net" : receiver + "@g.us";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
textarea {
|
||||||
|
min-height: 200px;
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in new issue