...
- Can prevent accidentally having an agent as available in 2 running campaigns at once (which is a time consuming debug exercise for all parties)
- Helps us keep our DB's clean
- And keeping old campaigns seems to encourage bad practices in terms of strategy with Managers:
- campaigns are hardly ever continued or rerun in practice, instead new campaigns are built from uncalled/unsuccessful outcomes from previous campaigns and run, which provides much better results.
- We would recommend automatically cleaning off campaigns that have been run at least once and last over a week ago.
Basic Implementation Requirements
For basic implementation there is a minimum set of API commands and notifications that need to be handled
- Notifications:
- Campaign Status Notifications - they will tell your campaign manager when a campaign changes state.
- API Calls:
- Create a Campaign - creates a new campaign
- Modify a campaign - changes the campaign, usually to alter settings or change its state
- List Campaigns - instead of relying on what you have stored it's always best to instead load the campaigns from the dialer and correlate that list to what you have stored.
- Delete a Campaign - its best practice, as it will prevent issues with contact references being reused
- Tips
- Campaign references must be unique so generate them do not let users decide what they are.
- Contact references must be globally unique, so prefix them with the campaign reference
- Don't Allow campaigns to be deleted until they are stopped, and the stopped notification has been received.
- ALWAYS only update the state in your system based on our notifications, do not assume a campaign is started or stopped because you sent an API request that succeeded, State changes are asynchronous so the notifications are your only reliable way of knowing what is happening.
Basic Implementation Functionality
This is a suggestion of what basic features a campaign manager should have for a Minimum Viable Product that won't result in user errors.
- Campaigns Overview:
- Display Table with a list of campaigns currently on the dialer with:
- their current state
- their reference (generated by you)
- their name (human readable)
- Buttons:
- Add a new Campaign:
- Suggestion: allow a csv file to be uploaded or have some way to create the lead list for the campaign. Validation on input is important.
- Go to Single Campaign View to set settings and select agents.
- Start campaign (leave as always clickable, restarting a started campaign won't change anything)
- Edit/Modify Campaign - takes you to the Single Campaign View
- Stop Campaign (leave as always clickable, stopping a stopped campaign won't change anything)
- Remove campaign
- disables other buttons that could modify a campaign.
- sends a Campaign Modify API request to change the campaign state into stopped
- wait until the Campaign Status notification comes through to indicate the campaign has stopped (note this could take a while as the campaign enters a stopping state first)
- once the campaign is stopped then issue the API request to delete the campaign.
- Add a new Campaign:
- Display Table with a list of campaigns currently on the dialer with:
- Single Campaign View: a look at what is in a single campaign
- campaign settings
- editable at any time (started or stopped)
- if edited a request must be sent to the dialer with only the campaign reference and the settings object so that it can adjust the settings.
- Suggestion: Apply button to action the changes
- agents
- view the agents allocated to the campaign
- add or remove agents in the campaign
- choose what the default state is for an agent, we recommend available as when the campaign is started they will be called automatically.
- this can be done in code and does not have to be a user option, just make users aware that when a campaign starts all the agents will receive a call.
- WARNING: Agents can not be active in two running campaigns at the same time, either make users aware or prevent it. Usually the former is enough.
- campaign settings
- DO NOT
- allow editing of callees/leads in the campaign. this gets complex with running campaigns and the API requests involved. Instead users should delete and reupload campaigns
- allow deleting campaigns that are running. This can cause unexpected results
- use the same campaign reference for a new campaign.
- use the same contact reference for callees in multiple campaigns