diff --git a/bundles/org.openhab.binding.pushover/README.md b/bundles/org.openhab.binding.pushover/README.md index f20be7d7c2d..f19e70bdfe8 100644 --- a/bundles/org.openhab.binding.pushover/README.md +++ b/bundles/org.openhab.binding.pushover/README.md @@ -32,6 +32,10 @@ Currently the binding does not support any Channels. All actions return a `Boolean` value to indicate if the message was sent successfully or not. The parameter `message` is **mandatory**, the `title` parameter defaults to whatever value you defined in the `title` related configuration parameter. +Parameters declared as `@Nullable` are not optional. +One has to pass a `null` value if it should be skipped or the default value for it should be used. + +- `sendMessage(String message, @Nullable String title, @Nullable String sound, @Nullable String url, @Nullable String urlTitle, @Nullable String attachment, @Nullable String contentType, @Nullable Integer priority, @Nullable String device)` - This method is used to send a plain text message providing all available parameters. - `sendMessage(String message, @Nullable String title)` - This method is used to send a plain text message. diff --git a/bundles/org.openhab.binding.pushover/src/main/java/org/openhab/binding/pushover/internal/actions/PushoverActions.java b/bundles/org.openhab.binding.pushover/src/main/java/org/openhab/binding/pushover/internal/actions/PushoverActions.java index 2b85055fd79..ebef8cdc058 100644 --- a/bundles/org.openhab.binding.pushover/src/main/java/org/openhab/binding/pushover/internal/actions/PushoverActions.java +++ b/bundles/org.openhab.binding.pushover/src/main/java/org/openhab/binding/pushover/internal/actions/PushoverActions.java @@ -12,7 +12,7 @@ */ package org.openhab.binding.pushover.internal.actions; -import static org.openhab.binding.pushover.internal.PushoverBindingConstants.DEFAULT_TITLE; +import static org.openhab.binding.pushover.internal.PushoverBindingConstants.*; import static org.openhab.binding.pushover.internal.connection.PushoverMessageBuilder.*; import org.eclipse.jdt.annotation.NonNullByDefault; @@ -43,6 +43,53 @@ public class PushoverActions implements ThingActions { private @NonNullByDefault({}) PushoverAccountHandler accountHandler; + @RuleAction(label = "@text/sendMessageActionLabel", description = "@text/sendMessageActionDescription") + public @ActionOutput(name = "sent", label = "@text/sendMessageActionOutputLabel", description = "@text/sendMessageActionOutputDescription", type = "java.lang.Boolean") Boolean sendMessage( + @ActionInput(name = "message", label = "@text/sendMessageActionInputMessageLabel", description = "@text/sendMessageActionInputMessageDescription", type = "java.lang.String", required = true) String message, + @ActionInput(name = "title", label = "@text/sendMessageActionInputTitleLabel", description = "@text/sendMessageActionInputTitleDescription", type = "java.lang.String", defaultValue = DEFAULT_TITLE) @Nullable String title, + @ActionInput(name = "sound", label = "@text/sendMessageActionInputSoundLabel", description = "@text/sendMessageActionInputSoundDescription", type = "java.lang.String", defaultValue = DEFAULT_SOUND) @Nullable String sound, + @ActionInput(name = "url", label = "@text/sendMessageActionInputURLLabel", description = "@text/sendMessageActionInputURLDescription", type = "java.lang.String") @Nullable String url, + @ActionInput(name = "urlTitle", label = "@text/sendMessageActionInputURLTitleLabel", description = "@text/sendMessageActionInputURLTitleDescription", type = "java.lang.String") @Nullable String urlTitle, + @ActionInput(name = "attachment", label = "@text/sendMessageActionInputAttachmentLabel", description = "@text/sendMessageActionInputAttachmentDescription", type = "java.lang.String") @Nullable String attachment, + @ActionInput(name = "contentType", label = "@text/sendMessageActionInputContentTypeLabel", description = "@text/sendMessageActionInputContentTypeDescription", type = "java.lang.String", defaultValue = DEFAULT_CONTENT_TYPE) @Nullable String contentType, + @ActionInput(name = "priority", label = "@text/sendMessageActionInputPriorityLabel", description = "@text/sendMessageActionInputPriorityDescription", type = "java.lang.Integer", defaultValue = DEFAULT_EMERGENCY_PRIORITY) @Nullable Integer priority, + @ActionInput(name = "device", label = "@text/sendMessageActionInputDeviceLabel", description = "@text/sendMessageActionInputDeviceDescription", type = "java.lang.String") @Nullable String device) { + logger.trace( + "ThingAction 'sendMessage' called with value(s): message='{}', title='{}', sound='{}', url='{}', urlTitle='{}', attachment='{}', contentType='{}', priority='{}', device='{}'", + message, title, sound, url, urlTitle, attachment, contentType, priority, device); + + PushoverMessageBuilder builder = getDefaultPushoverMessageBuilder(message); + if (sound != null) { + builder.withSound(sound); + } + if (url != null) { + builder.withUrl(url); + if (urlTitle != null) { + builder.withUrlTitle(urlTitle); + } + } + if (attachment != null) { + builder.withAttachment(attachment); + if (contentType != null) { + builder.withContentType(contentType); + } + } + if (priority != null) { + builder.withPriority(priority.intValue()); + } + if (device != null) { + builder.withDevice(device); + } + return send(builder, title); + } + + public static Boolean sendMessage(ThingActions actions, String message, @Nullable String title, + @Nullable String sound, @Nullable String url, @Nullable String urlTitle, @Nullable String attachment, + @Nullable String contentType, @Nullable Integer priority, @Nullable String device) { + return ((PushoverActions) actions).sendMessage(message, title, sound, url, urlTitle, attachment, contentType, + priority, device); + } + @RuleAction(label = "@text/sendMessageActionLabel", description = "@text/sendMessageActionDescription") public @ActionOutput(name = "sent", label = "@text/sendMessageActionOutputLabel", description = "@text/sendMessageActionOutputDescription", type = "java.lang.Boolean") Boolean sendMessage( @ActionInput(name = "message", label = "@text/sendMessageActionInputMessageLabel", description = "@text/sendMessageActionInputMessageDescription", type = "java.lang.String", required = true) String message, diff --git a/bundles/org.openhab.binding.pushover/src/main/resources/OH-INF/i18n/pushover.properties b/bundles/org.openhab.binding.pushover/src/main/resources/OH-INF/i18n/pushover.properties index c6a3bf9a847..5e1bad241df 100644 --- a/bundles/org.openhab.binding.pushover/src/main/resources/OH-INF/i18n/pushover.properties +++ b/bundles/org.openhab.binding.pushover/src/main/resources/OH-INF/i18n/pushover.properties @@ -19,6 +19,9 @@ sendMessageActionInputURLDescription = A supplementary URL to show with the mess sendMessageActionInputURLTitleLabel = URL Title sendMessageActionInputURLTitleDescription = A title for the URL, otherwise just the URL is shown. +sendMessageActionInputSoundLabel = Sound +sendMessageActionInputSoundDescription = The notification sound on target device. + sendHTMLMessageActionLabel = send a HTML message sendHTMLMessageActionDescription = This method is used to send a HTML message. diff --git a/bundles/org.openhab.binding.pushover/src/main/resources/OH-INF/i18n/pushover_de.properties b/bundles/org.openhab.binding.pushover/src/main/resources/OH-INF/i18n/pushover_de.properties index bcc86ce12c8..f340464ea01 100644 --- a/bundles/org.openhab.binding.pushover/src/main/resources/OH-INF/i18n/pushover_de.properties +++ b/bundles/org.openhab.binding.pushover/src/main/resources/OH-INF/i18n/pushover_de.properties @@ -35,6 +35,9 @@ sendMessageActionInputMessageDescription = Die Nachricht. sendMessageActionInputTitleLabel = Titel sendMessageActionInputTitleDescription = Titel der Nachricht. +sendMessageActionInputSoundLabel = Benachrichtigungston +sendMessageActionInputSoundDescription = Benachrichtigungston auf dem Endgerät. + sendURLMessageActionLabel = eine Textnachricht mit URL senden sendURLMessageActionDescription = Action zum Versenden einer Textnachricht mit einer URL. sendMessageActionInputURLLabel = URL