This is a followup question to this comment about dismissing a notification on the Lametric clock. We use the Lametric clock to display notifications whenever a build fails. So far, someone would need to get up and physically press the button on the Lametric clock to dismiss the notification again. How can this be solved using powershell?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
To solve this, we first made a GET request to get a list of notifications IDs in the queue of the Lametric clock:
$request = @{uri = 'http://192.168.37.75:8080/api/v2';
Method = 'GET';
Headers = @{Authorization = 'Basic <base64-encoded-authentication-string>'; "Content-Type" = 'application/json' }
}
$notifications = invoke-webrequest -UseBasicParsing @request
$request = @{uri = 'http://192.168.37.75:8080/api/v2/device/notifications';
Method = 'GET';
Headers = @{Authorization = 'Basic <base64-encoded-authentication-string>'; "Content-Type" = 'application/json' }
}
$notifications = invoke-webrequest -UseBasicParsing @request
This will return an object with a property content containing a JSON string. This can be converted to a list of objects:
$notification = $notifications.Content | ConvertFrom-Json
Taking the first element from that list we can generate the URI to call
$notificationUri = 'http://192.168.37.75:8080/api/v2/device/notifications/' + $notification[0].ID;
and use that to dismiss the notification
$request = @{uri = $notificationUri
Method = 'DELETE';
Headers = @{Authorization = 'Basic <base64-encoded-authentication-string>'; "Content-Type" = 'application/json' }
}
invoke-webrequest -UseBasicParsing @request