Hubot에서 Slack 초대 양식 구현
이렇게하면 관리자가 수동으로 수행 한 사용자를 초대할 수 있습니다.
이미 초대 양식을 제공하는 웹 앱이 몇 가지 있습니다만, 이번은 Hubot상에서 구현해 보았습니다.
초대 API 개요
Slack API에는 나타나지 않았으며 Invite 페이지의 소스에서 발견 된 것 같습니다.
curl 명령이라면 다음과 같이 호출 할 수 있습니다 (URL의 TEAM은 없어도 괜찮습니다).
또한 TOKEN은 Admin 권한을 가진 사용자가 발급해야합니다.
$ curl -X POST 'https://TEAM.slack.com/api/users.admin.invite' \
--data 'email=EMAIL&token=TOKEN&set_active=true' \
--compressed
Hubot에서 구현
Typetalk 용으로 개발하고 있었다 Huboco에서도 비슷한 초대 기능을 구현했습니다.
이 경우 API 호출에 Typetalk Adapter이 가진 TOKEN을 유용했습니다.
그러나 슬랙 어댑터의 TOKEN은 Admin 권한이 없으므로 별도로 발급해야합니다.
이번에는
HUBOT_SLACK_ADMIN_TOKEN
라는 환경 변수로 설정하기로 결정했습니다.실제 코드는 길기 때문에 GitHub에 대한 링크를 나타냅니다.
Hubot
/slack/form
에 액세스하면 이메일 주소 입력 양식이 표시됩니다.또한
/api/team.info
를 사용하여 팀 이름을 표시 할 수 있습니다.양식을 제출하면
/api/users.admin.invite
가 호출되고 결과가 표시됩니다.이미 초대 된 등 오류의 경우 오류 페이지가 표시됩니다.
invite 명령
양식과 마찬가지로 명령을 사용하여 사용자를 팀에 초대할 수 있습니다.
(구현 후
/invite_people
명령이 있음을 알았습니다 ....)querystring = require('querystring')
request = require('request')
urler = require('url')
module.exports = (robot) ->
robot.respond /invite\s+(\S+)$/i, (msg) ->
email = msg.match[1]
options = {
url: "https://slack.com/api/users.admin.invite"
qs:
'token': process.env.HUBOT_SLACK_ADMIN_TOKEN
'email': email
'set_active': true
}
request.post options, (err, res, body) ->
json = JSON.parse(body)
unless json.ok
return msg.reply("```\n#{json.error}\n```")
msg.reply("#{email} を招待しました")
카나시
위의 코드는 카나시이라는 Bot으로 작동 중입니다.
Hubot×ChatOps 공부회
08/22 (토)에 고베에서 제2회 Hubot×ChatOps 공부회를 개최합니다!
Hubot이나 ChatOps에 관심이 있는 분, Plugin을 개발하고 있는 분 등, 꼭 와 주세요.
발표해 주시는 분도 모집중이므로, @히코_호리우치까지 부담없이 말씀해 주세요.
Reference
이 문제에 관하여(Hubot에서 Slack 초대 양식 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiconyan/items/634df8b5fb2392fc90cd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)