diff options
Diffstat (limited to 'Twilio/TaskRouter')
-rw-r--r-- | Twilio/TaskRouter/WorkflowConfiguration.php | 50 | ||||
-rw-r--r-- | Twilio/TaskRouter/WorkflowRule.php | 32 | ||||
-rw-r--r-- | Twilio/TaskRouter/WorkflowRuleTarget.php | 39 |
3 files changed, 121 insertions, 0 deletions
diff --git a/Twilio/TaskRouter/WorkflowConfiguration.php b/Twilio/TaskRouter/WorkflowConfiguration.php new file mode 100644 index 0000000..4b8b88e --- /dev/null +++ b/Twilio/TaskRouter/WorkflowConfiguration.php @@ -0,0 +1,50 @@ +<?php + +namespace Twilio\TaskRouter; + +/** + * Twilio TaskRouter Workflow Builder + * + * @author Justin Witz <jwitz@twilio.com> + * @license http://creativecommons.org/licenses/MIT/ MIT + */ +class WorkflowConfiguration implements JsonSerializable { + public $filters; + public $default_filter; + + public function __construct($filters, $default_filter = null) + { + $this->filters = $filters; + $this->default_filter = $default_filter; + } + + public function toJSON() { + return json_encode($this); + } + + public static function parse($json) { + return json_decode($json); + } + + public static function fromJson($json) { + $configJSON = self::parse($json); + $default_filter = $configJSON->task_routing->default_filter; + $filters = array(); + foreach($configJSON->task_routing->filters as $filter) { + // friendly_name and filter_friendly_name should map to same variable + $friendly_name = isset($filter->filter_friendly_name) ? $filter->filter_friendly_name : $filter->friendly_name; + $filter = new WorkflowRule($filter->expression, $filter->targets, $friendly_name); + $filters[] = $filter; + } + return new WorkflowConfiguration($filters, $default_filter); + } + + public function jsonSerialize() { + $json = array(); + $task_routing = array(); + $task_routing["filters"] = $this->filters; + $task_routing["default_filter"] = $this->default_filter; + $json["task_routing"] = $task_routing; + return $json; + } +}
\ No newline at end of file diff --git a/Twilio/TaskRouter/WorkflowRule.php b/Twilio/TaskRouter/WorkflowRule.php new file mode 100644 index 0000000..bb3ed6b --- /dev/null +++ b/Twilio/TaskRouter/WorkflowRule.php @@ -0,0 +1,32 @@ +<?php + +namespace Twilio\TaskRouter; + +/** + * Twilio TaskRouter Workflow Rule + * + * @author Justin Witz <jwitz@twilio.com> + * @license http://creativecommons.org/licenses/MIT/ MIT + */ +class WorkflowRule implements JsonSerializable { + public $expression; + public $friendly_name; + public $targets; + + public function __construct($expression, $targets, $friendly_name = null) + { + $this->expression = $expression; + $this->targets = $targets; + $this->friendly_name = $friendly_name; + } + + public function jsonSerialize() { + $json = array(); + $json["expression"] = $this->expression; + $json["targets"] = $this->targets; + if($this->friendly_name != null) { + $json["friendly_name"] = $this->friendly_name; + } + return $json; + } +}
\ No newline at end of file diff --git a/Twilio/TaskRouter/WorkflowRuleTarget.php b/Twilio/TaskRouter/WorkflowRuleTarget.php new file mode 100644 index 0000000..43926a6 --- /dev/null +++ b/Twilio/TaskRouter/WorkflowRuleTarget.php @@ -0,0 +1,39 @@ +<?php + +namespace Twilio\TaskRouter; + +/** + * Twilio TaskRouter Workflow Rule Target + * + * @author Justin Witz <jwitz@twilio.com> + * @license http://creativecommons.org/licenses/MIT/ MIT + */ +class WorkflowRuleTarget implements JsonSerializable { + public $queue; + public $expression; + public $priority; + public $timeout; + + public function __construct($queue, $priority = null, $timeout = null, $expression = null) + { + $this->queue = $queue; + $this->priority = $priority; + $this->timeout = $timeout; + $this->expression = $expression; + } + + public function jsonSerialize() { + $json = array(); + $json["queue"] = $this->queue; + if($this->priority != null) { + $json["priority"] = $this->priority; + } + if($this->timeout != null) { + $json["timeout"] = $this->timeout; + } + if($this->expression != null) { + $json["expression"] = $this->expression; + } + return $json; + } +}
\ No newline at end of file |