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 Wrapup

{{brand}}/api/v2/agentProfile/checkAgentInWrapUp

Endpoint

Description

Check if an agent is currently in wrap-up status and retrieve wrap-up 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.response integer Wrap-up status indicator (1 = in wrap-up)
data.wrapETime integer Unix timestamp when wrap-up period ends
data.currentDuration integer Remaining time in wrap-up (in seconds)
data.callId string Unique identifier of the call
data.cNumber string Customer's contact number

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
1504 Agent not in wrap time Agent is not currently in wrap-up status

Check Agent Wrapup

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

var config = {
 method: 'post',
 url: '{{brand}}/api/v2/agentProfile/checkAgentInWrapUp',
 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/checkAgentInWrapUp');
$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/checkAgentInWrapUp", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var client = new RestClient("{{brand}}/api/v2/agentProfile/checkAgentInWrapUp");
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/checkAgentInWrapUp' \
--data-raw '{
    "ssid":"{{agentssid}}"
}'
var request = http.Request('POST', Uri.parse('{{brand}}/api/v2/agentProfile/checkAgentInWrapUp'));
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/checkAgentInWrapUp"
   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/checkAgentInWrapUp 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/checkAgentInWrapUp")
   .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/checkAgentInWrapUp", 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/checkAgentInWrapUp");
   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/checkAgentInWrapUp"]
   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/checkAgentInWrapUp" 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/checkAgentInWrapUp' -Method 'POST' -Headers $headers -Body $body
$response | ConvertTo-Json
require "uri"
require "net/http"

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

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/checkAgentInWrapUp' \
 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/checkAgentInWrapUp")!,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:40:19 GMT"}
{"key":"Content-Type"
"value":"application\/json; charset=utf-8"}
{"key":"Content-Length"
"value":"65"}
{"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\/\"41-mTjlHzUFsW9jYasO0PTo\/jJLZQs\""}
{"key":"Strict-Transport-Security"
"value":"max-age=31536000; includeSubDomains"}]
 {
    "status": "error",
    "message": "Agent not in wrap time",
    "code": 1504
}