Hey Folks!
I'm trying to set up my own integration between Jira and Slack using the endpoint scriptrunner feature.
In Jira I made a listener spritrunner for the approval process. When the assignee changed I send several requests:
- to slack: to receive the assigne channel based on mail.
- to slack: to send a message with buttons and information from the task.
Both jsons are working fine.
The problem occurs when the button is clicked and the request goes to the spritrunner endpoint and I cannot read the contents of the payload inside the endpoint. the body comes empty. I tried sending requests from the postman, and the body arrived correctly.
Custom endpoint is simple, it looks like:
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import org.codehaus.jackson.map.ObjectMapper
import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response
import groovyx.net.http.ContentType
import javax.servlet.http.HttpServletRequest
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
@BaseScript CustomEndpointDelegate delegate
doSomething(httpMethod: "POST"){ MultivaluedMap queryParams, String body ->
JsonOutput.toJson([data: body])
log.info("Success! ${body}")
return Response.ok(new JsonBuilder([abc: 42]).toString()).build();
}
Perhaps is required to specify a special content type format application/x-www-form-urlencoded in the endpoint to read information from slack, but I don’t know how to do it correctly.
Hope yoг help.