SpringBootを使ってTeamsにメッセージを投稿してみた。
はじめに
この記事は富士通システムズウェブテクノロジー Advent Calendarの17日目の記事です。
(お約束)本記事の掲載内容は私自身の見解であり、
所属する組織を代表するものではありません。
入社2年目がSpringBootを使ってTeamsにメッセージを投稿して遊んでみた記事です。
技術力はまだまだだけど、お祭りに参加したぞってのを感じて。
まぁ、少しくらいは知識を身に着けて。
楽しかったと言えればそれでいいのだ!くらいの気持ちで書きました。ええ。
ということで、遊んでいくゾ
Teamsとは
Microsoft社が開発したチーム間のコミュニケーションを促進するためのツール。
【コンセプト】
チャット機能、音声機能、会議等により、
チームのメンバーがどこにいてもコミュニケーションを取ることができる。
Teamsの主な機能
- チーム内でのオープンな会話
- チームメンバー同士のチャット(コミュニケーションスペース)
- チームのメンバーとの1:1でのチャット
- チーム内でのファイル共有
- 関連サービスまたはシステムとの連携(コネクタアプリ)
- チームの会議のスケジューリング
- 音声/ビデオ通話(Skype for Business機能を活用)
Teamsの構成
組織/チーム/チャネルの3つで構成されている。
組織 ┣ チーム① 1 ┃ ┣ チャネル1 ┃ ┣ : ┃ ┗ チャネルn ┣ : ┗ チームn ┣ チャネル1 ┣ : ┗ チャネルn
TeamsとSlackの違い
開発コンセプト
【Slack】
メールでのコミュニケーションを不要として
チャットツール中心のコミュニケーションを実現すること。
【Teams】
チャットとメールを別のコミュニケーションツールとして棲み分け、
双方を有効活用したコミュニケーションを実現すること。
遊ぶのだー!!
まずは、遊ぶための下準備。
遊ぶためには準備が必要。しっかりとやっていこう。
前提
- Teams
- JDK11
- SpringBoot
- Gradle
Teamsのアカウントを準備する
公式サイトからサインアップorサインインをする。
※既にOutlookのアカウントを持っている人はサインインでいいゾ。
アカウント作成途中で「会社名は?」とか聞かれたような気がしたが、
Sampleとしておいた。
Sampleの配下に「一般」というタブがある。
この「一般」こそがチャネルである。
コネクタを準備する
今回は外部からメッセージ投稿するので、Incoming Webhookを使っていく。
コネクタの設定方法
① 外部からメッセージ投稿させるチャネルを選択し、「コネクタ」を押下。
② コネクタが一覧で表示されるので、
「Incoming Webhook」を探してボタン「追加」を押下。
③ Incoming Webhookの詳細画面に遷移するのでもう一度ボタン「追加」を押下。
④ フック名に適当に名前を付ける。今回はsampleにした。
名前を付けたらボタン「作成」を押下。
⑤ スクロールするとURLがあるのでそれをコピー!メモか何かに貼り付けておこう。
念のためURLは隠したゾ。
さぁ、メッセージを投稿しようではないか!SpringBoooooooot!
Teamsの準備もできたところで遊んでいこう。ソースは下記参照。
言うても今回は、RestTemplateを使ってメッセージを送信するという簡単なもの。
定数URLの値は【コネクタの設定方法】の手順⑤のURLである。
SpringBootを起動して、ブラウザのURLに「http://localhost:8080/teams」を入れて…。
送信できたー!!!!
冒頭に書いた目標(楽しかったと言えればそれでいいのだ)は、達成と言ってもいいでしょう!
…といったところで今回はここまで!
今回使ったソース
@GetMapping(path = "/teams") public ResponseEntity<String> teams(){ HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); Map<String, String> params = new HashMap<>(); params.put("title", "タイトル"); params.put("text", "テキスト"); HttpEntity<Map<String, String>> request = new HttpEntity<>(params, headers); RestTemplate restTemplate = new RestTemplate(); try { return restTemplate.exchange(URL, HttpMethod.POST, request, String.class); } catch (RestClientException e) { throw new RuntimeException(); } }
最後に
アドベントカレンダーというイベントに参加できたことを光栄に思います。
このような機会を作ってくださったjugemsanさん、ikedahideyaさん、相談に乗って頂いた皆様。
そしてなにより、こんな拙い記事を最後まで読んでくださった皆様、ありがとうございました。