はじめに
今回は Teams から kintone に勤怠登録をしてみようと思います。
具体的には、Teams から送ったメッセージを分解して、 kintone の任意のフィールドに登録するという処理を Microsoft Power Automate を使って実現していきます。
準備するもの
準備するものは以下の通りです。
- kintone のアプリ
- 「レコード追加」権限のある API トークン(詳しくは kintone ヘルプのAPI トークンを生成するを参照)
- Microsoft Teams
- Microsoft Power Automate
kintone の設定
まず、kintone にアプリを作ります。
今回は勤怠登録をイメージしてアプリを作成しました。
用意したフィールドは以下の通りです。
フィールド名 | フィールドコード | フィールドの種類 |
---|---|---|
日時 | 日時 | 日時フィールド |
氏名 | 氏名 | 文字列(1行)フィールド |
勤務場所 | 勤務場所 | 文字列(1行)フィールド |
通信には、API トークンを使用します。
API トークンの詳しい設定方法は、kintone ヘルプのAPI トークンを生成するを参照してください。
API トークンのアクセス権は「レコード追加」にチェックを入れてください。
Microsoft Power Automate の設定
Microsoft Power Automate を設定していきます。全体の流れは以下の通りです。
Microsoft Teams からメッセージを送信する
まず、Microsoft Teams からメッセージを受け取ったときの設定をします。
今回はテスト用に、「連携動作確認用」チームに「レコード登録」チャネルを作成しました。
以下のような形でメッセージを送信することを想定して、実装していきます。
コマンド名 {フィールド名}:{String}
HTML をテキストに変換する
Microsoft Power Automate では、Microsoft Teams からのメッセージを HTML 形式で受け取ります。
そのままでは、文字列として処理できないため、「Html to Text」で文字列に変換します。
設定方法は以下のように、Content に「メッセージ 本文 コンテンツ」を追加するだけです。
変数を初期化する(command)
文字列に変換した後は、文字列を「コマンド(command)」と「HTTP リクエスト送信用のボディ(requestBody)」に分解していきます。
はじめにコマンド部分を切り出してみましょう。「変数を初期化する」で文字列を分解していきます。
画像だとわかりづらいですが、split の第二引数には半角スペースを渡しています。
split(body('Html_to_text'),'{ }')
受け取った文字列の半角スペースより前の部分を切り出すという式です。
切り出した文字列は配列に格納されます。
上記の式だと、配列の1番目にコマンド、2番目にそれ以降の文字列が格納されます。
変数を初期化する(requestBody)
続いて、内容の部分を切り出していきましょう。
「変数を初期化する」の部分は先ほどと同じように設定します。
先ほど、配列の 2 番目に格納したテキストは以下のような形になっています。
"勤務場所:自宅"
フィールド名と値が「:(カンマ)」で区切られている状態なので、こちらも先ほどと同様に
「:(カンマ)」の前後で文字列を切り離して、それぞれ配列に格納します。
条件分岐(コマンドの判定)
次は、コマンドの判定です。
送信されたメッセージのコマンドが「勤務開始」であれば kintone にレコード登録を行う、というように分岐させたいと思います。
「はいの場合」は HTTP リクエストを送信、「いいえの場合」は Microsoft Teams のメッセージにエラーメッセージを返信する、という条件で設定していきましょう。
条件分岐の式は、変数の初期化(command)で作成した配列の1番目のコマンドを比較するように設定します。
はいの場合
「はいの場合」には、HTTP リクエストを送信します。
詳しい kintone API の POST メソッドの仕様については、こちらの記事を参考にしてください。
リクエストの「本文」にはリクエストボディを記載します。
{
"app": {"アプリID"},
"record": {
"日時": {
"value": {"メッセージ CreateDateTime"}
},
"氏名": {
"value": {"メッセージ from ユーザー displayName"}
},
variables('requestBody')[0]: {
"value": {variables('requestBody')[1]}
}
}
}
「日時」、および「氏名」フィールドには、「動的なコンテンツを追加」から「メッセージ CreateDateTime」と「メッセージ from ユーザー displayName」をそれぞれ設定します。
「勤務場所」には、「動的なコンテンツを追加」から「式」を追加し、先ほど変作成した配列の値を代入します。
いいえの場合
コマンドが「勤務開始」以外だった際には、Microsoft Teams のメッセージに返信する形でエラーメッセージを送信します。
「メッセージへの返信の投稿(V2)」を使用して、「動的なコンテンツ」から「メッセージ ID」を指定します。
そして、「返信」には、返信したいメッセージの内容を追加します。
動作確認
実際に動作確認をしてみます。
Power Automate の右上にある、「テスト」から「トリガーアクションを実行する」を選択します。
実際に下記のメッセージを送信してみると、kintone に内容が登録されています。
勤務開始 勤務場所:自宅
エラーの確認も行います。
先ほどのコマンドの前に「/」を入れてみます。
/勤務開始 勤務場所:自宅
すると、メッセージにエラーメッセージが返信されました。
最後に
今回は、「Microsoft Teams から kintone に勤怠登録する」というしシナリオを想定して、Microsoft Power Automate を使った連携方法を検証してみました。
実際に運用するには、足りない点も多くあると思いますが、簡単な内容であれば Microsoft Teams から手軽にレコード登録を実装できると思います。