Slack + Hubot으로 bot에 빈 립에 반응하는 방법
6539 단어 슬랙HubotCoffeeScript
결론
robot.respond //, (res) ->
에서 bot에 대해 응답 된 모든 메시지를 결정합니다 if ///^#{botName}$///.test(res.message.text)
에서 @ + bot 이름 + : + 반각 공간 결정airReply.coffee
module.exports = (robot) ->
robot.respond //, (res) ->
# いわゆる空リプ対応
# 以下は環境変数からbot名を取得しようとした名残です
# ローカルで試す場合はこっち
#botName = process.env.HUBOT_SLACK_BOTNAME
# 本番
#botName = "@" + process.env.HUBOT_SLACK_BOTNAME + ": "
# mobasol-chanというのがbot名です
botName = "@mobasol-chan:" # 本当は固定値でなく設定値からとりたいがうまくいかないため
if ///^#{botName}$///.test(res.message.text)
if err
res.send err
if data
res.send "空リプ送りましたね?"
이상.
해설
일단 해설을 해 둡니다.
robot.respond //, (res) -> 정보
robot.respond //, (res) ->
bot에 대한 발언을 얻을 수 있습니다.
아래와 같은 ↓
여기서 간인 것이 정규 표현을 //
로 하는 것입니다.
처음에는 다음과 같이 ^\s*$
쓸데없는 패턴module.exports = (robot) ->
robot.respond /^\s*$/, (res) ->
res.message.text 정보
다음에 res.message.text
입니다만 이것은 발언 내용이 들어옵니다.
즉 "@mobasol-chan : help"와 slack으로 bot에 말을 걸면 "@mobasol-chan : help"가 들어가,
"@mobasol-chan : "라고 bot에 말을 걸면 "@mobasol-chan : "가 들어옵니다.
보충
소스 코멘트에 썼습니다만, 로컬로 움직일 때와 Slack상에서 움직일 때와 빈 립의 메세지 형식이 다르기 때문에 주의가 필요합니다.
로컬로 움직였을 경우의 빈 립은 "mobasol-chan"이 되어 Slack상의 판정과 어긋나 버립니다.
(Slack의 경우 bot 이름에 @와 :를 추가했습니다.)
HUBOT_SLACK_BOTNAME=mobasol-chan bin/hubot
mobasol-chan>
mobasol-chan> mobasol-chan
보충 2
yo hubot
명령으로 hubto를 만들면 bin/hubot에 고정 bot 이름이 들어갈 것이라고 생각합니다.
그러면 bot명의 판정이 고정값이 되어 버리므로 이하와 같이 환경 변수로부터 설정하도록 바꾸고 있습니다.
(단지 결국 이쪽의 방법을 취하고 있지 않기 때문에 하지 않아도 airReply.coffee는 움직인다)
diff --git a/bin/hubot b/bin/hubot
index d8e1137..47a7db8 100755
--- a/bin/hubot
+++ b/bin/hubot
@@ -5,4 +5,4 @@ set -e
npm install
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"
-exec node_modules/.bin/hubot --name "mobasol-chan" "$@"
+exec node_modules/.bin/hubot --name $HUBOT_SLACK_BOTNAME "$@"
if ///^#{botName}$///.test(res.message.text) 정보
정규 표현을 //
로 하고 있으므로 bot에 대한 모든 발언을 핸들링 해 버리고 있습니다.
@mobasol-chan : "만 경우를 빈 립이라고 말할 수 있으므로 res.message.text
가 "@mobasol-chan : "와 일치하는지 확인합니다.
백슬래시 세 가지 구문은 【CoffeeScript】정규 표현 리터럴내에서 변수를 전개한다 을 참고로 했습니다.
(문자 리터럴의 변수 확장)
할 수없는 일
사실은 정답 예에도 썼던 것처럼 HUBOT_SLACK_BOTNAME
Reference
이 문제에 관하여(Slack + Hubot으로 bot에 빈 립에 반응하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/NorsteinBekkler/items/9fc8d98040d3bb05f866
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
module.exports = (robot) ->
robot.respond /^\s*$/, (res) ->
HUBOT_SLACK_BOTNAME=mobasol-chan bin/hubot
mobasol-chan>
mobasol-chan> mobasol-chan
diff --git a/bin/hubot b/bin/hubot
index d8e1137..47a7db8 100755
--- a/bin/hubot
+++ b/bin/hubot
@@ -5,4 +5,4 @@ set -e
npm install
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"
-exec node_modules/.bin/hubot --name "mobasol-chan" "$@"
+exec node_modules/.bin/hubot --name $HUBOT_SLACK_BOTNAME "$@"
Reference
이 문제에 관하여(Slack + Hubot으로 bot에 빈 립에 반응하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/NorsteinBekkler/items/9fc8d98040d3bb05f866텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)