About Queue Groups

Last updated: 2020-05-28 Contributors Craig ChanPaco Vu
Edit this page

Queue Groups are containers for one or more groups. Queue Groups must be created before creating a queue for routing. Once a Queue Group is created, and you set the Group Skill, create your Queues in the Queue Group.

Core Concepts

Group Skills

Group skills are short descriptions that help you map Queue Groups to Agents. First create the Queue Group and then define the Group Skill. Later, you will assign this Group Skill to a Agent.

Queue Group vs Gate Group

The original terminology for a Queue Group was Gate Group. In this way, Gates and Queues are synonymous. For backward compatibility, gate will continue to be supported.

Create Queue Group

Creating a new Queue Group using the gateGroups endpoint. Only the Queue Group name is required.

Primary Parameters

Only groupName is a required parameter to create a Queue Group. All other parameters are optional.

API Property UI Display UI Default Description
groupName Required Name empty Name for this new Queue Group
billingKey Optional hidden null If you use an external billing system, you can provide the billing code from that system in the queue to easily keep track of which customers (represented by the queue) are tied to which billing code. This setting is for reporting purposes only
gateGroupId Optional hidden 0  You can specify your gateGroupId, but by default, the next available ID is chosen for you.

Request

Be sure to set the proper BASE_URL and authorization header for your deployment.

POST {BASE_URL}/api/v1/admin/accounts/{accountId}/gateGroups
Content-Type: application/json

{
    "groupName": "My New Queue Group"
}
const EngageVoice = require('engagevoice-sdk-wrapper')

// Instantiate the SDK wrapper object with your RingCentral app credentials
var ev = new EngageVoice.RestClient("RC_CLIENT_ID", "RC_CLIENT_SECRET")

// Login your account with your RingCentral Office user credentials
ev.login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER", function(err, response){
  if (err)
    console.log(err)
  else{
    endpoint = 'admin/accounts/~/gateGroups'
    params = {
                "groupName":"My New Queue Group"
                  }
    ev.post(endpoint, params, function(err, response){
      if (err){
        console.log(err)
      }else {
        var jsonObj = JSON.parse(response)
        console.log(jsonObj)
      }
    })
  }
})        
from engagevoice.sdk_wrapper import *

# Instantiate the SDK wrapper object with your RingCentral app credentials
ev = RestClient("RC_APP_CLIENT_ID", "RC_APP_CLIENT_SECRET")

# Login your account with your RingCentral Office user credentials
try:
    ev.login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER")
    endpoint = 'admin/accounts/~/gateGroups'
    params = {
              "groupName":"My New Queue Group"
                }
    response = ev.post(endpoint, params)
    print (response)        
except Exception as e:
    print (e)
<?php
require('vendor/autoload.php');

// Instantiate the SDK wrapper object with your RingCentral app credentials
$ev = new EngageVoiceSDKWrapper\RestClient("RC_APP_CLIENT_ID", "RC_APP_CLIENT_SECRET");
try{
  // Login your account with your RingCentral Office user credentials
  $ev->login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER");
  $endpoint = "admin/accounts/~/gateGroups";
  $params = array ( 'groupName' => "My New Queue Group" );
  $response = $ev->post($endpoint, $params);
  print ($response."\r\n");
}catch (Exception $e) {
  print $e->getMessage();
}

Sample response

{
  "startDate":"2020-04-18T01:49:32.000+0000",
  "billingKey":null,
  "createdOn":"2020-04-18T01:49:32.000+0000",
  "groupName":"My New Queue Group",
  "groupSkills":null,
  "endDate":null,
  "gateGroupId":52653,
  "permissions": []
}

Retrieve Queue Groups

Retrieve a list of Queue Groups using the gateGroups endpoint.

Optional Parameters

The following parameters are optional.

API Property Type UI Display UI Default Description
page Integer Hidden 1  A way to specify which page to show for a long number of Queue Groups
maxRows Integer Hidden ??  You can specify the maximum number of Queue Groups to return in a single call.

Request

Be sure to set the proper BASE_URL and authorization header for your deployment.

GET {BASE_URL}/api/v1/admin/accounts/{accountId}/gateGroups
const EngageVoice = require('engagevoice-sdk-wrapper')

// Instantiate the SDK wrapper object with your RingCentral app credentials
var ev = new EngageVoice.RestClient("RC_CLIENT_ID", "RC_CLIENT_SECRET")

// Login your account with your RingCentral Office user credentials
ev.login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER", function(err, response){
  if (err)
    console.log(err)
  else{
    var endpoint = 'admin/accounts/~/gateGroups'
    ev.get(endpoint, null, function(err, response){
      if (err){
        console.log(err)
      }else {
        var jsonObj = JSON.parse(response)
        for (var group of jsonObj){
          console.log("Queue group name: " + group.groupName)
          console.log("Queue group id: " + group.gateGroupId)
        }
      }
    })
  }
})        
from engagevoice.sdk_wrapper import *

# Instantiate the SDK wrapper object with your RingCentral app credentials
ev = RestClient("RC_APP_CLIENT_ID", "RC_APP_CLIENT_SECRET")

# Login your account with your RingCentral Office user credentials
try:
    ev.login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER")
    endpoint = 'admin/accounts/~/gateGroups'
    resp = ev.get(endpoint)
    for group in resp:
        print ("Queue group name: " + group['groupName'])
        print ("Queue group id: " + str(group['gateGroupId']))
except Exception as e:
    print (e)
<?php
require('vendor/autoload.php');

// Instantiate the SDK wrapper object with your RingCentral app credentials
$ev = new EngageVoiceSDKWrapper\RestClient("RC_APP_CLIENT_ID", "RC_APP_CLIENT_SECRET");
try{
  // Login your account with your RingCentral Office user credentials
  $ev->login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER");
  $endpoint = "admin/accounts/~/gateGroups";
  $response = $ev->get($endpoint);
  $jsonObj = json_decode($response);
  foreach ($jsonObj as $group){
    print ("Queue group name: ".$group->groupName."\r\n");
    print ("Queue group id: ".$group->gateGroupId."\r\n");
  }
}catch (Exception $e) {
  print $e->getMessage();
}

Response

[
  {
    "groupSkills": null,
    "groupName": "Platform",
    "gateGroupId": 52653,
    "permissions": []
  },
  {
    "groupSkills": null,
    "groupName": "Evaluations",
    "gateGroupId": 52658,
    "permissions": []
  },
  {
    "groupSkills": null,
    "groupName": "John's Queue",
    "gateGroupId": 52671,
    "permissions": []
  }
]

Retrieve a Single Queue Group

Retrieve details for a single Queue Group using the gateGroups endpoint.

Request

Be sure to set the proper BASE_URL and authorization header for your deployment.

GET {BASE_URL}/api/v1/admin/accounts/{accountId}/gateGroups/{gateGroupId}
const EngageVoice = require('engagevoice-sdk-wrapper')

// Instantiate the SDK wrapper object with your RingCentral app credentials
var ev = new EngageVoice.RestClient("RC_CLIENT_ID", "RC_CLIENT_SECRET")

// Login your account with your RingCentral Office user credentials
ev.login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER", function(err, response){
  if (err)
    console.log(err)
  else{
    var endpoint = 'admin/accounts/~/gateGroups'
    ev.get(endpoint, null, function(err, response){
      if (err){
        console.log(err)
      }else {
        var jsonObj = JSON.parse(response)
        for (var group of jsonObj){
          endpoint = 'admin/accounts/~/gateGroups/' + group.gateGroupId
          ev.get(endpoint, null, function(err, response){
            if (err){
              console.log(err)
            }else {
              print (response)
              print ("========")
            }
          })
        }
      }
    })
  }
})        
from engagevoice.sdk_wrapper import *

# Instantiate the SDK wrapper object with your RingCentral app credentials
ev = RestClient("RC_APP_CLIENT_ID", "RC_APP_CLIENT_SECRET")

# Login your account with your RingCentral Office user credentials
try:
    ev.login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER")
    endpoint = 'admin/accounts/~/gateGroups'
    resp = ev.get(endpoint)
    for group in resp:
        endpoint = 'admin/accounts/~/gateGroups/%i' % (group['gateGroupId'])
        response = ev.get(endpoint)
        print (response)
        print ("========")
except Exception as e:
    print (e)
<?php
require('vendor/autoload.php');

// Instantiate the SDK wrapper object with your RingCentral app credentials
$ev = new EngageVoiceSDKWrapper\RestClient("RC_APP_CLIENT_ID", "RC_APP_CLIENT_SECRET");
try{
    // Login your account with your RingCentral Office user credentials
    $ev->login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER");
    $endpoint = "admin/accounts/~/gateGroups";
    $response = $ev->get($endpoint);
    $jsonObj = json_decode($response);
    foreach ($jsonObj as $group){
        $endpoint = 'admin/accounts/~/gateGroups/' . $group->gateGroupId;
        $response = $ev->get($endpoint);
        print ($response."\r\n");
        print ("========\r\n");
    }
}catch (Exception $e) {
    print $e->getMessage();
}

Response

{
  "startDate":"2020-04-18T01:49:32.000+0000",
  "billingKey":null,
  "createdOn":"2020-04-18T01:49:32.000+0000",
  "groupName":"Platform",
  "groupSkills":null,
  "endDate":null,
  "gateGroupId":52653,
  "permissions": []
}

Update a Single Queue Group

Update the details for a single Queue Group using the gateGroups endpoint. Several details need to be updated with a single PUT command so make sure to GET all details, modify the relevant fields, and then submit the entire object to update the Queue Group

Request

Be sure to set the proper BASE_URL and authorization header for your deployment.

# Retrieve the entire Queue Group JSON object
GET {BASE_URL}/api/v1/admin/accounts/{accountId}/gateGroups/{gateGroupId}

# Modify the groupName
PUT {BASE_URL}/api/v1/admin/accounts/{accountId}/gateGroups/{gateGroupId}
Content-Type: application/json
    {
      "groupName":"My New Queue Group Name - Updated",
    }
const EngageVoice = require('engagevoice-sdk-wrapper')

// Instantiate the SDK wrapper object with your RingCentral app credentials
var ev = new EngageVoice.RestClient("RC_CLIENT_ID", "RC_CLIENT_SECRET")

// Login your account with your RingCentral Office user credentials
ev.login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER", function(err, response){
  if (!err){
    var endpoint = 'admin/accounts/~/gateGroups'
    ev.get(endpoint, null, function(err, response){
      if (!err){
        var jsonObj = JSON.parse(response)
        for (var group of jsonObj){
          if (group.groupName == "My New Queue Group"){
            endpoint = 'admin/accounts/~/gateGroups/' + group.gateGroupId
            var params = {
              "groupName": group.groupName + " - Update"
            }
            ev.put(endpoint, params, function(err, response){
              if (!err){
                console.log (response)
              }
            })
          }
        }
      }
    })
  }
})        
from engagevoice.sdk_wrapper import *

# Instantiate the SDK wrapper object with your RingCentral app credentials
ev = RestClient("RC_APP_CLIENT_ID", "RC_APP_CLIENT_SECRET")

# Login your account with your RingCentral Office user credentials
try:
    ev.login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER")
    endpoint = 'admin/accounts/~/gateGroups'
    resp = ev.get(endpoint)
    for group in resp:
        if (group['groupName'] == "My New Queue Group"):
            endpoint = 'admin/accounts/~/gateGroups/%i' % (group['gateGroupId'])
            params = {
              "groupName": group['groupName'] + " - Updated"
            }
            response = ev.put(endpoint, params)
            print (response)
            print ("========")
except Exception as e:
    print (e)
<?php
require('vendor/autoload.php');

// Instantiate the SDK wrapper object with your RingCentral app credentials
$ev = new EngageVoiceSDKWrapper\RestClient("RC_APP_CLIENT_ID", "RC_APP_CLIENT_SECRET");
try{
    // Login your account with your RingCentral Office user credentials
    $ev->login("RC_USERNAME", "RC_PASSWORD", "RC_EXTENSION_NUMBER");
    $endpoint = "admin/accounts/~/gateGroups";
    $response = $ev->get($endpoint);
    $jsonObj = json_decode($response);
    foreach ($jsonObj as $group){
        if ($group->groupName == "My New Queue Group"){
            $endpoint = 'admin/accounts/~/gateGroups/' . $group->gateGroupId;
            $params = array ( "groupName" => $group->groupName . " - Updated" );
            $response = $ev.put($endpoint, $params);
            print ($response);
        }
    }
}catch (Exception $e) {
    print $e->getMessage();
}

Response

{
  "startDate":"2020-04-18T01:49:32.000+0000",
  "billingKey":null,
  "createdOn":"2020-04-18T01:49:32.000+0000",
  "groupName":"My New Queue Group - Update",
  "groupSkills":null,
  "endDate":null,
  "gateGroupId":52653,
  "permissions": []
}

Delete a Single Queue Group

Delete a single Queue Group using the gateGroups endpoint.

Request

Be sure to set the proper BASE_URL and authorization header for your deployment.

DELETE {BASE_URL}/api/v1/admin/accounts/{accountId}/gateGroups/{gateGroupId}