For the complete documentation index, see llms.txt. This page is also available as Markdown.

STEP3 | スキーマの共通化

概要

STEP2ではSlackにおけるユーザー一覧取得とメンション付きのメッセージ投稿のソリューションを作成しました。

STEP3では、同じコミュニケーションツールであるTeamsでも同じようにソリューションを作成し、違いを体感してみましょう。


1. スキーマの共通化について理解する

STEP3でお伝えしたいことを先にご紹介します。こちらを理解いただければSTEP3を実際に試す必要はありません。

Slackでユーザー一覧を取得しメンション付きのメッセージを送る際にレスポンスで受け取ったデータは、ユーザーIDとメールアドレスでした。

ユーザーIDは同じSlackでもTeamsでもid という同じ名称でデータを保持しています。

しかし、メールアドレスはSlackではemail、Teamsではmailと異なる名称でデータを保持しています。

また、名前(表示名)に至ってはそれぞれのアプリケーションが、複数のデータを異なる名称で持っています。

データ項目
Slack
Teams
共通化スキーマ

ユーザーID

id

id

idに共通化

メールアドレス

email

mail

emailに共通化

名前(表示名)

name、real_name、display_name、first_name、last_name、real_name_normalized、display_name_normalized

displayName、surname、givenName

nameに共通化

このように同じ「ユーザー情報」でもアプリケーションによってフィールド名が異なります。 アプリごとに異なるデータ構造に対応する開発は、以下の理由で大変です:

  • 各アプリのAPI仕様を個別に学習する必要がある

  • データ取得ロジックをアプリごとに実装する必要がある

  • 新しいアプリを追加するたびに実装コストがかかる

Request&Responseトリガーによるデータの正規化

Request&Responseトリガーのレスポンスペイロード機能を使うと、異なるアプリケーションから取得したデータを統一された形式に変換して返すことができます。

具体的な実装例

Slackの場合(入力)

Teamsの場合(入力)

Response Stepのペイロード設定(統一形式)

最終的なレスポンス(どちらのアプリでも同じ形式)

メリット

  • 統一されたインターフェース:呼び出し元はどのアプリからデータが来たかを意識する必要がない

  • 開発効率の向上:データを使用する側の実装を1つで済ませられる

  • 保守性の向上:新しいアプリを追加する場合、Response Stepのマッピングを追加するだけで済む

  • テストの簡素化:統一された形式でテストできるため、テストケースがシンプルになる

Request&Responseトリガーのレスポンスペイロード機能は、異なるアプリケーションのデータ構造の違いを吸収する「アダプター層」として機能します。これにより、アプリケーションごとの実装の違いを隠蔽し、統一されたインターフェースを提供できるため、開発効率と保守性が向上します。


2.実際にTeamsでのソリューションを作成する

Teamsにはチームとチャネルという概念があります。 チームに所属しているユーザーは複数のチャネルを作成してそれぞれでチャットができます。

このチームとチャネルという概念はSTEP2で使用したSlackにはありません。 そこで、エンドユーザーを追加して、ウィザードを設定しましょう。

まず、中級STEP2で作成したソリューションを複製したものを開き、ウィザード画面を開いてください。

2-1. エンドユーザー変数を設定する

変数のウィンドウから[エンドユーザー変数]をクリックします。

追加ボタンを押して、[チームID]と[チャネルID]を追加します。※型はStringです。

すでにあるチャンネルは削除してください。

2-2. ウィザードを設定する

SlackBotの認証は使わないため、ウィザードから解除します。

左下にあるエンドユーザーの設定項目からMicrosoft Teamsをスクリーン1に割り当ててください。

同様にチームIDとチャネルIDもスクリーン1に割り当ててください。

チームIDを選択し、設定を下記に変更してください。

  • 入力方法:[アシスト]

  • アシストを選択:[チーム一覧]

チャネルIDを選択し、設定を下記に変更してください。

  • 入力方法:[アシスト]

  • アシストを選択:[チームのチャネル一覧]

  • 参照フィールド:[チームID]

2-3.メンバー一覧を取得する

ソリューション画面に戻ります。

ステップ3に[+]ボタンから[アクション]を選択し[Microsoft Teams]を選択します。

  • カスタムアクションを選択します。

カスタムアクションについて

Helpをご確認の上、下記をご覧ください。

  • カスタムアクション名:任意の名前を付けます。

  • HTTPメソッド:GETを選択します。

  • リクエストパス:usersと入力します。

  • レスポンスタイプ:jsonを選択します。

  • レスポンス定義:JSONまたは手動で追加します。下記を参考に追加してください。

ステップ4に[レスポンス]を追加します。

  • 実行ステータス:成功にするを選択します。

  • レスポンス名:任意の名前を付けます。

  • レスポンスペイロードは以下のように設定します。

    • リストソース:変数のStep3にあるvalue を選択します。

    • id:変数のStep3にあるid を選択します。

    • email:変数のStep3にあるmail を選択します。

2-4.Teamsにメッセージを送信する

ステップ2の[if]から[else]を設定すると、ステップ5に配置されます。

ステップ6にアクションから[Teams]を選択し、[チャネルにメッセージを送信]を選択します。

  • チームID:変数からエンドユーザー変数の[チームID]を選択します。

  • チャネルID:変数からエンドユーザー変数の[チャネルID]を選択します。

  • メッセージ本文は下記のように設定します。

    • コンテンツタイプ:[HTML形式]を選択します。

    • メッセージ内容:変数からStep1の[message]を選択します。

  • メンションは下記のように設定します。

    • ユーザーID:変数からStep1の[mention_id]を選択します。

ステップ7に[レスポンス]を選択します。

  • レンポンス名:[ok]を選択します。

  • ペイロード:任意のレスポンスを設定します。今回は[ok]と入力します。

2-5. ソリューションをテストする

完成したので、テストしましょう。ソリューションの仕組みはSTEP2と同様です。searchでユーザー一覧を取得し、取得したidに対して、メンション付きのメッセージを送信する。という流れです。

テストに成功したら、終了です。


まとめ

今回のセクションでは、スキーマの共通化について学ぶことができました。

中級編はこれにて完了です。お疲れ様でした。

次はいよいよ実際に本番に向けてソリューションを構築していきましょう。

👉いよいよ、本番向けソリューションの構築へ

トライアルツアーが終わったら

最終更新