Bot

mssql을 통해 메시지 보내기

개발개발자

2022.06.10읽음 3006

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 값을 어떻게 보내야 할까요?

댓글1

  • 업데이트 된 답글입니다.

    장철연

    mssql로 api연동을 해본적이 없어서 정확한 방법은 모르겠네요..
    그치만 토큰값을 받아서 Authorization 헤더에 넣어야 합니다.

    2022.06.14

    0
이전 글API 2.0은 SSO와 같이 사용 불가능한가요?
다음 글사용자에게 메일이 왔다고 알려주는 봇(초보)
목록

궁금한 점을 해결하지 못하셨나요?
지금 바로 NAVER WORKS 사용자들에게 물어보세요!