Slack의 WebAPI를 직접 호출 할 때 어려움
소개
회사에서 Unibo 이라는 AI 로봇을 다루고 있는데, 여기 의 기사에 있는 대로 Slack과 연결해 보자는 것이 되었습니다.
하지만, 항에 있는 Slack과 연결해 본 계의 기사는 처마 같은 런타임 환경용의 라이브러리를 사용하고 있는 것뿐. .
Unibo는 직접 소스에서 프로그램을 실행할 수 없으며 SkillCreator(Node-RED 기반)로 액션을 정의할 수 있지만, 원래의 Node-RED처럼 자유롭게 노드를 추가할 수 있습니다. 할 수 없는 제약이 있습니다.
그래서 Slack 공식 API 문서를 보면서 직접 API를 HTTP Request하도록 구현하는 방법? 에서 약간 빠져서 기사를 일으켰습니다.
어려움
Unibo는 로봇이므로 BotToken을 획득하고 Bot으로 메시지를 Slack에 던지지만 API는 chat.postMessage를 사용합니다.
그래서 공식 API 문서에서는 이렇게 썼습니다.
chat.postMessage
그래서 token은 channel과 같이 요청 파라미터로 송신해 버릴 것 같네요.
msg.payload = {
"token": "xoxb-...",
"channel": "CDVSKQUAZ",
"text": "hello!"
};
return msg;
그래서, 이것을 하면, Slack 서버로부터는, 이런 느낌에 톤으로 됩니다.
{
"ok": false,
"error": "not_authed",
"warning": "missing_charset",
"response_metadata": {
"warnings": [
"missing_charset"
]
}
}
인증되지 않았습니다!
해결 방법
결국, token은 OAuth (인증의 구조)의 것이므로, 이것에 따라 HTTP Request 해 줄 필요가 있습니다.
즉, 헤더에 "Authorization"을 지정해 줍니다.
SkillCreator(Node-RED)라고 이런 느낌.
msg.headers = {
"content-type": "application/json",
"Authorization": "Bearer xoxb-..."
};
msg.payload = {
"channel": "CDVSKQUAZ",
"text": "hello!"
};
return msg;
"Bearer"에 대해서는 이 근처에 기사가있었습니다.
요약
라이브러리는 편리합니다.
하지만 라이브러리를 사용하지 않고 공식 WebAPI를 그대로 사용할 수 있습니다.
그럴 때는 초심을 잊지 말고.
문서는 제대로 읽을 수 있습니다.
htps : // 아피. scck. 코 m / ぇ b # 포스 친 g_j
이상입니다.
Reference
이 문제에 관하여(Slack의 WebAPI를 직접 호출 할 때 어려움), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/s-suefusa/items/86b5eab5c9d9d84e054c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Unibo는 로봇이므로 BotToken을 획득하고 Bot으로 메시지를 Slack에 던지지만 API는 chat.postMessage를 사용합니다.
그래서 공식 API 문서에서는 이렇게 썼습니다.
chat.postMessage
그래서 token은 channel과 같이 요청 파라미터로 송신해 버릴 것 같네요.
msg.payload = {
"token": "xoxb-...",
"channel": "CDVSKQUAZ",
"text": "hello!"
};
return msg;
그래서, 이것을 하면, Slack 서버로부터는, 이런 느낌에 톤으로 됩니다.
{
"ok": false,
"error": "not_authed",
"warning": "missing_charset",
"response_metadata": {
"warnings": [
"missing_charset"
]
}
}
인증되지 않았습니다!
해결 방법
결국, token은 OAuth (인증의 구조)의 것이므로, 이것에 따라 HTTP Request 해 줄 필요가 있습니다.
즉, 헤더에 "Authorization"을 지정해 줍니다.
SkillCreator(Node-RED)라고 이런 느낌.
msg.headers = {
"content-type": "application/json",
"Authorization": "Bearer xoxb-..."
};
msg.payload = {
"channel": "CDVSKQUAZ",
"text": "hello!"
};
return msg;
"Bearer"에 대해서는 이 근처에 기사가있었습니다.
요약
라이브러리는 편리합니다.
하지만 라이브러리를 사용하지 않고 공식 WebAPI를 그대로 사용할 수 있습니다.
그럴 때는 초심을 잊지 말고.
문서는 제대로 읽을 수 있습니다.
htps : // 아피. scck. 코 m / ぇ b # 포스 친 g_j
이상입니다.
Reference
이 문제에 관하여(Slack의 WebAPI를 직접 호출 할 때 어려움), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/s-suefusa/items/86b5eab5c9d9d84e054c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
msg.headers = {
"content-type": "application/json",
"Authorization": "Bearer xoxb-..."
};
msg.payload = {
"channel": "CDVSKQUAZ",
"text": "hello!"
};
return msg;
라이브러리는 편리합니다.
하지만 라이브러리를 사용하지 않고 공식 WebAPI를 그대로 사용할 수 있습니다.
그럴 때는 초심을 잊지 말고.
문서는 제대로 읽을 수 있습니다.
htps : // 아피. scck. 코 m / ぇ b # 포스 친 g_j
이상입니다.
Reference
이 문제에 관하여(Slack의 WebAPI를 직접 호출 할 때 어려움), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/s-suefusa/items/86b5eab5c9d9d84e054c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)