Control the routing of conversations
In this example, we'll route a conversation based on the following data:
- priority
 - preferred or required agent
 - queue
 
For this integration, you'll need to configure the following:
- Events and Conversation Direction: See event and direction support for different operations.
 - JSON for Configuration
This example uses basic authentication and the POST method to route a conversation. The response sets the routing criteria for the conversation: priority, queue, preferred agent, and required agents. You can use this code and remove the routing options that aren't relevant to you or use the specific example for each criteria further below.
{ "request": { "authentication": {"type": "basic"}, "method": "POST" }, "response": { "set": { "priority": "{response.body.priority}", "queue": { "address": "{response.body.queue.address}" }, "preferredAgent": "{response.body.preferredAgent}", "requiredAgents": { "agents": "{response.body.requiredAgents.agents}", "timeout": "{response.body.requiredAgents.timeout}" } } } } 
For the response, see Configuring JSON response handling.
Set priority
This example sets the priority for the conversation.
{
  "request": {
    "authentication": {
      "type": "basic"
    },
    "method": "GET"
  },
  "response": {
    "set": {
      "priority": "{response.body.priority}"
    }
  }
}
        Set preferred agent
This example sets the preferred agent for the conversation.
{
  "request": {
    "authentication": {
      "type": "basic"
    },
    "method": "GET",
    "params": {
      "filter": "source='{contact.source}'"
    }
  },
  "response": {
    "set": {
      "preferredAgent": "{response.body.agent}"
    }
  }
}
        Set required agent
This example sets the required agent. The response returns an array of agents' chat addresses and the duration of the requirement (=timeout):
{
  "request": {
    "authentication": {
      "type": "basic"
    },
    "method": "GET",
    "params": {
      "phoneNumber": "{contact.source}"
    }
  },
  "response": {
    "set": {
      "requiredAgents": {
        "agents": "{response.body.requiredAgents.agents}",
        "timeout": "{response.body.requiredAgents.timeout}"
      }
    }
  }
}
            This example sets the required agent. The response returns an array of objects in which chat address is taken from the array. The duration of the requirement (=timeout) is defined in the configuration:
{
  "request": {
    "authentication": {
      "type": "basic"
    },
    "method": "GET"
  },
  "response": {
    "set": {
      "requiredAgents": {
        "agents": [
          "{response.body.records[0].fields.agent}",
          "{response.body.records[1].fields.agent}"
        ],
        "timeout": "90"
      }
    }
  }
}
        Set queue
This example fetches the last row from the response's queues and gets the id to set a queue for the conversation.
{
  "request": {
    "authentication": {
      "type": "basic"
    },
    "method": "GET"
  },
  "response": {
    "set": {
      "queue": {
        "id": "{response.body.queues[-1].id}"
      }
    }
  }
}
        