Summary
When the assistant sends the real user-facing response via message(action=send) to another channel (for example Feishu), the required follow-up NO_REPLY can produce bad UX in webchat.
Environment
- channel:
webchat
- cross-channel delivery to:
feishu
- main agent session
Repro
- Start in webchat
- Ask the assistant to send the result to Feishu
- Assistant calls
message(action=send, channel=feishu, ...)
- Assistant then returns
NO_REPLY
- Observe the webchat turn afterward
Expected
After successful message-tool delivery, webchat should cleanly suppress the assistant turn or otherwise handle NO_REPLY invisibly.
Actual
The post-delivery NO_REPLY behavior creates awkward/broken UX in webchat. It feels like a hard non-response after the assistant successfully completed the task elsewhere.
Why this matters
This makes cross-channel workflows feel brittle and confusing, even when the actual delivery succeeded.
Possible fix directions
- Treat
NO_REPLY as a fully suppressed control token on webchat
- Auto-suppress the assistant turn after successful
message(action=send) delivery
- Add channel-aware handling so the originating surface does not show a broken/empty reply state
Summary
When the assistant sends the real user-facing response via
message(action=send)to another channel (for example Feishu), the required follow-upNO_REPLYcan produce bad UX in webchat.Environment
webchatfeishuRepro
message(action=send, channel=feishu, ...)NO_REPLYExpected
After successful
message-tool delivery, webchat should cleanly suppress the assistant turn or otherwise handleNO_REPLYinvisibly.Actual
The post-delivery
NO_REPLYbehavior creates awkward/broken UX in webchat. It feels like a hard non-response after the assistant successfully completed the task elsewhere.Why this matters
This makes cross-channel workflows feel brittle and confusing, even when the actual delivery succeeded.
Possible fix directions
NO_REPLYas a fully suppressed control token on webchatmessage(action=send)delivery