Skip to content

feat: implement and refine handling of interactive message flows#1146

Open
TobyG74 wants to merge 5 commits into
tulir:mainfrom
TobyG74:main
Open

feat: implement and refine handling of interactive message flows#1146
TobyG74 wants to merge 5 commits into
tulir:mainfrom
TobyG74:main

Conversation

@TobyG74
Copy link
Copy Markdown

@TobyG74 TobyG74 commented May 14, 2026

Checklist

Copilot AI review requested due to automatic review settings May 14, 2026 08:56
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refines outgoing message node construction for interactive message flows, especially biz metadata for native flow/list/button messages and media encryption attributes.

Changes:

  • Adds buildBizNode to generate richer biz nodes for native-flow and list messages.
  • Updates automatic biz-node insertion to avoid adding one when extra nodes already include biz/hsm metadata.
  • Changes media encryption attributes to always include detected media type.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread send.go
"privacy_mode_ts": privacyTS,
},
Content: []waBinary.Node{
{Tag: "list", Attrs: waBinary.Attrs{"v": "2", "type": "product_list"}},
Comment thread send.go
Comment on lines +1050 to +1062
return waBinary.Node{
Tag: "biz",
Attrs: waBinary.Attrs{
"actual_actors": "2",
"host_storage": "2",
"privacy_mode_ts": privacyTS,
},
Content: []waBinary.Node{
{
Tag: "interactive",
Attrs: waBinary.Attrs{"type": "native_flow", "v": "1"},
Content: []waBinary.Node{
{Tag: "native_flow", Attrs: waBinary.Attrs{"v": "9", "name": "mixed"}},
Comment thread send.go
Comment on lines +987 to +993
if msg.InteractiveMessage != nil {
if nf := msg.InteractiveMessage.GetNativeFlowMessage(); nf != nil {
if buttons := nf.GetButtons(); len(buttons) > 0 {
firstButtonName = buttons[0].GetName()
}
}
}
Comment thread send.go
encAttrs := waBinary.Attrs{}
// Only include encMediaType for 1:1 messages (groups don't have a device-sent message plaintext)
if encMediaType := getMediaTypeFromMessage(message); dsmPlaintext != nil && encMediaType != "" {
if encMediaType := getMediaTypeFromMessage(message); encMediaType != "" {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants