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

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

ただいまの
回答率

90.49%

  • API

    1851questions

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

  • JSON

    1484questions

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

  • CoffeeScript

    149questions

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

  • Hubot

    29questions

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

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

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 713

tarou212

score 1

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ページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

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

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

  • API

    1851questions

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

  • JSON

    1484questions

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

  • CoffeeScript

    149questions

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

  • Hubot

    29questions

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