slackAPIを使ってフォームから取得した内容をBotに発言させてみた

はじめに

お問い合わせフォームで入力した内容をSlackに送信してみようとおもい作ってみました。

ポートフォリオの一部です

f:id:makoo5:20190911224623p:plain

f:id:makoo5:20190912002416p:plain

流れ

  • ライブラリ追加
  • Botの作成してAPI Tokenの取得する
  • Botが話すスペースの提供
  • コーディング

ライブラリ追加

Maven Repository: com.ullink.slack » simpleslackapi » 1.2.0

compile group: 'com.ullink.slack', name: 'simpleslackapi', version: '1.2.0'

Botの作成してAPI Tokenの取得する

ここからBotを作成

Get Started | Slack

作成後API Tokenが発行される

Botが話すスペースの提供

作成したBotは既にどこかのワークスペースに存在してるので、チャンネルに誘う

コーディング

  • post送信時に処理するコントローラー
  • 入力された値をslackに出力するサービス
  • フロント側

コントローラー

    @PostMapping("/contact")
    String postContact(@RequestParam("name") String name,
                       @RequestParam("email") String email,
                       @RequestParam("message") String message) throws Exception{

        slackBotService.connect(name,email,message);
        return "redirect:/inquiry/contact";
    }

サービス

Slackの接続処理はサービスに切り分けました

@Service
public class SlackBotService {

   
    public void connect(String name,String email,String msg)throws IOException{
        
        // API Tokenを入力
        SlackSession session = SlackSessionFactory.createWebSocketSlackSession("xoxb-xxx");
        session.connect();

        // findChannelByNameにBotが存在してるchannel名を記入
        SlackChannel channel = session.findChannelByName("bot");

        String message =
                "===================================="+"\n"

                + "名前 : "+name+"\n"
                + "メール : "+email+"\n"
                + "メッセージ : "+msg+ "\n"

                +"====================================";

        session.sendMessage(channel, message);
        session.disconnect();
    }

}

フロント

別記事で記述

まだバリデーションかけてないので、かけたり他のページを作成していきたいと思います!

参考

https://qiita.com/riversun/items/25f64f285699223a992d