LoginSignup
3
0

More than 5 years have passed since last update.

railsでslackのチャンネルにメッセージを送ってみた

Last updated at Posted at 2019-01-20

動機

友人とwebサイトを制作していて、"contact" のように外部の人たちが私たちに連絡を取れるページを作ろうという話になりました。しかし、共有のメールアドレスをもっていないので、それ以外の方法はないかと考えたところ、slackにメッセージを送ればいいという結論になり、ついでに記事をかいています。(圧倒的な雑さ)

概要

1.使用したgem
2.コード
3.欠点
4.その他

1.使用したgem

使用したgemは'slack-notifier'というgemです。このgemを入れて,githubに書かれている手順にしたがって
https://github.com/stevenosloan/slack-notifier
上がgemのgithubです。英語ですが、slackにメッセージをお車での手順は簡単なので試していけばうまく行くと思います。

https://kut-fencers.slack.com/apps/A0F7XDUAZ-incoming-webhooks?next_id=0
上のリンク先から次のページに飛び、あとは流れでやります。設定以外は特にいじらなくても大丈夫です。
設定が完了したらWebhook URLをコピーしておいてください。
Screen Shot 2019-01-20 at 22.20.23.png

2.コード

ルーティングは index と create を使いました。 
今回は送るだけの実験なのでcssを用意してません。
viewについて特にいうことはありません。

index.html.erb
<%= form_tag("top#create", method: "post") do %>
  <%= label_tag(:name, "name:") %>
  <!-- 一つ目がどの入力ボックスとひもづけるか、だからしたと同じにする。右がラベルの名前 -->
  <%= text_field_tag(:name) %>
  <!-- これはparams[:name]で参照できる -->
  <%= label_tag(:message, "message:") %>
  <%= text_field_tag(:message) %>
<br>
  <%= submit_tag("send") %>
<% end %>

Screen Shot 2019-01-20 at 22.16.55.png

  def index
  end

  def create
    slack_name = params[:name]
    message =  "<!here> " +params[:message]
    notifier = Slack::Notifier.new "コピーしたWebhook URL"
    notifier.ping message, username: slack_name
  end

これでsendボタンをクリックして、createページに遷移した際にslackにメッセージが送信されます。https://api.slack.com/docs/message-formatting このページにも書いてありますが<!here>のように記述することでmentionを飛ばすことができます。ちなみに@hereは現在アクティブなユーザーにのみ通知がmentionのようです。忘れないようにしたければ@channelが確実だと思われます。
Screen Shot 2019-01-21 at 23.23.05.png

3.欠点

このコード自体は問題ありません。しかし、いくつか追加すべき機能があります。
・newページを更新してもメッセージが送信されてしまう。
2019/01/31. 使用するルーティングをnewからcreateに変更することで解決しました。
・誰が送信したのか名前以外で判別しずらい(アイコンが変わらない)
上記の欠点はこれから修正していきたいと思います。

4.その他

2019/01/20 記事を投稿
2019/01/21 mentionの記述を追加、画像を追加
2019/01/31 リロードの問題を解決。はっきりとした理由はわからないのでまた追記します。
誤字脱字、記事の間違いなどを指摘していただけるとありがたいです。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0