def publish(self, message: Message, **topic_args):
        """Publish a Hermes message to MQTT."""
        try:
            topic = message.topic(**topic_args)
            payload = message.payload()

            if message.is_binary_payload():
                # Don't log audio frames
                if not isinstance(message, (AudioFrame, AudioSessionFrame)):
                    _LOGGER.debug(
                        "-> %s(%s byte(s))", message.__class__.__name__, len(payload)
                    )
            else:
                # Log most JSON messages
                if isinstance(message, (AsrTrain, NluTrain)):
                    # Just class name
                    _LOGGER.debug("-> %s", message.__class__.__name__)
                    _LOGGER.debug("Publishing %s bytes(s) to %s", len(payload), topic)
                elif not isinstance(message, AudioSummary):
                    # Entire message
                    _LOGGER.debug("-> %s", message)
                    _LOGGER.debug("Publishing %s bytes(s) to %s", len(payload), topic)

            self.client.publish(topic, payload)
        except Exception:
            _LOGGER.exception("publish")
示例#2
0
 def publish(self, message: Message, **topic_args):
     """Publish a Hermes message to MQTT."""
     try:
         _LOGGER.debug("-> %s", message)
         topic = message.topic(**topic_args)
         payload = json.dumps(attr.asdict(message))
         _LOGGER.debug("Publishing %s char(s) to %s", len(payload), topic)
         self.client.publish(topic, payload)
     except Exception:
         _LOGGER.exception("on_message")
    def publish(self, message: Message, **topic_args):
        """Publish a Hermes message to MQTT."""
        try:
            topic = message.topic(**topic_args)
            if isinstance(message, (AudioFrame, AudioPlayBytes)):
                # Handle binary payloads specially
                _LOGGER.debug(
                    "-> %s(%s byte(s)) on %s",
                    message.__class__.__name__,
                    len(message.wav_data),
                    topic,
                )
                payload = message.wav_data
            else:
                _LOGGER.debug("-> %s", message)
                payload = json.dumps(attr.asdict(message))

            _LOGGER.debug("Publishing %s char(s) to %s", len(payload), topic)
            self.client.publish(topic, payload)
        except Exception:
            _LOGGER.exception("on_message")