mssql을 통해 메시지 보내기
mssql을 통해 api를 사용하여 봇에게 메시지를 보내게 하려 합니다.
DECLARE @responseText NVARCHAR(MAX);
DECLARE @ret INT;
DECLARE @status NVARCHAR(32);
DECLARE @statusText NVARCHAR(32); --요청 서버의 상태 값의 상세 내용을 답는 변수
DECLARE @token INT; --OLE 자동화 프로시저 개채 생성 토큰 값을 담을 변수(여기서는 1회용 개체 사용권)
DECLARE @url NVARCHAR(256); --HTTP 서버 URL 변수
DECLARE @postData NVARCHAR(MAX);
SET NOCOUNT ON;
set @url = 'https://apis.worksmobile.com/r/{API ID}/message/v1/bot/{botNo}/message/push'
SET @postData = ''
--커넥션 생성
--MSXML2.ServerXMLHTTP 웹페이지를 읽는 xml파서 개체 형식의 OLE 인스턴스 개체 생성(출력된 토큰값으로 사용)
EXEC @ret = sp_OACreate 'MSXML2.ServerXMLHTTP', @token OUT;
--SELECT @ret [커넥션];
IF @ret <> 0 GOTO CLEANUP
--HTTP 서버 요청
--서버와의 통신 방식 정의
EXEC @ret = sp_OAMethod @token, 'open', NULL, 'POST', @url, 'false'; --POST 방식
--SELECT @ret [HTTP요청];
IF @ret <> 0 GOTO CLEANUP
--데이터 요청 헤더 정의
EXEC @ret = sp_OAMethod @token, 'setRequestHeader', NULL, 'Content-type', 'application/json'; --@contentType;
--SELECT @ret [데이터요청];
IF @ret <> 0 GOTO CLEANUP
--연결 유지 시간 정의
EXEC @ret = sp_OAMethod @token, 'setTimeouts', NULL, 1000, 1000, 1000, 1000
--SELECT @ret [연결유지시간];
IF @ret <> 0 GOTO CLEANUP
--데이터 전송
EXEC @ret = sp_OAMethod @token, 'send', NULL, @postData;
--SELECT @ret [데이터전송];
IF @ret <> 0 GOTO CLEANUP
--응답 결과 처리
EXEC @ret = sp_OAGetProperty @token, 'status', @status OUT; --서버 상태
--SELECT @ret [서버상태];
IF @ret <> 0 GOTO CLEANUP
EXEC @ret = sp_OAGetProperty @token, 'statusText', @statusText OUT; --서버 상태 내용
--SELECT @ret [서버상태내용];
IF @ret <> 0 GOTO CLEANUP
EXEC @ret = sp_OAGetProperty @token, 'responseText', @responseText OUT; --응답 내용
--SELECT @ret [응답내용];
IF @ret <> 0 GOTO CLEANUP
--해당 토큰값의 OLE 인스턴스 개체 소멸(소켓 클로즈라고 보면됨.)
EXEC @ret = sp_OADestroy @token;
--반황결과가 비정상
IF @ret <> 200
RETURN
--응답 결과 확인
SELECT @responseText;
CLEANUP:
BEGIN
EXEC @ret = sp_OADestroy @token;
--sp_OADestroy @token;
END
--PRINT 'Status: ' + @status + ' (' + @statusText + ')'; --OLE 개체의 속성 상태와 내용을 출력
--PRINT 'Response text: ' + @responseText; --응답 결과 출력
--
----해당 토큰값의 OLE 인스턴스 개체 소멸(소켓 클로즈라고 보면됨.)
--EXEC @ret = sp_OADestroy @token;
API ID 와 BotNo를 url에 입력해주고 보내려고 하는데 400err - 잘못된 요청이라고 뜨는데요
@postData 값을 어떻게 보내야 할까요?
@postData 값을 어떻게 보내야 할까요?
게시글에 새로운 댓글이 달리면 알림을 전송합니다.
댓글1
업데이트 된 답글입니다.
장철연
그치만 토큰값을 받아서 Authorization 헤더에 넣어야 합니다.
2022.06.14
궁금한 점을 해결하지 못하셨나요?
지금 바로 NAVER WORKS 사용자들에게 물어보세요!