add support for signal notifications
This commit is contained in:
		
							parent
							
								
									11a2adcb7c
								
							
						
					
					
						commit
						c6237277c0
					
				
					 2 changed files with 55 additions and 3 deletions
				
			
		|  | @ -56,6 +56,22 @@ class Notification { | |||
|         } else if (notification.type === "discord") { | ||||
|             return await Notification.discord(notification, msg) | ||||
| 
 | ||||
|         } else if (notification.type === "signal") { | ||||
|           try { | ||||
|             let data = { | ||||
|               "message": msg,  | ||||
|               "number": notification.signalNumber, | ||||
|               "recipients": notification.signalRecipients.replace(/\s/g, '').split(",") | ||||
|             }; | ||||
|             let config = {}; | ||||
| 
 | ||||
|             let res = await axios.post(notification.signalURL, data, config) | ||||
|             return true; | ||||
|         } catch (error) { | ||||
|             console.log(error) | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         } else { | ||||
|             throw new Error("Notification type is not supported") | ||||
|         } | ||||
|  |  | |||
|  | @ -17,6 +17,7 @@ | |||
|                                     <option value="webhook">Webhook</option> | ||||
|                                     <option value="smtp">Email (SMTP)</option> | ||||
|                                     <option value="discord">Discord</option> | ||||
|                                     <option value="signal">Signal</option> | ||||
|                                 </select> | ||||
|                             </div> | ||||
| 
 | ||||
|  | @ -44,9 +45,8 @@ | |||
|                                         Support Direct Chat / Group / Channel's Chat ID | ||||
| 
 | ||||
|                                         <p style="margin-top: 8px;"> | ||||
|                                             You can get your chat id by sending message to the bot and go to this url to view the chat_id: | ||||
|                                         </p> | ||||
| 
 | ||||
|                                             You can ge     <a href="https://github.com/bbernhard/signal-cli-rest-api" target="_blank">https://github.com/bbernhard/signal-cli-rest-api</a> | ||||
|                                     </p> | ||||
|                                         <p style="margin-top: 8px;"> | ||||
| 
 | ||||
|                                             <template v-if="notification.telegramBotToken"> | ||||
|  | @ -143,6 +143,41 @@ | |||
|                             </div> | ||||
|                         </template> | ||||
| 
 | ||||
|                         <template v-if="notification.type === 'signal'"> | ||||
|                             <div class="mb-3"> | ||||
|                                 <label for="signal-url" class="form-label">Post URL</label> | ||||
|                                 <input type="url" pattern="https?://.+"  class="form-control" id="signal-url" required v-model="notification.signalURL"> | ||||
| 
 | ||||
|                             </div> | ||||
| 
 | ||||
|                             <div class="mb-3"> | ||||
|                                 <label for="signal-number" class="form-label">Number</label> | ||||
|                                 <input type="text" class="form-control" id="signal-number" required v-model="notification.signalNumber"> | ||||
| 
 | ||||
|                             </div> | ||||
| 
 | ||||
|                             <div class="mb-3"> | ||||
|                                 <label for="signal-recipients" class="form-label">Recipients</label> | ||||
|                                 <input type="text" class="form-control" id="signal-recipients" required v-model="notification.signalRecipients"> | ||||
| 
 | ||||
|                                 <div class="form-text"> | ||||
|                                     You need to have a signal client with REST API. | ||||
| 
 | ||||
|                                     <p style="margin-top: 8px;"> | ||||
|                                         You can check this url to view how to setup one: | ||||
|                                     </p> | ||||
| 
 | ||||
|                                     <p style="margin-top: 8px;"> | ||||
|                                         <a href="https://github.com/bbernhard/signal-cli-rest-api" target="_blank">https://github.com/bbernhard/signal-cli-rest-api</a> | ||||
|                                     </p> | ||||
| 
 | ||||
|                                     <p style="margin-top: 8px;"> | ||||
|                                         IMPORTANT: You cannot mix groups and numbers in recipients! | ||||
|                                     </p> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                         </template> | ||||
| 
 | ||||
|                     </div> | ||||
|                     <div class="modal-footer"> | ||||
|                         <button type="button" class="btn btn-danger" @click="deleteConfirm" :disabled="processing" v-if="id">Delete</button> | ||||
|  | @ -236,6 +271,7 @@ export default { | |||
|         }, | ||||
| 
 | ||||
|         test() { | ||||
|             console.log("test notification"); | ||||
|             this.processing = true; | ||||
|             this.$root.getSocket().emit("testNotification", this.notification, (res) => { | ||||
|                 this.$root.toastRes(res) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue