# Module `lib.server.webhook`

These classes are used to interact with domoticz or other application

Expand source code

    # Distributed under Pycameresp License
    # Copyright (c) 2023 Remi BERTHOLET
    """ These classes are used to interact with domoticz or other application """
    import server.notifier
    import server.httpclient
    import tools.jsonconfig

    class WebhookConfig(tools.jsonconfig.JsonConfig):
            """ Configuration of the webhook """
            def __init__(self):
                    """ Constructor """
                    tools.jsonconfig.JsonConfig.__init__(self)

                    # Indicates if the presence detection is activated
                    self.activated = False

                    # Webhook when motion detected
                    self.motion_detected = b""

                    # Webhook when no motion detected
                    self.no_motion_detected = b""

                    # Webhook when the house contains its occupants
                    self.inhabited_house = b""

                    # Webhook when the house is empty
                    self.empty_house = b""

    class WebHook:
            """ Webhook """
            config = None
            @staticmethod
            @server.notifier.Notifier.add()
            async def notify_message(notification):
                    """ Notify message """
                    if WebHook.config is None:
                            WebHook.config = WebhookConfig()
                            if WebHook.config.load() is False:
                                    WebHook.config.save()
                    else:
                            WebHook.config.refresh()

                    result = True
                    if WebHook.config.activated or notification.forced and notification.url is not None:
                            if WebHook.notify_message not in notification.sent:
                                    result = await server.httpclient.HttpClient.request(method=b"GET", url=notification.url)
                                    if result is True:
                                            notification.sent.append(WebHook.notify_message)
                    return result

## Classes

`class WebHook`

  Webhook

  Expand source code

      class WebHook:
              """ Webhook """
              config = None
              @staticmethod
              @server.notifier.Notifier.add()
              async def notify_message(notification):
                      """ Notify message """
                      if WebHook.config is None:
                              WebHook.config = WebhookConfig()
                              if WebHook.config.load() is False:
                                      WebHook.config.save()
                      else:
                              WebHook.config.refresh()

                      result = True
                      if WebHook.config.activated or notification.forced and notification.url is not None:
                              if WebHook.notify_message not in notification.sent:
                                      result = await server.httpclient.HttpClient.request(method=b"GET", url=notification.url)
                                      if result is True:
                                              notification.sent.append(WebHook.notify_message)
                      return result

  ### Class variables

  `var config`

  ### Static methods

  `async def notify_message(notification)`

    Notify message

    Expand source code

        @staticmethod
        @server.notifier.Notifier.add()
        async def notify_message(notification):
                """ Notify message """
                if WebHook.config is None:
                        WebHook.config = WebhookConfig()
                        if WebHook.config.load() is False:
                                WebHook.config.save()
                else:
                        WebHook.config.refresh()

                result = True
                if WebHook.config.activated or notification.forced and notification.url is not None:
                        if WebHook.notify_message not in notification.sent:
                                result = await server.httpclient.HttpClient.request(method=b"GET", url=notification.url)
                                if result is True:
                                        notification.sent.append(WebHook.notify_message)
                return result

`class WebhookConfig`

  Configuration of the webhook

  Constructor

  Expand source code

      class WebhookConfig(tools.jsonconfig.JsonConfig):
              """ Configuration of the webhook """
              def __init__(self):
                      """ Constructor """
                      tools.jsonconfig.JsonConfig.__init__(self)

                      # Indicates if the presence detection is activated
                      self.activated = False

                      # Webhook when motion detected
                      self.motion_detected = b""

                      # Webhook when no motion detected
                      self.no_motion_detected = b""

                      # Webhook when the house contains its occupants
                      self.inhabited_house = b""

                      # Webhook when the house is empty
                      self.empty_house = b""

  ### Ancestors

  - tools.jsonconfig.JsonConfig