summaryrefslogtreecommitdiffstats
path: root/Twilio/TaskRouter
diff options
context:
space:
mode:
Diffstat (limited to 'Twilio/TaskRouter')
-rw-r--r--Twilio/TaskRouter/WorkflowConfiguration.php50
-rw-r--r--Twilio/TaskRouter/WorkflowRule.php32
-rw-r--r--Twilio/TaskRouter/WorkflowRuleTarget.php39
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