Souscrire au topic agents/register : notification XMPP à chaque agent en ligne

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-07 16:55:27 +00:00
parent ec0b4a7214
commit dbaedc0799
+21 -1
View File
@@ -133,6 +133,24 @@ def on_mqtt_notification(client, userdata, msg):
except Exception as e: except Exception as e:
print("[MQTT] Erreur parsing notification scheduler : {}".format(e)) print("[MQTT] Erreur parsing notification scheduler : {}".format(e))
def on_mqtt_register(client, userdata, msg):
"""Reçoit les déclarations de mise en ligne des agents."""
try:
data = json.loads(msg.payload.decode(errors="replace"))
agent = data.get("agent", "?")
jid = data.get("jid", "?")
mqtt_inbox = data.get("mqtt_inbox", "?")
speciality = data.get("speciality", "")
print("[REGISTER] {} en ligne (JID: {}, inbox: {})".format(agent, jid, mqtt_inbox))
# Notifier sylvain via XMPP
if xmpp_bot:
notif = "[EN LIGNE] {}\n JID : {}\n MQTT : {}".format(agent, jid, mqtt_inbox)
if speciality:
notif += "\n Rôle : {}".format(speciality)
xmpp_bot.send_message(mto=ADMIN_JID, mbody=notif, mtype='chat')
except Exception as e:
print("[MQTT] Erreur parsing register : {}".format(e))
def start_mqtt_listener(): def start_mqtt_listener():
global mqtt_pub_client global mqtt_pub_client
@@ -145,14 +163,16 @@ def start_mqtt_listener():
sub.message_callback_add("agents/agent1/inbox", on_mqtt_message) sub.message_callback_add("agents/agent1/inbox", on_mqtt_message)
sub.message_callback_add("agents/errors", on_mqtt_error) sub.message_callback_add("agents/errors", on_mqtt_error)
sub.message_callback_add("agents/scheduler/notifications", on_mqtt_notification) sub.message_callback_add("agents/scheduler/notifications", on_mqtt_notification)
sub.message_callback_add("agents/register", on_mqtt_register)
sub.on_message = on_mqtt_message # fallback sub.on_message = on_mqtt_message # fallback
sub.connect(MQTT_HOST, MQTT_PORT) sub.connect(MQTT_HOST, MQTT_PORT)
sub.subscribe([ sub.subscribe([
(MQTT_INBOX, 0), (MQTT_INBOX, 0),
("agents/errors", 0), ("agents/errors", 0),
("agents/scheduler/notifications", 0), ("agents/scheduler/notifications", 0),
("agents/register", 0),
]) ])
print("[MQTT] Agent1 écoute sur {}, agents/errors, agents/scheduler/notifications".format(MQTT_INBOX)) print("[MQTT] Agent1 écoute sur {}, agents/errors, agents/scheduler/notifications, agents/register".format(MQTT_INBOX))
sub.loop_forever() sub.loop_forever()
# ── BOT XMPP ───────────────────────────────────────────────────────────── # ── BOT XMPP ─────────────────────────────────────────────────────────────