Skip to content

Commit 3669815

Browse files
committed
fix: api integration for cti
1 parent c6e42d9 commit 3669815

6 files changed

Lines changed: 110 additions & 3 deletions

File tree

src/main/java/com/iemr/common/controller/cti/ComputerTelephonyIntegrationController.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
*/
2222
package com.iemr.common.controller.cti;
2323

24-
2524
import javax.ws.rs.core.MediaType;
2625

2726
import org.slf4j.Logger;
@@ -522,4 +521,23 @@ public String getIVRSPathDetails(@Param("{\"agent_id\":\"Integer\"}") @RequestBo
522521
logger.info("getIVRSPathDetails sending response " + response);
523522
return response.toString();
524523
}
524+
525+
@Operation(summary = "Get disposition count for campaign")
526+
@RequestMapping(value = "/getDispositionCount", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, headers = "Authorization")
527+
public String getDispositionCount(@RequestBody String request, HttpServletRequest serverRequest) {
528+
OutputResponse response = new OutputResponse();
529+
logger.info("getDispositionCount received a request " + request);
530+
try {
531+
String remoteAddress = serverRequest.getHeader("X-FORWARDED-FOR");
532+
if (remoteAddress == null || remoteAddress.trim().length() == 0) {
533+
remoteAddress = serverRequest.getRemoteAddr();
534+
}
535+
logger.info("Remote Address: " + remoteAddress);
536+
response = ctiService.getDispositionCount(request, remoteAddress);
537+
} catch (Exception e) {
538+
logger.error("getDispositionCount failed with error " + e.getMessage(), e);
539+
response.setError(e);
540+
}
541+
return response.toString();
542+
}
525543
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.iemr.common.data.cti;
2+
import lombok.Data;
3+
4+
@Data
5+
public class DispositionCountRequest {
6+
private String transaction_id = "CTI_GET_DISP_COUNT";
7+
private String campaign_id;
8+
private String disposition;
9+
private String date;
10+
private String enc_flag;
11+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.iemr.common.data.cti;
2+
import lombok.Data;
3+
import com.google.gson.annotations.Expose;
4+
import java.util.List;
5+
6+
@Data
7+
public class DispositionCountResponse {
8+
@Expose
9+
private CTIResponse response;
10+
11+
@Expose
12+
private Integer count;
13+
14+
@Expose
15+
private String campaign_id;
16+
17+
@Expose
18+
private String disposition;
19+
20+
@Expose
21+
private String date;
22+
23+
@Expose
24+
private List<DispositionData> dispositionData;
25+
26+
@Expose
27+
private String encryptedData; // for enc_flag = "1"
28+
29+
// Inner class for detailed disposition data
30+
@Data
31+
public static class DispositionData {
32+
@Expose
33+
private String disposition;
34+
35+
@Expose
36+
private Integer count;
37+
38+
@Expose
39+
private String date;
40+
}
41+
}

src/main/java/com/iemr/common/service/cti/CTIService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,6 @@ public interface CTIService
9494
OutputResponse getIVRSPathDetails(String request, String remoteAddress)throws Exception;
9595

9696
OutputResponse getVoiceFileNew(String request, String remoteAddr) throws IEMRException, JSONException;
97+
98+
OutputResponse getDispositionCount(String request, String ipAddress) throws IEMRException, JSONException, JsonMappingException, JsonProcessingException;
9799
}

src/main/java/com/iemr/common/service/cti/CTIServiceImpl.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252
import com.iemr.common.data.cti.CampaignRole;
5353
import com.iemr.common.data.cti.CampaignSkills;
5454
import com.iemr.common.data.cti.CustomerLanguage;
55+
import com.iemr.common.data.cti.DispositionCountRequest;
56+
import com.iemr.common.data.cti.DispositionCountResponse;
5557
import com.iemr.common.data.cti.TransferCall;
5658
import com.iemr.common.repository.callhandling.BeneficiaryCallRepository;
5759
import com.iemr.common.repository.callhandling.IEMRCalltypeRepositoryImplCustom;
@@ -962,7 +964,9 @@ public OutputResponse customerPreferredLanguage(CustomerLanguage custLang, Strin
962964

963965
@Override
964966
public String callPostUrl(String urlRequest, String Json) {
967+
logger.info("From call post URL method.. URL: " + urlRequest + " Json: " + Json);
965968
String result = httpUtils.post(urlRequest, Json);
969+
logger.info("From call post URL method.. result: " + result);
966970
return result;
967971
}
968972

@@ -1084,4 +1088,32 @@ public OutputResponse getIVRSPathDetails(String request, String remoteAddress) t
10841088

10851089
return result;
10861090
}
1091+
1092+
@Override
1093+
public OutputResponse getDispositionCount(String request, String ipAddress) throws IEMRException, JSONException, JsonMappingException, JsonProcessingException {
1094+
1095+
OutputResponse output = new OutputResponse();
1096+
ObjectMapper objectMapper = new ObjectMapper();
1097+
String ctiURI = ConfigProperties.getPropertyByName("get-disposition-count-URL");
1098+
String serverURL = ConfigProperties.getPropertyByName("cti-server-ip");
1099+
logger.info("Request="+request + ":: CTI URL="+ ctiURI + ":: Server URL="+ serverURL);
1100+
DispositionCountRequest dispositionRequest = objectMapper.readValue(request, DispositionCountRequest.class);
1101+
1102+
ctiURI = ctiURI.replace("CTI_SERVER", serverURL);
1103+
1104+
logger.info("calling disposition count URL: " + ctiURI);
1105+
logger.info("disposition Request="+dispositionRequest.toString());
1106+
String response = this.callPostUrl(ctiURI, dispositionRequest.toString());
1107+
logger.info("disposition count API returned: " + response);
1108+
1109+
DispositionCountResponse result = objectMapper.readValue(response, DispositionCountResponse.class);
1110+
CTIResponse ctiResponse = result.getResponse();
1111+
1112+
if (ctiResponse.getResponse_code().equals(CUSTOM_API_SUCCESS)) {
1113+
output.setResponse(result.toString());
1114+
} else {
1115+
output.setError(OutputResponse.GENERIC_FAILURE, ctiResponse.getReason(), ctiResponse.getStatus());
1116+
}
1117+
return output;
1118+
}
10871119
}

src/main/resources/application.properties

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ get-agent-summary-report-URL=http://CTI_SERVER/apps/customize_apps/piramil_repor
7171
## agent summary report API
7272
get-details-call-report-URL=http://CTI_SERVER/apps/customize_apps/piramil_reports.php?report_type=acd&format=json&end_date=END_DATE&start_date=START_DATE
7373

74+
##1097 abandoned call report API
75+
get-disposition-count-URL=http://CTI_SERVER/apps/CZUtilAPI.php
76+
7477
#============================================================================
7578
# Configure Main Scheduler Properties
7679
#============================================================================
@@ -189,8 +192,8 @@ km-guest-user=guest
189192
km-guest-password=guest
190193

191194
# CTI Config
192-
cti-server-ip=10.208.122.99
193-
cti-logger_base_url=http://10.208.122.99/logger
195+
cti-server-ip=192.168.45.55
196+
cti-logger_base_url=http://192.168.45.55/logger
194197
sms-gateway-url =
195198

196199
#Encryption passphrase used by AESUtil for decrypting CTI passwords.

0 commit comments

Comments
 (0)