Closed maheshsattala closed 3 months ago
The update introduces a new broadcast message resend feature. A new endpoint has been added to facilitate resending broadcast messages, supported by modifications in validation, execution, and retry handling across various components. The changes include adjustments to data models, constants, and configurations to support the retry mechanism and logging.
File Path | Change Summary |
---|---|
kairon/api/app/routers/bot/channels.py |
Added endpoint for resending broadcast messages. |
kairon/events/definitions/message_broadcast.py |
Added methods for retry validation and broadcast resending. |
kairon/events/definitions/scheduled_base.py |
Updated enqueue method to include resend logic and added abstract _resend_broadcast method. |
kairon/shared/channels/broadcast/whatsapp.py |
Added resend logic with logging in Whatsapp class. |
kairon/shared/chat/broadcast/constants.py |
Added new enum values for resend actions and broadcast types. |
kairon/shared/chat/broadcast/data_objects.py |
Added retry_count field to MessageBroadcastSettings class. |
kairon/shared/chat/broadcast/processor.py |
Modified methods to handle retry count and resend logic. |
kairon/shared/constants.py |
Added resend_broadcast constant to EventRequestType enum. |
kairon/shared/data/data_objects.py |
Added retry_broadcasting_limit field to BotSettings class. |
system.yaml |
Added error_codes configuration for channels. |
tests/integration_test/services_test.py |
Added tests for onboarding, resending, and listing broadcast messages. |
tests/testing_data/system.yaml |
Added error_codes field for channels in system.yaml file. |
tests/unit_test/action/action_test.py |
Included retry_broadcasting_limit in test dictionaries. |
tests/unit_test/channels/broadcast_processor_test.py |
Adjusted test functions for schedules, retrieving, and deleting. |
tests/unit_test/events/definitions_test.py |
Modified test methods for broadcast events to include retry_count . |
sequenceDiagram
participant User
participant API as API (channels.py)
participant EventProcessor as Event Processor
participant Config as Configuration
participant Queue
User->>API: POST /resend_message_broadcast_event
API->>EventProcessor: Validate and process request
EventProcessor->>Config: Retrieve broadcast configuration
EventProcessor->>EventProcessor: Validate retry limit
EventProcessor->>Queue: Enqueue resend broadcast event
Note over EventProcessor: Execute resend logic
Queue->>EventProcessor: Process resend event
EventProcessor->>EventProcessor: Update retry count
EventProcessor->>API: Send response
API->>User: Broadcast resent
In the code, where logic flows, A retry path now gently grows. Resend the broadcast, give it a chance, To deliver the message, on a second dance. With counted tries, and error’s crest, Our system strives to do its best.
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Added code related to Resend Broadcast. Made changes related to campaign metrics. Fixed and added test cases related to the same.
Summary by CodeRabbit
New Features
Bug Fixes
Chores
Tests