From 9b0ba516aaecb7e3fc62d1ab515e2ab41c7680c2 Mon Sep 17 00:00:00 2001 From: Paulo Bernardo Date: Fri, 22 Nov 2024 12:03:15 -0300 Subject: [PATCH 1/3] feat: add new broadcast_type attribute --- cmd/flowrunner/main_test.go | 2 +- flows/actions/send_broadcast.go | 14 +++--- flows/events/base_test.go | 1 + flows/events/broadcast_created.go | 71 +++++++++++++++++-------------- 4 files changed, 49 insertions(+), 39 deletions(-) diff --git a/cmd/flowrunner/main_test.go b/cmd/flowrunner/main_test.go index a8a495470..652c5d03f 100644 --- a/cmd/flowrunner/main_test.go +++ b/cmd/flowrunner/main_test.go @@ -65,7 +65,7 @@ func TestPrintEvent(t *testing.T) { event flows.Event expected string }{ - {events.NewBroadcastCreated(map[envs.Language]*events.BroadcastTranslation{"eng": {Text: "hello"}}, "eng", nil, nil, nil), `🔉 broadcasted 'hello' to ...`}, + {events.NewBroadcastCreated(map[envs.Language]*events.BroadcastTranslation{"eng": {Text: "hello"}}, "eng", nil, nil, nil, events.BroadcastTypeDefault), `🔉 broadcasted 'hello' to ...`}, {events.NewContactFieldChanged(sa.Fields().Get("gender"), flows.NewValue(types.NewXText("M"), nil, nil, "", "", "")), `✏️ field 'gender' changed to 'M'`}, {events.NewContactFieldChanged(sa.Fields().Get("gender"), nil), `✏️ field 'gender' cleared`}, {events.NewContactGroupsChanged([]*flows.Group{sa.Groups().Get("b7cf0d83-f1c9-411c-96fd-c511a4cfa86d")}, nil), `👪 added to 'Testers'`}, diff --git a/flows/actions/send_broadcast.go b/flows/actions/send_broadcast.go index fd9093ead..39af54f0e 100644 --- a/flows/actions/send_broadcast.go +++ b/flows/actions/send_broadcast.go @@ -21,12 +21,12 @@ const TypeSendBroadcast string = "send_broadcast" // The URNs and text fields may be templates. A [event:broadcast_created] event will be created for each unique urn, contact and group // with the evaluated text. // -// { -// "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9", -// "type": "send_broadcast", -// "urns": ["tel:+12065551212"], -// "text": "Hi @contact.name, are you ready to complete today's survey?" -// } +// { +// "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9", +// "type": "send_broadcast", +// "urns": ["tel:+12065551212"], +// "text": "Hi @contact.name, are you ready to complete today's survey?" +// } // // @action send_broadcast type SendBroadcastAction struct { @@ -84,7 +84,7 @@ func (a *SendBroadcastAction) Execute(run flows.FlowRun, step flows.Step, logMod // if we have any recipients, log an event if len(urnList) > 0 || len(contactRefs) > 0 || len(groupRefs) > 0 { - logEvent(events.NewBroadcastCreated(translations, run.Flow().Language(), groupRefs, contactRefs, urnList)) + logEvent(events.NewBroadcastCreated(translations, run.Flow().Language(), groupRefs, contactRefs, urnList, events.BroadcastTypeDefault)) } return nil diff --git a/flows/events/base_test.go b/flows/events/base_test.go index 99ec53a6a..9203023a8 100644 --- a/flows/events/base_test.go +++ b/flows/events/base_test.go @@ -109,6 +109,7 @@ func TestEventMarshaling(t *testing.T) { flows.NewContactReference(flows.ContactUUID("b2aaf598-1bb3-4c7d-b6bb-1f8dbe2ac16f"), "Jim"), }, []urns.URN{urns.URN("tel:+12345678900")}, + events.BroadcastTypeDefault, ), `{ "base_language": "eng", diff --git a/flows/events/broadcast_created.go b/flows/events/broadcast_created.go index 7f1988d52..f1a817925 100644 --- a/flows/events/broadcast_created.go +++ b/flows/events/broadcast_created.go @@ -12,6 +12,13 @@ func init() { registerType(TypeBroadcastCreated, func() flows.Event { return &BroadcastCreatedEvent{} }) } +type BroadcastType string + +const ( + BroadcastTypeDefault = BroadcastType("D") + BroadcastTypeWhatsApp = BroadcastType("W") +) + // TypeBroadcastCreated is a constant for outgoing message events const TypeBroadcastCreated string = "broadcast_created" @@ -24,46 +31,48 @@ type BroadcastTranslation struct { // BroadcastCreatedEvent events are created when an action wants to send a message to other contacts. // -// { -// "type": "broadcast_created", -// "created_on": "2006-01-02T15:04:05Z", -// "translations": { -// "eng": { -// "text": "hi, what's up", -// "attachments": [], -// "quick_replies": ["All good", "Got 99 problems"] -// }, -// "spa": { -// "text": "Que pasa", -// "attachments": [], -// "quick_replies": ["Todo bien", "Tengo 99 problemas"] -// } -// }, -// "base_language": "eng", -// "urns": ["tel:+12065551212"], -// "contacts": [{"uuid": "0e06f977-cbb7-475f-9d0b-a0c4aaec7f6a", "name": "Bob"}] -// } +// { +// "type": "broadcast_created", +// "created_on": "2006-01-02T15:04:05Z", +// "translations": { +// "eng": { +// "text": "hi, what's up", +// "attachments": [], +// "quick_replies": ["All good", "Got 99 problems"] +// }, +// "spa": { +// "text": "Que pasa", +// "attachments": [], +// "quick_replies": ["Todo bien", "Tengo 99 problemas"] +// } +// }, +// "base_language": "eng", +// "urns": ["tel:+12065551212"], +// "contacts": [{"uuid": "0e06f977-cbb7-475f-9d0b-a0c4aaec7f6a", "name": "Bob"}] +// } // // @event broadcast_created type BroadcastCreatedEvent struct { baseEvent - Translations map[envs.Language]*BroadcastTranslation `json:"translations" validate:"min=1,dive"` - BaseLanguage envs.Language `json:"base_language" validate:"required"` - Groups []*assets.GroupReference `json:"groups,omitempty" validate:"dive"` - Contacts []*flows.ContactReference `json:"contacts,omitempty" validate:"dive"` - URNs []urns.URN `json:"urns,omitempty" validate:"dive,urn"` + Translations map[envs.Language]*BroadcastTranslation `json:"translations" validate:"min=1,dive"` + BaseLanguage envs.Language `json:"base_language" validate:"required"` + Groups []*assets.GroupReference `json:"groups,omitempty" validate:"dive"` + Contacts []*flows.ContactReference `json:"contacts,omitempty" validate:"dive"` + URNs []urns.URN `json:"urns,omitempty" validate:"dive,urn"` + BroadcastType BroadcastType `json:"broadcast_type"` } // NewBroadcastCreated creates a new outgoing msg event for the given recipients -func NewBroadcastCreated(translations map[envs.Language]*BroadcastTranslation, baseLanguage envs.Language, groups []*assets.GroupReference, contacts []*flows.ContactReference, urns []urns.URN) *BroadcastCreatedEvent { +func NewBroadcastCreated(translations map[envs.Language]*BroadcastTranslation, baseLanguage envs.Language, groups []*assets.GroupReference, contacts []*flows.ContactReference, urns []urns.URN, broadcastType BroadcastType) *BroadcastCreatedEvent { return &BroadcastCreatedEvent{ - baseEvent: newBaseEvent(TypeBroadcastCreated), - Translations: translations, - BaseLanguage: baseLanguage, - Groups: groups, - Contacts: contacts, - URNs: urns, + baseEvent: newBaseEvent(TypeBroadcastCreated), + Translations: translations, + BaseLanguage: baseLanguage, + Groups: groups, + Contacts: contacts, + URNs: urns, + BroadcastType: broadcastType, } } From da9f87157ece679693987822a6a686b7337c2ebd Mon Sep 17 00:00:00 2001 From: Paulo Bernardo Date: Fri, 22 Nov 2024 12:19:17 -0300 Subject: [PATCH 2/3] feat: update tests --- flows/actions/testdata/send_broadcast.json | 3 +++ flows/events/base_test.go | 1 + flows/events/broadcast_created.go | 2 +- test/testdata/runner/all_actions.test.json | 4 ++++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/flows/actions/testdata/send_broadcast.json b/flows/actions/testdata/send_broadcast.json index e13e8e073..3deb49624 100644 --- a/flows/actions/testdata/send_broadcast.json +++ b/flows/actions/testdata/send_broadcast.json @@ -109,6 +109,7 @@ "events": [ { "type": "broadcast_created", + "broadcast_type": "D", "created_on": "2018-10-18T14:20:30.000123456Z", "step_uuid": "59d74b86-3e2f-4a93-aece-b05d2fdcde0c", "translations": { @@ -168,6 +169,7 @@ }, { "type": "broadcast_created", + "broadcast_type": "D", "created_on": "2018-10-18T14:20:30.000123456Z", "step_uuid": "59d74b86-3e2f-4a93-aece-b05d2fdcde0c", "translations": { @@ -269,6 +271,7 @@ "events": [ { "type": "broadcast_created", + "broadcast_type": "D", "created_on": "2018-10-18T14:20:30.000123456Z", "step_uuid": "59d74b86-3e2f-4a93-aece-b05d2fdcde0c", "translations": { diff --git a/flows/events/base_test.go b/flows/events/base_test.go index 9203023a8..9c9a8e565 100644 --- a/flows/events/base_test.go +++ b/flows/events/base_test.go @@ -113,6 +113,7 @@ func TestEventMarshaling(t *testing.T) { ), `{ "base_language": "eng", + "broadcast_type": "D", "contacts": [ { "name": "Jim", diff --git a/flows/events/broadcast_created.go b/flows/events/broadcast_created.go index f1a817925..afa59e143 100644 --- a/flows/events/broadcast_created.go +++ b/flows/events/broadcast_created.go @@ -60,7 +60,7 @@ type BroadcastCreatedEvent struct { Groups []*assets.GroupReference `json:"groups,omitempty" validate:"dive"` Contacts []*flows.ContactReference `json:"contacts,omitempty" validate:"dive"` URNs []urns.URN `json:"urns,omitempty" validate:"dive,urn"` - BroadcastType BroadcastType `json:"broadcast_type"` + BroadcastType BroadcastType `json:"broadcast_type,omitempty"` } // NewBroadcastCreated creates a new outgoing msg event for the given recipients diff --git a/test/testdata/runner/all_actions.test.json b/test/testdata/runner/all_actions.test.json index e6808a79b..d834a2239 100644 --- a/test/testdata/runner/all_actions.test.json +++ b/test/testdata/runner/all_actions.test.json @@ -172,6 +172,7 @@ }, { "base_language": "eng", + "broadcast_type": "D", "created_on": "2018-07-06T12:30:21.123456789Z", "step_uuid": "8720f157-ca1c-432f-9c0b-2014ddc77094", "translations": { @@ -189,6 +190,7 @@ }, { "base_language": "eng", + "broadcast_type": "D", "created_on": "2018-07-06T12:30:23.123456789Z", "groups": [ { @@ -646,6 +648,7 @@ }, { "base_language": "eng", + "broadcast_type": "D", "created_on": "2018-07-06T12:30:21.123456789Z", "step_uuid": "8720f157-ca1c-432f-9c0b-2014ddc77094", "translations": { @@ -663,6 +666,7 @@ }, { "base_language": "eng", + "broadcast_type": "D", "created_on": "2018-07-06T12:30:23.123456789Z", "groups": [ { From 9476c618240bce46f393e98c1b81ec1e32cd04bb Mon Sep 17 00:00:00 2001 From: Paulo Bernardo Date: Fri, 22 Nov 2024 12:54:44 -0300 Subject: [PATCH 3/3] Update WENI-CHANGELOG.md for 1.5.3 --- WENI-CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/WENI-CHANGELOG.md b/WENI-CHANGELOG.md index 4f3133f4e..60396d9ac 100644 --- a/WENI-CHANGELOG.md +++ b/WENI-CHANGELOG.md @@ -1,3 +1,7 @@ +1.5.3 +---------- + * Add new broadcast_type attribute + 1.5.2 ---------- * Add queue uuid on topic