API 2.0 기준 Bot 메시지 전송 오류관련 문의 드립니다.
VisualStudio C#에서 API 2.0 기준으로 Bot 메시지 발송하려고 합니다.
아래와 같은 오류코드가 발생하는데 원인을 찾을 수 없어 문의 드립니다.
오류코드 : CodeBadRequest
(※ 오류 메시지 : {"원격 서버에서 (400) 잘못된 요청 오류를 반환했습니다."} System.Net.WebException )
dataParams {content="content": {"type": "text","text": "Message / Hello"}} System.Text.StringBuilder
botID = 숫자코드
UserID = 사원번호 or 이메일주소
- Bot 메시지 전송
JsonObjectCollection Content = new JsonObjectCollection("content"); //content 배열로 넘길 Object Content.Add(new JsonStringValue("type", "text")); Content.Add(new JsonStringValue("text", "Message / Hello")); StringBuilder dataParams = new StringBuilder(); dataParams.Append("content=" + Content); // 요청 String -> 요청 Byte 변환 byte[] byteDataParams = UTF8Encoding.UTF8.GetBytes(dataParams.ToString()); // HttpWebRequest 객체 생성, 설정 string strUri = string.Format("https://www.worksapis.com/v1.0/bots/{0}/users/{1}/messages", botID, UserID); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUri); request.Headers.Add("Authorization", string.Format("Bearer {0}", ConnResult.access_token)); // 서버토큰 request.Method = "POST"; // 기본값 "GET" request.ContentType = "application/json"; request.ContentLength = byteDataParams.Length; // 요청 Byte -> 요청 Stream 변환 Stream stDataParams = request.GetRequestStream(); stDataParams.Write(byteDataParams, 0, byteDataParams.Length); stDataParams.Close(); |
- API 인증
WebClient webClient = new WebClient(); webClient.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded"); webClient.Headers.Add(HttpRequestHeader.AcceptCharset, "UTF-8"); //webClient.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + jwt); System.Collections.Specialized.NameValueCollection frmData = new System.Collections.Specialized.NameValueCollection(); frmData["assertion"] = jwt; frmData["grant_type"] = "urn:ietf:params:oauth:grant-type:jwt-bearer"; frmData["client_id"] = ClientID; frmData["client_secret"] = ClientSecurity; frmData["scope"] = "bot"; byte[] responseBytes = webClient.UploadValues("https://auth.worksmobile.com/oauth2/v2.0/token", "POST", frmData); string response = Encoding.UTF8.GetString(responseBytes); ConnResult = JsonConvert.DeserializeObject<clsResult>(response); |
게시글에 새로운 댓글이 달리면 알림을 전송합니다.
댓글3
업데이트 된 답글입니다.
alle
400 bad request는 클라이언트 요청이 서버에서 이해할 수 없는 형태일 때 발생하는 것으로 알고있어요
JSON 형식이 유효한지, 필수 매개변수가 누락된 것은 없는지, 인증은 문제없이 동작하는지 전반적으로 점검을 해보셔야 할 것 같습니다
URI가 잘못 되었을 때에도 400이 뜰 수 있으므로
URI의 botID와 userID를 배열에서 가져오시는것으로 보이는데 정상적으로 가져와지는지도 확인 해보아야 할 것 같습니다
2024.03.18
업데이트 된 답글입니다.
개발하자 작성자
사용자 인증정보와 Bot No. 등이 확인 되는 것으로 봐서는 JSON에서 문제가 있을 거라 생각되어 문의 요청 드렸는데요..
API 2.0 연동시 Body Request에서 문제가 있는지 다른 정보 확인 방법이 있는지 문의 드려요..
JSON : {content="content": {"type": "text","text": "Message / Hello"}}
2024.03.19
업데이트 된 답글입니다.
개발하자 작성자
JSON : {content="content": {"type": "text","text": "Message / Hello"}}
→
JSON : {{"type": "text","text": "Message / Hello"}}
위 내용으로 변경하여 처리 하였습니다.
2024.03.21
궁금한 점을 해결하지 못하셨나요?
지금 바로 NAVER WORKS 사용자들에게 물어보세요!