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

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

ただいまの
回答率

91.25%

  • Ruby on Rails 5

    239questions

  • WebSocket

    142questions

    WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

  • Slack

    110questions

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

railsアプリケーションをslackと連携させたい

受付中

回答 1

投稿 編集

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

syntax

score 2

実現したいこと

http://studio-andy.hatenablog.com/entry/ruby-bot
こちらのサイトを参考にさせて頂き、slackのbotを実装出来ました。

今度は実際に自分が作っているrailsのアプリケーション内で動かしたいのですが、可能なのでしょうか。

アプリケーションに持たせたい機能としては、簡単なbot機能とslackで投稿したメッセージの一部を保存していくことです。

具体的には上記サイトを参考にして作成した以下のようなコードを、railsアプリケーションではどこに置いたらよいのでしょうか?
初心者の為とんちんかんな事を言っていたらすみません、どなたか教えて頂けますとうれしいです。

ruby 2.3.1
Rails 5.0.6

# test.rb
require 'http'
require 'json'
require 'eventmachine'
require 'faye/websocket'

response = HTTP.post("https://slack.com/api/rtm.start", params: {
    token: ENV['SLACK_API_TOKEN']
  })

rc = JSON.parse(response.body)

url = rc['url']

EM.run do
  # Web Socketインスタンスの立ち上げ
  ws = Faye::WebSocket::Client.new(url)

  #  接続が確立した時の処理
  ws.on :open do
    p [:open]
  end

  # RTM APIから情報を受け取った時の処理
  ws.on :message do |event|
    p [:message, JSON.parse(event.data)] 
  end

  # 接続が切断した時の処理
  ws.on :close do
    p [:close, event.code]
    ws = nil
    EM.stop
  end
end
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

0

Railsアプリケーションでは自分で作ったライブラリはlib配下に置いて、それをRailsとして読み出せるようにPATHを通しておくのが通例のようです。

参考:https://qiita.com/azusanakano/items/885fe3236977580b00c9

その時に注意すべき点としては、自動読み込みされるためにはディレクトリ・ファイル構成と命名規則に従うというのが必要になるので、クラス名とかは考える必要があると思います。

また、Rails5の場合だとさらに追加が必要そうですね。

参考:http://mikamisan.hatenablog.com/entry/2017/04/23/215019

<例>
lib/slack_client.rb というファイル名にした場合

class SlackClient
  def initialize
  end
  :
  :
end

っと思ったのですが、ライブラリというよりかWebSocketだからViewとかControllerに処理を書くっぽいですね。

参考:https://qiita.com/sasurai_usagi3/items/37f1268621a258864f46

途中まで書いたのでせっかくなので投稿しておきます。

趣旨が違ったらすいません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

ただいまの回答率

91.25%

関連した質問

  • 解決済

    slack botを使おうとして

    現在windowsでのコマンドプロンプトで行おうとしており、http://toach.click/slack-botkit/のページに沿って導入しようとしていましたが,token=

  • 受付中

    SlackApi、Slackに通知がこない

    前提・実現したいこと 以下のサイトをもとにSlack時報をつくりたいと思い全く同じ通りにやったのですが、slackに通知がきません。 なにかお分かりになる方いらっしゃいませんで

  • 解決済

    node.jsでapiを叩いた結果をまとめてjsonで扱う

    前提・実現したいこと Slack Web Apiをslack-nodeを利用してnode.jsを使って叩いてます。 最終的に複数のチームに跨がり投稿をチェックし、最終投稿を全て

  • 受付中

    node.jsを利用してSlackの各チャンネルの最終投稿を全て取得したい

    前提・実現したいこと node.jsを利用し、複数のチームのSlackからチャンネル情報を取得して、 全チャンネル(絞り込みは追って対応するとして)の最終投稿を取得したいと考え

  • 解決済

    スラックのボット作成

    スラックにボット機能を作成しようと考えています。 実現したいことは、 1,あるところからメッセージが入ってくる(例えば巨人対阪神の結果は、4対0で巨人の勝ち) 2,1のメ

  • 受付中

    slackbotを作成したい

    前提・実現したいこと slackbotを作成したいです.slackbotというライブラリはインストールできています. 発生している問題・エラーメッセージ python run.

  • 解決済

    golangでslackbot作りたいのですがよくわかりません

    環境 言語: go 1.8.3 開発環境: gogland slackAPI: https://github.com/nlopes/slack したいこと golangでsla

  • 解決済

    Node.jsでSlackbotを作る-うまくいかない

    Win8.1PCで、Node.jsでSlackbotを作るということで、以下のページを参考にしたのですが、動作がうまく行きませんでした http://mechanic.pilotz

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

  • Ruby on Rails 5

    239questions

  • WebSocket

    142questions

    WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

  • Slack

    110questions

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