##動機
友人と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をコピーしておいてください。
#2.コード
ルーティングは index と create を使いました。
今回は送るだけの実験なのでcssを用意してません。
viewについて特にいうことはありません。
<%= 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 %>
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 このページにも書いてありますがのように記述することでmentionを飛ばすことができます。ちなみに@hereは現在アクティブなユーザーにのみ通知がmentionのようです。忘れないようにしたければ@channelが確実だと思われます。
#3.欠点
このコード自体は問題ありません。しかし、いくつか追加すべき機能があります。
・newページを更新してもメッセージが送信されてしまう。
2019/01/31. 使用するルーティングをnewからcreateに変更することで解決しました。
・誰が送信したのか名前以外で判別しずらい(アイコンが変わらない)
上記の欠点はこれから修正していきたいと思います。
#4.その他
2019/01/20 記事を投稿
2019/01/21 mentionの記述を追加、画像を追加
2019/01/31 リロードの問題を解決。はっきりとした理由はわからないのでまた追記します。
誤字脱字、記事の間違いなどを指摘していただけるとありがたいです。