Well,
Adding to all the mentioned points, here are a few more:
1) Transparency - Share the financial and non-financial (growth) goals of the organization (for a quarter/year) with your agents/managers and make them stakeholders in the same. Once they buy into the idea, take a commitment from them and convert the same into their KRA/KPIs.
2) Review - Recommend bi-weekly reviews on the actual vs. committed goals.
3) Conduct various surveys to understand your employees' areas of strength and their areas of interest. You need to understand that just because an employee is interested in software development doesn't necessarily mean they are good at it. Highlight their strong points to them and show them how it will help in the long run in terms of growth.
4) VIC (Variable Incentive Component - Performance-based) - If your organization has a budget for this component, then that is your strongest weapon against attrition. You need to use reverse psychology here. Show the employee their potential earnings for a quarter/month which they can achieve if they meet certain goals. Take a commitment from them - not on the goal but on how much they plan to take home at the end of the month/quarter. Every time their scores/metrics drop, tell them how much money they are losing. They are smart enough to figure out that to reach the money, they have to achieve the goal. Conduct reviews at least once a week on actual vs. committed. At the end of the month/quarter, if your agent was able to achieve the target, then increase the benchmark for them and motivate them to achieve it. If they are not able to achieve it, then give them the same target for the next month - again - take a commitment, etc.
Please note that all instances where you are taking a commitment from your employee need to be documented.
Hope this was useful.