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

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

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

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

CoffeeScript

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

API

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

受付中

hubotからslackのAPIにアクセスする方法

tarou212
tarou212

総合スコア7

Hubot

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

CoffeeScript

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

API

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

0回答

0リアクション

0クリップ

2258閲覧

投稿2018/02/21 10:23

backlogから課題の追加か更新があった場合、hubotを通して、slackのチャンネルに通知されるのですが、通知したい相手にメンションが飛ばない状態です。
backlogとslackのユーザー名が違うため、backlogから取得したユーザー名とslackの表示名が同じの為、slackAPIのusers.listからユーザーの表示名(display_name)を
エンコードし漢字に変換し、backlogから取得したユーザー名とslackの表示名が同じの場合、slackのIDを表示する記述をしたいのですが、
JSONファイルの取得の仕方が分からない状態です。

下記の③のリンク先がJSONファイルのusers.listからメンバーを取得しているので下記のコードに入れてみたのですが、hubotが動作しなくなりました。
下記の記述にslack API users.listを取得できるようにするにはどう記述したら良いのでしょうか?

①通知したい人にSlackのメンションを飛ばすために参考にしたサイト
https://qiita.com/kon_yu/items/8e06ee1e638000a5c544#%E9%80%9A%E7%9F%A5%E3%81%97%E3%81%9F%E3%81%84%E4%BA%BA%E3%81%AB%E3%83%A1%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E9%A3%9B%E3%82%93%E3%81%A7%E3%82%8B%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3

②slack API users.list
https://api.slack.com/methods/users.list

③hubotからSlackのAPI自体にアクセスする方法
https://qiita.com/esehara@github/items/0774004d8761a5f24a72

.coffee

# 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 backlogid = "#{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

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

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

Hubot

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

CoffeeScript

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

API

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