slack webhook에 curl하면 힘든 이야기
8464 단어 ShellScriptBashWindows슬랙curl
시작
Slack API를 사용하여 메시지 보내기 - Qiita
이 기사를 읽고 슬랙의 한 채널에 메시지를 보내고 싶었습니다.
webhook을 사용하여 curl로 두드려 json을 던져 POST 요청을 보냅니다.
web 앱이라면 json을 동적으로 생성하여 던지면 좋기 때문에 여유가 있습니다.
(이 때는 아직 작업의 어려움을 모른다...)
상황
해석의 일보를 markdown으로 만들어, 그것을 slack에 날려서 일보로 하려고 생각한 것입니다.
환경
해석의 일보를 markdown으로 만들어, 그것을 slack에 날려서 일보로 하려고 생각한 것입니다.
환경
서장: 기사 재현
slack의 webhook과 위의 qiita 기사를 참고하여 첫 번째 명령을 작성합니다.
slack의 예라고 이런 느낌.
slack-example$ curl -X POST \
--data-urlencode 'payload={"channel": "#chemspec-iot"
, "username": "webhookbot"
, "text": "This is posted to #chemspec-iot and comes from a bot named webhookbot."
, "icon_emoji": ":ghost:"}' \
https://hooks.slack.com/services/{TOKEN}
Qiita 기사 (위와 동일) 그럼, 이런 느낌.
qiita-article-example$ curl -X POST \
-d @message.json \
https://hooks.slack.com/services/{TOKEN}
message.jsonpayload={
"username": "webhook"
, "channel": "@sshojiro"
, "text": "see more detail about `webhook` in http://qiita.com/rubytomato@github/items/6558bfdb37d982891c09#incoming-webhooks \n this message is sent via `curl`"
, "icon_emoji": ":ghost:"
}
결과는 여기 :
여기까지 좋고 기뻐합니다.
2장: 고절 몇 시간
아래의 markdown을 위와 같은 curl
command로 slack의 채널에 표시하고 싶다는 것이 목표입니다. 아래의 markdown은 일보 등을 상정하고 있습니다.
notes/2016-12-21.md# 2016/12/21 \n
## TODO \n
- *bold* \n
- _Italy_ \n
- ~stank~ \n
- aaaa
그래서 고뇌하면서 만든 것이 다음 스크립트.$1.md
에서 $1.json
를 만든 후 curl에서 POST request합니다. 그런 다음 만든 임시 파일 $1.json
를 삭제했습니다.
send_msg.shsend_msg () {
val=`cat notes/$1.md`
echo 'payload={
"username": "webhook"
, "channel": "#chemspec-iot"
, "text": "'"$val"'"}' > notes/$1.json
curl -X POST \
-d @notes/$1.json \
https://hooks.slack.com/services/{TOKEN} # web-hook url
rm notes/$1.json
}
send_msg $1
종장: 완료
이것을 실행해 보았습니다.
$ ./send_msg.sh 2016-12-21
무사히 슬랙 채널로 보낼 수있었습니다. 죄송합니다.
결언
slack의 webhook에 POST request를 보내, shell 경유로 *.md
의 내용을 자신에게 보내는 channel에 표시할 수 있었습니다.
이렇게 하면 목록화된 일보를 표시할 수 있습니다.
과제로서, 개행 문자를 넣지 않으면 slack상에서는 1행으로 나와 버립니다. 다른 기사에서 이것에 대응하고 싶습니다.
추가
2016/12/21
코멘트란대로, @manji-0씨로부터 코멘트 받았습니다.
val=`cat notes/$1.md`
의 장소를,
val=`cat notes/$1.md | sed -e 's/$/ \\n/g'`
와 같이 수정하면, markdown중의 \n
가 불필요하게 됩니다.
2020/05/26
Windows의 curl을 두드릴 때(Windows에서 MATLAB을 이용하는 경우 등)는 문자열 따옴표를 붙이는 방법이 다르므로 주의가 필요합니다.
또한 slack 측이 나타내는 샘플 코드도 Windows 명령 프롬프트에는 통하지 않습니다.
예를 들어 MATLAB에서 slack을 두드리는 경우에는 다음과 같은 코드를 작성하는 것이 좋습니다.
function slack(msg)
if~exist('msg','var'),msg = 'Hello World!'; end
secret = 'SLACK_SECRET';
cmd = ['curl -X POST -H "Content-type: application/json"' ...
' --data "{'...
'\"text\":\"' msg '\", ' ...
'\"username\": \"@webhook\", '...
'\"channel\": \"@sshojiro\", '...
'\"icon_emoji\": \":ghost:\" '...
'}" https://hooks.slack.com/services/' secret];
[status, cURL_out] = system(cmd);
if status ~= 0, error(cURL_out); end
Windows에서 curl로 slack webhook을 두드리는 기사
Reference
이 문제에 관하여(slack webhook에 curl하면 힘든 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sshojiro/items/4e5d8c8f373858fb77a5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ curl -X POST \
--data-urlencode 'payload={"channel": "#chemspec-iot"
, "username": "webhookbot"
, "text": "This is posted to #chemspec-iot and comes from a bot named webhookbot."
, "icon_emoji": ":ghost:"}' \
https://hooks.slack.com/services/{TOKEN}
$ curl -X POST \
-d @message.json \
https://hooks.slack.com/services/{TOKEN}
payload={
"username": "webhook"
, "channel": "@sshojiro"
, "text": "see more detail about `webhook` in http://qiita.com/rubytomato@github/items/6558bfdb37d982891c09#incoming-webhooks \n this message is sent via `curl`"
, "icon_emoji": ":ghost:"
}
아래의 markdown을 위와 같은
curl
command로 slack의 채널에 표시하고 싶다는 것이 목표입니다. 아래의 markdown은 일보 등을 상정하고 있습니다.notes/2016-12-21.md
# 2016/12/21 \n
## TODO \n
- *bold* \n
- _Italy_ \n
- ~stank~ \n
- aaaa
그래서 고뇌하면서 만든 것이 다음 스크립트.
$1.md
에서 $1.json
를 만든 후 curl에서 POST request합니다. 그런 다음 만든 임시 파일 $1.json
를 삭제했습니다.send_msg.sh
send_msg () {
val=`cat notes/$1.md`
echo 'payload={
"username": "webhook"
, "channel": "#chemspec-iot"
, "text": "'"$val"'"}' > notes/$1.json
curl -X POST \
-d @notes/$1.json \
https://hooks.slack.com/services/{TOKEN} # web-hook url
rm notes/$1.json
}
send_msg $1
종장: 완료
이것을 실행해 보았습니다.
$ ./send_msg.sh 2016-12-21
무사히 슬랙 채널로 보낼 수있었습니다. 죄송합니다.
결언
slack의 webhook에 POST request를 보내, shell 경유로 *.md
의 내용을 자신에게 보내는 channel에 표시할 수 있었습니다.
이렇게 하면 목록화된 일보를 표시할 수 있습니다.
과제로서, 개행 문자를 넣지 않으면 slack상에서는 1행으로 나와 버립니다. 다른 기사에서 이것에 대응하고 싶습니다.
추가
2016/12/21
코멘트란대로, @manji-0씨로부터 코멘트 받았습니다.
val=`cat notes/$1.md`
의 장소를,
val=`cat notes/$1.md | sed -e 's/$/ \\n/g'`
와 같이 수정하면, markdown중의 \n
가 불필요하게 됩니다.
2020/05/26
Windows의 curl을 두드릴 때(Windows에서 MATLAB을 이용하는 경우 등)는 문자열 따옴표를 붙이는 방법이 다르므로 주의가 필요합니다.
또한 slack 측이 나타내는 샘플 코드도 Windows 명령 프롬프트에는 통하지 않습니다.
예를 들어 MATLAB에서 slack을 두드리는 경우에는 다음과 같은 코드를 작성하는 것이 좋습니다.
function slack(msg)
if~exist('msg','var'),msg = 'Hello World!'; end
secret = 'SLACK_SECRET';
cmd = ['curl -X POST -H "Content-type: application/json"' ...
' --data "{'...
'\"text\":\"' msg '\", ' ...
'\"username\": \"@webhook\", '...
'\"channel\": \"@sshojiro\", '...
'\"icon_emoji\": \":ghost:\" '...
'}" https://hooks.slack.com/services/' secret];
[status, cURL_out] = system(cmd);
if status ~= 0, error(cURL_out); end
Windows에서 curl로 slack webhook을 두드리는 기사
Reference
이 문제에 관하여(slack webhook에 curl하면 힘든 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sshojiro/items/4e5d8c8f373858fb77a5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ ./send_msg.sh 2016-12-21
slack의 webhook에 POST request를 보내, shell 경유로
*.md
의 내용을 자신에게 보내는 channel에 표시할 수 있었습니다.이렇게 하면 목록화된 일보를 표시할 수 있습니다.
과제로서, 개행 문자를 넣지 않으면 slack상에서는 1행으로 나와 버립니다. 다른 기사에서 이것에 대응하고 싶습니다.
추가
2016/12/21
코멘트란대로, @manji-0씨로부터 코멘트 받았습니다.
val=`cat notes/$1.md`
의 장소를,
val=`cat notes/$1.md | sed -e 's/$/ \\n/g'`
와 같이 수정하면, markdown중의
\n
가 불필요하게 됩니다.2020/05/26
Windows의 curl을 두드릴 때(Windows에서 MATLAB을 이용하는 경우 등)는 문자열 따옴표를 붙이는 방법이 다르므로 주의가 필요합니다.
또한 slack 측이 나타내는 샘플 코드도 Windows 명령 프롬프트에는 통하지 않습니다.
예를 들어 MATLAB에서 slack을 두드리는 경우에는 다음과 같은 코드를 작성하는 것이 좋습니다.
function slack(msg)
if~exist('msg','var'),msg = 'Hello World!'; end
secret = 'SLACK_SECRET';
cmd = ['curl -X POST -H "Content-type: application/json"' ...
' --data "{'...
'\"text\":\"' msg '\", ' ...
'\"username\": \"@webhook\", '...
'\"channel\": \"@sshojiro\", '...
'\"icon_emoji\": \":ghost:\" '...
'}" https://hooks.slack.com/services/' secret];
[status, cURL_out] = system(cmd);
if status ~= 0, error(cURL_out); end
Windows에서 curl로 slack webhook을 두드리는 기사
Reference
이 문제에 관하여(slack webhook에 curl하면 힘든 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sshojiro/items/4e5d8c8f373858fb77a5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)