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")
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")