committed by
							
								 GitHub
								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