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}"
      }
    }
  }
}