I am working on integrating Slack into our application. As of now, for testing, I am trying to see how to simply send messages across Slack. I am getting a 500 internal server error whenever I try to send the message..
Also, Is there any way to know the channel handler for Slack after a User is authenticated via Slack? As we are looking for integration, it seems like we need the service URL to send messages on Slack. How to get the service URL for Slack for the authenticated user.
Error log :
org.springframework.web.client.HttpServerErrorException: 500 Server Error
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:614)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:570)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:530)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:448)
at com.application.spring.controller.AttachmentController.sendSlackMsg(AttachmentController.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Code :
@RequestMapping(value = "/sendslackmsg")
public @ResponseBody String sendSlackMsg(){
try {
String serviceUrl = "https://hooks.slack.com/services/XXX/XXXX/XXXXXX";
JSONObject jsonObject = new JSONObject();
jsonObject.append("text","hello world");
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);
HttpEntity<String> entity = new HttpEntity<>(jsonObject.toString(), headers);
ResponseEntity<String> loginResponse = restTemplate
.exchange(serviceUrl, HttpMethod.POST, entity, String.class);
System.out.println("Status code is "+loginResponse.getStatusCode().toString());
return loginResponse.getStatusCode().toString();
}catch (HttpStatusCodeException e){
e.printStackTrace();
return e.toString();
}
}