質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Hubot

HubotはGitHub社が開発したチャットbotのフレームワークです。

CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

受付中

slackAPIから取得したユーザーIDをhubotで読み込む方法【CoffeeScript】

tarou212
tarou212

総合スコア7

Hubot

HubotはGitHub社が開発したチャットbotのフレームワークです。

CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0回答

0リアクション

0クリップ

2867閲覧

投稿2018/02/27 05:06

backlogの課題が追加&更新された時に、hubotを通じてslackのチャンネルに投稿できるようにしました。
個人通知出来るように、slackAPIのuser.list(https://api.slack.com/methods/users.list/test)を使用し、
backlogから取得した通知相手の名前を元にユーザーIDをslackに投稿したいのですが、
下記の①と②の記述を使用して、①のコメントアウトの「ユーザー名を取得」の部分を元に、②ユーザー名からユーザーIDを投稿する方法ってありますか?
どちらも動作は正常です。

①backlogの課題が更新&追加された時にslackのチャンネルに投稿

# Description: # Backlog to Slack backlogUrl = 'https://backlog.jp/' module.exports = (robot) -> robot.router.post "/slackroom/:room", (req, res) -> room = req.params.room body = req.body console.log 'body type = ' + body.type console.log 'room = ' + room try switch body.type when 1 label = '課題の追加' when 2, 3 # 「更新」と「コメント」は実際は一緒に使うので、一緒に。 label = '課題の更新' else # 課題関連以外はスルー return # 投稿メッセージを整形 url = "#{backlogUrl}view/#{body.project.projectKey}-#{body.content.key_id}" if body.content.comment?.id? url += "#comment-#{body.content.comment.id}" message = "*Backlog #{label}*\n" # notificatonに通知したい人がいればその名前をメンションしてくれる if body.notifications.length > 0 for a in body.notifications console.log a.user.name console.log a.user.id message += "#{a.user.name} #ユーザー名を取得 message += "\n[#{body.project.projectKey}-#{body.content.key_id}] - " message += "#{body.content.summary} _by#{body.createdUser.name}_\n>>> " if body.content.comment?.content? message += "#{body.content.comment.content}\n" message += "#{url}" console.log 'message = ' + message # Slack に投稿 if message? robot.messageRoom room, message # robot.messageRoom room, message res.end "OK" else robot.messageRoom room, "Backlog integration error." res.end "Error" catch error console.log error robot.send

②slackAPI [test 名前] でusers.listから一致する名前のユーザーIDを投稿

request = require('request') module.exports = (robot) -> robot.hear /test (.*)?/, (msg) -> text = msg.match[1] request.get url: "https://slack.com/api/users.list?token=#{process.env.HUBOT_SLACK_TOKEN}" , (err, response, body) -> # Slack APIからメンバーを取得 memberid = (member.id for member in JSON.parse(body).members when member.profile.display_name is text) msg.send "<@#{memberid}>"

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Hubot

HubotはGitHub社が開発したチャットbotのフレームワークです。

CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。