Merge pull request #264 from antiseptikk/master
feat: add rocket.chat notification
This commit is contained in:
		
						commit
						d2f0a15076
					
				
					 2 changed files with 65 additions and 0 deletions
				
			
		|  | @ -285,6 +285,40 @@ class Notification { | |||
|                 throwGeneralAxiosError(error) | ||||
|             } | ||||
| 
 | ||||
|         } else if (notification.type === "rocket.chat") { | ||||
|             try { | ||||
|                 if (heartbeatJSON == null) { | ||||
|                     let data = { | ||||
|                         "text": "Uptime Kuma Rocket.chat testing successful.", | ||||
|                         "channel": notification.rocketchannel, | ||||
|                         "username": notification.rocketusername, | ||||
|                         "icon_emoji": notification.rocketiconemo, | ||||
|                     } | ||||
|                     await axios.post(notification.rocketwebhookURL, data) | ||||
|                     return okMsg; | ||||
|                 } | ||||
| 
 | ||||
|                 const time = heartbeatJSON["time"]; | ||||
|                 let data = { | ||||
|                     "text": "Uptime Kuma Alert", | ||||
|                     "channel": notification.rocketchannel, | ||||
|                     "username": notification.rocketusername, | ||||
|                     "icon_emoji": notification.rocketiconemo, | ||||
|                     "attachments": [ | ||||
|                         { | ||||
|                             "title": "Uptime Kuma Alert *Time (UTC)*\n" + time, | ||||
|                             "title_link": notification.rocketbutton, | ||||
|                             "text": "*Message*\n" + msg, | ||||
|                             "color": "#32cd32" | ||||
|                         } | ||||
|                     ] | ||||
|                 } | ||||
|                 await axios.post(notification.rocketwebhookURL, data) | ||||
|                 return okMsg; | ||||
|             } catch (error) { | ||||
|                 throwGeneralAxiosError(error) | ||||
|             } | ||||
| 
 | ||||
|         } else if (notification.type === "mattermost") { | ||||
|             try { | ||||
|                 const mattermostUserName = notification.mattermostusername || "Uptime Kuma"; | ||||
|  |  | |||
|  | @ -20,6 +20,7 @@ | |||
|                                 <option value="signal">Signal</option> | ||||
|                                 <option value="gotify">Gotify</option> | ||||
|                                 <option value="slack">Slack</option> | ||||
|                                 <option value="rocket.chat">Rocket.chat</option> | ||||
|                                 <option value="pushover">Pushover</option> | ||||
|                                 <option value="pushy">Pushy</option> | ||||
|                                 <option value="octopush">Octopush</option> | ||||
|  | @ -239,6 +240,36 @@ | |||
|                             </div> | ||||
|                         </template> | ||||
| 
 | ||||
|                         <template v-if="notification.type === 'rocket.chat'"> | ||||
|                             <div class="mb-3"> | ||||
|                                 <label for="rocket-webhook-url" class="form-label">Webhook URL<span style="color: red;"><sup>*</sup></span></label> | ||||
|                                 <input id="rocket-webhook-url" v-model="notification.rocketwebhookURL" type="text" class="form-control" required> | ||||
|                                 <label for="rocket-username" class="form-label">Username</label> | ||||
|                                 <input id="rocket-username" v-model="notification.rocketusername" type="text" class="form-control"> | ||||
|                                 <label for="rocket-iconemo" class="form-label">Icon Emoji</label> | ||||
|                                 <input id="rocket-iconemo" v-model="notification.rocketiconemo" type="text" class="form-control"> | ||||
|                                 <label for="rocket-channel" class="form-label">Channel Name</label> | ||||
|                                 <input id="rocket-channel-name" v-model="notification.rocketchannel" type="text" class="form-control"> | ||||
|                                 <label for="rocket-button-url" class="form-label">Uptime Kuma URL</label> | ||||
|                                 <input id="rocket-button" v-model="notification.rocketbutton" type="text" class="form-control"> | ||||
|                                 <div class="form-text"> | ||||
|                                     <span style="color: red;"><sup>*</sup></span>Required | ||||
|                                     <p style="margin-top: 8px;"> | ||||
|                                         More info about webhooks on: <a href="https://docs.rocket.chat/guides/administration/administration/integrations" target="_blank">https://api.slack.com/messaging/webhooks</a> | ||||
|                                     </p> | ||||
|                                     <p style="margin-top: 8px;"> | ||||
|                                         Enter the channel name on Rocket.chat Channel Name field if you want to bypass the webhook channel. Ex: #other-channel | ||||
|                                     </p> | ||||
|                                     <p style="margin-top: 8px;"> | ||||
|                                         If you leave the Uptime Kuma URL field blank, it will default to the Project Github page. | ||||
|                                     </p> | ||||
|                                     <p style="margin-top: 8px;"> | ||||
|                                         Emoji cheat sheet: <a href="https://www.webfx.com/tools/emoji-cheat-sheet/" target="_blank">https://www.webfx.com/tools/emoji-cheat-sheet/</a> | ||||
|                                     </p> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                         </template> | ||||
| 
 | ||||
|                         <template v-if="notification.type === 'mattermost'"> | ||||
|                             <div class="mb-3"> | ||||
|                                 <label for="mattermost-webhook-url" class="form-label">Webhook URL<span style="color:red;"><sup>*</sup></span></label> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue