{"record":{"id":"0267a4e9a1140807","repo":"apache/seatunnel","slug":"send-response-failed","errorCode":"SEND_RESPONSE_FAILED","errorMessage":"Send response message to DinkTalk server failed","messagePattern":"Send response message to DinkTalk server failed","errorType":"error_code","errorClass":"DingTalkConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/sink/DingTalkWriter.java","lineNumber":81,"sourceCode":"\n        public RobotClient(String url, String secret) {\n            this.url = url;\n            this.secret = secret;\n        }\n\n        public OapiRobotSendResponse send(String message) throws IOException {\n            if (null == client) {\n                client = new DefaultDingTalkClient(getUrl());\n            }\n            OapiRobotSendRequest request = new OapiRobotSendRequest();\n            request.setMsgtype(\"text\");\n            OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();\n            text.setContent(message);\n            request.setText(text);\n            try {\n                return this.client.execute(request);\n            } catch (ApiException e) {\n                throw new DingTalkConnectorException(\n                        DingTalkConnectorErrorCode.SEND_RESPONSE_FAILED,\n                        \"Send response message to DinkTalk server failed\",\n                        e);\n            }\n        }\n\n        public String getUrl() throws IOException {\n            Long timestamp = System.currentTimeMillis();\n            String sign = getSign(timestamp);\n            return url + \"&timestamp=\" + timestamp + \"&sign=\" + sign;\n        }\n\n        public String getSign(Long timestamp) throws IOException {\n            try {\n                String stringToSign = timestamp + \"\\n\" + secret;\n                Mac mac = Mac.getInstance(\"HmacSHA256\");\n                mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), \"HmacSHA256\"));\n                byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-dingtalk/src/main/java/org/apache/seatunnel/connectors/seatunnel/sink/DingTalkWriter.java#L63-L99","documentation":"DingTalkWriter.send executes the robot send request via the DingTalk SDK client; if the SDK throws ApiException during the HTTP exchange, it is wrapped as DingTalkConnectorException(SEND_RESPONSE_FAILED, 'Send response message to DinkTalk server failed'). It indicates the transport-level exchange with the DingTalk robot endpoint (oapi.dingtalk.com) failed.","triggerScenarios":"client.execute(request) throwing ApiException — network outage, DNS failure, proxy blocking oapi.dingtalk.com, TLS issues, or SDK misconfiguration (invalid endpoint) during message send.","commonSituations":"Corporate firewalls/proxies blocking DingTalk API domains; wrong robot webhook/access_token config; DingTalk API outages or throttling; containers without outbound internet.","solutions":["Verify network egress to oapi.dingtalk.com from the SeaTunnel node (curl the endpoint)","Check proxy settings (http_proxy/https_proxy, JVM properties) and firewall rules","Validate the robot access_token/webhook URL in the sink config","Retry the job; if ApiException persists, check DingTalk service status"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// preflight: curl -sS https://oapi.dingtalk.com/robot/send?access_token=... to verify reachability","typeGuard":null,"tryCatchPattern":"try { writer.write(row); } catch (DingTalkConnectorException e) { if (\"SEND_RESPONSE_FAILED\".equals(e.getErrorCode())) { /* backoff/retry or alert on network egress */ } else { throw e; } }","preventionTips":["Whitelist oapi.dingtalk.com in firewalls/proxies on all worker nodes","Validate robot access_token/webhook before submitting jobs","Add retry with backoff for transient network errors"],"tags":["dingtalk","network","http"],"backgroundTag":"http-request-failed","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}