V 2.0

Agent Profile

Description

This API documentation provides endpoints for managing agent activities in a call center environment. It includes functionality for checking agent break status, updating ping time for agent activity monitoring, and managing wrap-up status after calls. These endpoints are specifically designed for agent-level operations and require proper authentication either through SSID or token-based methods.

Base URL

The base URL for all API endpoints is: deepcall/api/v2/agentProfile

Error Codes

Error Code Message Description
1501 Agent id not match Occurs when the provided agent ID doesn't match with the authenticated agent
1502 On break is : 0 Returned when trying to access break status for an agent who is not on break
1503 SSID not valid for setWebPingTime Invalid session ID provided for updating web ping time
1504 Agent not in wrap time Returned when checking wrap-up status for an agent not in wrap-up mode
1505 Missing required parameters:mic_perm Required parameters are missing in the request
1506 Cannot update [ping_time] as it is of incompatible type Error in updating ping time due to data type mismatch

Check Agent Break

{{brand}}/api/v2/agentProfile/agentOnBreak

Endpoint

Description

Check if an agent is currently on break and retrieve their break details.

Request Parameters

Parameter Type Required Description
ssid string Conditional* Session ID for authentication
userId string Conditional* User ID for token-based auth
token string Conditional* Authentication token

* Either ssid OR both userId and token are required

Response Parameters

Success Response Parameters

Parameter Type Description
status string Response status ("success")
data.on_break integer Break status (1 = on break, 0 = not on break)
data.breakDetail object Details about the current break
data.agent_id string ID of the agent
data.user_id string ID of the user

Error Response Parameters

Parameter Type Description
status string Response status ("error")
errCode integer Error code indicating the type of error
errMessage string Descriptive message about the error

Error Codes

Error Code Message Description
1501 Agent id not match Agent ID doesn't match with the authenticated agent
1502 On break is : 0 Agent is not currently on break

Check Agent Break

var axios = require('axios');
var data = '{"ssid":"{{agentssid}}"}';

var config = {
 method: 'post',
 url: '{{brand}}/api/v2/agentProfile/agentOnBreak',
 headers: { 
'Content-Length': ''
 },
 data : data
};

axios(config)
.then(function (response) {
 console.log(JSON.stringify(response.data));
})
.catch(function (error) {
 console.log(error);
});
setUrl('{{brand}}/api/v2/agentProfile/agentOnBreak');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
 'follow_redirects' => TRUE
));
$request->setHeader(array(
 'Content-Length' => ''
));
$request->setBody('{"ssid":"{{agentssid}}"}');
try {
 $response = $request->send();
 if ($response->getStatus() == 200) {
echo $response->getBody();
 }
 else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
 }
}
catch(HTTP_Request2_Exception $e) {
 echo 'Error: ' . $e->getMessage();
}
import http.client

conn = http.client.HTTPSConnection("{{brand}}")
payload = "{\"ssid\":\"{{agentssid}}\"}"
headers = {
 'Content-Length': ''
}
conn.request("POST", "/api/v2/agentProfile/agentOnBreak", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var client = new RestClient("{{brand}}/api/v2/agentProfile/agentOnBreak");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
var body = @"{" + "\n" +
@"    ""ssid"":""{{agentssid}}""" + "\n" +
@"}";
request.AddParameter("text/plain", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
curl --location -g --request POST '{{brand}}/api/v2/agentProfile/agentOnBreak' \
--data-raw '{
    "ssid":"{{agentssid}}"
}'
var request = http.Request('POST', Uri.parse('{{brand}}/api/v2/agentProfile/agentOnBreak'));
request.body = '''{\n    "ssid":"{{agentssid}}"\n}''';

http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
   print(await response.stream.bytesToString());
}
else {
   print(response.reasonPhrase);
}
package main

import (
   "fmt"
   "strings"
   "net/http"
   "io/ioutil"
)

func main() {

   url := "%7B%7Bbrand%7D%7D/api/v2/agentProfile/agentOnBreak"
   method := "POST"

   payload := strings.NewReader(`{
    "ssid":"{{agentssid}}"
}`)

   client := &http.Client {
   }
   req, err := http.NewRequest(method, url, payload)

   if err != nil {
      fmt.Println(err)
      return
   }
   res, err := client.Do(req)
   if err != nil {
      fmt.Println(err)
      return
   }
   defer res.Body.Close()

   body, err := ioutil.ReadAll(res.Body)
   if err != nil {
      fmt.Println(err)
      return
   }
   fmt.Println(string(body))
}
POST /api/v2/agentProfile/agentOnBreak HTTP/1.1
Host: {{brand}}
Content-Length: 30

{
    "ssid":"{{agentssid}}"
}
OkHttpClient client = new OkHttpClient().newBuilder()
   .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n    \"ssid\":\"{{agentssid}}\"\n}");
Request request = new Request.Builder()
   .url("{{brand}}/api/v2/agentProfile/agentOnBreak")
   .method("POST", body)
   .addHeader("Content-Length", "")
   .build();
Response response = client.newCall(request).execute();
var myHeaders = new Headers();
myHeaders.append("Content-Length", "");

var raw = "{\n    \"ssid\":\"{{agentssid}}\"\n}";

var requestOptions = {
   method: 'POST',
   headers: myHeaders,
   body: raw,
   redirect: 'follow'
};

fetch("{{brand}}/api/v2/agentProfile/agentOnBreak", requestOptions)
   .then(response => response.text())
   .then(result => console.log(result))
   .catch(error => console.log('error', error));
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
   curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
   curl_easy_setopt(curl, CURLOPT_URL, "%7B%7Bbrand%7D%7D/api/v2/agentProfile/agentOnBreak");
   curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
   curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
   struct curl_slist *headers = NULL;
   headers = curl_slist_append(headers, "Content-Length: ");
   curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
   const char *data = "{\n    \"ssid\":\"{{agentssid}}\"\n}";
   curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
   res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);
#import 

dispatch_semaphore_t sema = dispatch_semaphore_create(0);

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"%7B%7Bbrand%7D%7D/api/v2/agentProfile/agentOnBreak"]
   cachePolicy:NSURLRequestUseProtocolCachePolicy
   timeoutInterval:10.0];
NSDictionary *headers = @{
   @"Content-Length": @""
};

[request setAllHTTPHeaderFields:headers];
NSData *postData = [[NSData alloc] initWithData:[@"{\n    \"ssid\":\"{{agentssid}}\"\n}" dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postData];

[request setHTTPMethod:@"POST"];

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
   if (error) {
      NSLog(@"%@", error);
      dispatch_semaphore_signal(sema);
   } else {
      NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
      NSError *parseError = nil;
      NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
      NSLog(@"%@",responseDictionary);
      dispatch_semaphore_signal(sema);
   }
}];
[dataTask resume];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
open Lwt
open Cohttp
open Cohttp_lwt_unix

let postData = ref "{\n    \"ssid\":\"{{agentssid}}\"\n}";;

let reqBody = 
   let uri = Uri.of_string "%7B%7Bbrand%7D%7D/api/v2/agentProfile/agentOnBreak" in
   let headers = Header.init ()
      |> fun h -> Header.add h "Content-Length" ""
   in
   let body = Cohttp_lwt.Body.of_string !postData in

   Client.call ~headers ~body `POST uri >>= fun (_resp, body) ->
   body |> Cohttp_lwt.Body.to_string >|= fun body -> body

let () =
   let respBody = Lwt_main.run reqBody in
   print_endline (respBody)
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Length", "")

$body = "{`n    `"ssid`":`"{{agentssid}}`"`n}"

$response = Invoke-RestMethod '{{brand}}/api/v2/agentProfile/agentOnBreak' -Method 'POST' -Headers $headers -Body $body
$response | ConvertTo-Json
require "uri"
require "net/http"

url = URI("{{brand}}/api/v2/agentProfile/agentOnBreak")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Length"] = ""
request.body = "{\n    \"ssid\":\"{{agentssid}}\"\n}"

response = http.request(request)
puts response.read_body
printf '{
    "ssid":"{{agentssid}}"
}'| http  --follow --timeout 3600 POST '{{brand}}/api/v2/agentProfile/agentOnBreak' \
 Content-Length:
import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif

var semaphore = DispatchSemaphore (value: 0)

let parameters = "{\n    \"ssid\":\"{{agentssid}}\"\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{brand}}/api/v2/agentProfile/agentOnBreak")!,timeoutInterval: Double.infinity)
request.addValue("", forHTTPHeaderField: "Content-Length")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
   guard let data = data else {
      print(String(describing: error))
      semaphore.signal()
      return
   }
   print(String(data: data, encoding: .utf8)!)
   semaphore.signal()
}

task.resume()
semaphore.wait()

Example Response

 [{"key":"Date"
"value":"Wed
 20 Nov 2024 09:35:11 GMT"}
{"key":"Content-Type"
"value":"application\/json; charset=utf-8"}
{"key":"Content-Length"
"value":"58"}
{"key":"Connection"
"value":"keep-alive"}
{"key":"Access-Control-Allow-Origin"
"value":"*"}
{"key":"Access-Control-Allow-Methods"
"value":"POST
 GET
 OPTIONS
 PATCH
 DELETE"}
{"key":"Access-Control-Allow-Headers"
"value":"X-Requested-With
content-type"}
{"key":"Access-Control-Allow-Credentials"
"value":"true"}
{"key":"Vary"
"value":"Origin"}
{"key":"ETag"
"value":"W\/\"3a-Hcwf2RVvHHAHh45ODnXpallkU74\""}
{"key":"Strict-Transport-Security"
"value":"max-age=31536000; includeSubDomains"}]
 {
    "status": "error",
    "message": "On break is : 0",
    "code": 1502
}