mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-04 20:45:40 +00:00
fix(hooks): decouple message:sent internal hook from mirror param
(cherry picked from commit 1afd7030f8)
This commit is contained in:
committed by
Peter Steinberger
parent
c7bf0dacb8
commit
01c1f68ab3
@@ -478,7 +478,7 @@ describe("deliverOutboundPayloads", () => {
|
|||||||
expect(internalHookMocks.triggerInternalHook).toHaveBeenCalledTimes(1);
|
expect(internalHookMocks.triggerInternalHook).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not emit internal message:sent hook when mirror sessionKey is missing", async () => {
|
it("does not emit internal message:sent hook when neither mirror nor sessionKey is provided", async () => {
|
||||||
const sendWhatsApp = vi.fn().mockResolvedValue({ messageId: "w1", toJid: "jid" });
|
const sendWhatsApp = vi.fn().mockResolvedValue({ messageId: "w1", toJid: "jid" });
|
||||||
|
|
||||||
await deliverOutboundPayloads({
|
await deliverOutboundPayloads({
|
||||||
@@ -493,6 +493,35 @@ describe("deliverOutboundPayloads", () => {
|
|||||||
expect(internalHookMocks.triggerInternalHook).not.toHaveBeenCalled();
|
expect(internalHookMocks.triggerInternalHook).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("emits internal message:sent hook when sessionKey is provided without mirror", async () => {
|
||||||
|
const sendWhatsApp = vi.fn().mockResolvedValue({ messageId: "w1", toJid: "jid" });
|
||||||
|
|
||||||
|
await deliverOutboundPayloads({
|
||||||
|
cfg: whatsappChunkConfig,
|
||||||
|
channel: "whatsapp",
|
||||||
|
to: "+1555",
|
||||||
|
payloads: [{ text: "hello" }],
|
||||||
|
deps: { sendWhatsApp },
|
||||||
|
sessionKey: "agent:main:main",
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(internalHookMocks.createInternalHookEvent).toHaveBeenCalledTimes(1);
|
||||||
|
expect(internalHookMocks.createInternalHookEvent).toHaveBeenCalledWith(
|
||||||
|
"message",
|
||||||
|
"sent",
|
||||||
|
"agent:main:main",
|
||||||
|
expect.objectContaining({
|
||||||
|
to: "+1555",
|
||||||
|
content: "hello",
|
||||||
|
success: true,
|
||||||
|
channelId: "whatsapp",
|
||||||
|
conversationId: "+1555",
|
||||||
|
messageId: "w1",
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
expect(internalHookMocks.triggerInternalHook).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
|
||||||
it("calls failDelivery instead of ackDelivery on bestEffort partial failure", async () => {
|
it("calls failDelivery instead of ackDelivery on bestEffort partial failure", async () => {
|
||||||
const sendWhatsApp = vi
|
const sendWhatsApp = vi
|
||||||
.fn()
|
.fn()
|
||||||
|
|||||||
@@ -216,6 +216,8 @@ type DeliverOutboundPayloadsCoreParams = {
|
|||||||
mediaUrls?: string[];
|
mediaUrls?: string[];
|
||||||
};
|
};
|
||||||
silent?: boolean;
|
silent?: boolean;
|
||||||
|
/** Session key for internal hook dispatch (when `mirror` is not needed). */
|
||||||
|
sessionKey?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
type DeliverOutboundPayloadsParams = DeliverOutboundPayloadsCoreParams & {
|
type DeliverOutboundPayloadsParams = DeliverOutboundPayloadsCoreParams & {
|
||||||
@@ -444,7 +446,7 @@ async function deliverOutboundPayloadsCore(
|
|||||||
return normalized ? [normalized] : [];
|
return normalized ? [normalized] : [];
|
||||||
});
|
});
|
||||||
const hookRunner = getGlobalHookRunner();
|
const hookRunner = getGlobalHookRunner();
|
||||||
const sessionKeyForInternalHooks = params.mirror?.sessionKey;
|
const sessionKeyForInternalHooks = params.mirror?.sessionKey ?? params.sessionKey;
|
||||||
for (const payload of normalizedPayloads) {
|
for (const payload of normalizedPayloads) {
|
||||||
const payloadSummary: NormalizedOutboundPayload = {
|
const payloadSummary: NormalizedOutboundPayload = {
|
||||||
text: payload.text ?? "",
|
text: payload.text ?? "",
|
||||||
|
|||||||
Reference in New Issue
Block a user