Introducing TaskRouter
twilio.com
twilio.com
I have a work queue which routes tasks based on events on an ECommerce website [leans towards small businesses] so I basically built something identical for internal use.
For instance, we generate a SMS to customers when there is an issue with their order. [e.g. Item out of stock or not enough stock to fulfill the request] We then generate a call center task to call the customer if they haven't responded by the time the warehouse is ready to ship their order.
This is frequently a problem with Amazon shipments as they are generally small purchases and Amazon doesn't update our inventory in real time. They also to send FBA shipments via the merchant if they are having issues. So we'll get an order for 20 of part X and only have 5 in stock on our long tail items.
If you don't get ahold of the customer, they get pissed because generally they told their customer they'd have their car fixed by day X.
I think Al Cook on our product marketing team described it most aptly as referring to Task Router as "ripping the still-beating heart out of a high volume call center and sitting it on a table for a developer to plug in his/her app."
Task Router is a set of primitives that takes the state that must be managed to accept work from multiple channels and delivering it to resources that can complete them. You can define the core logic to accept tasks from any channel, assign it to the appropriate workflow based on its attributes, and connect it to a resource ready and able to complete it. These flows are defined by you, all without re-implementing the state management common to this problem domain.
Does that help?
This is an ACD. In the cloud. Using common terminology gives other developers a reference point in which to do more research and draw their own conclusions about the technology. Even a reference and link to Wikipedia would be good -- the ACD page is lucid [1], and I understood exactly what an ACD does after reading that. I don't get the same sense about TaskRouter from the blog post.
You have a decent explanation of an ACD mechanism, but now telecom-inexperienced developers have to try and internalize your meaning without the benefit of knowing the precise jargon, and potentially missing out on the decades of experience others have had in this field.
TaskRouter isn't an ACD in that sense.. or no solely an ACD system anyway. It is an API driven way to distribute user defined tasks. It can serve as an ACD, such as routing calls to an available agent.. or.. SMS.. or chat.. or "tickets" or whatever you define as a Task and a Worker using.. primitives. No dependence on calls.
To your point.. maybe using the ACD would help some people understand it at first glance.
It certainly exposes bottlenecks if they weren't obvious already.
Does that make sense?
Hmm, a marketplace for these 3rd party integrations to advertise compatibility would be pretty neat as well.
My hope is all our customers can leverage these primitives to invest more development time in their applications rather than solve the same mundane problems over and over again. I think that's the promise of a continually improving platform rather than an elbow move.
[edit: typo]
[1] - http://en.wikipedia.org/wiki/Business_process_management
[2] - http://activiti.org/