Amazon AppFlow の送信元コネクタで Microsoft Teams が選択出来るようになったので使ってみた

2022.12.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

先日 Amazon AppFlow を使って SharePoint Online と Amazon S3 を接続する方法をご紹介しました。

その際に気がついたのですが、SharePoint Online 以外に Microsoft Teams との接続も出来るようでした。

これは re:Invent 2022 のキーノートで発表された AppFlow のコネクタ大量追加アップデートのひとつです。

設定の流れとしては前回の SharePoint Online と非常に似ているのでせっかくなので Microsoft Teams のフローも作成してみました。

Microsoft Teams のチームなどを用意

前回と同様に Office 365 E3 を割り当てたテナントで検証しています。
以下のように適当なチームと会話を用意しておきました。

接続構成

流れは前回と同じで上記割り当てのある Azure AD テナントにて AppFlow 用にアプリ登録を行います。
入手したテナント ID、クライアント ID、シークレットを使って AppFlow 側での接続構成を行います。

一点違う点としては SharePoint Online のコネクタよりも広い範囲の Microsoft Graph API アクセス許可が必要です。
このあたりは以下の公式ドキュメントに従って設定を行いましょう。

以下が必要そうです。

  • User.Read
  • Offline_access
  • User.Read.All
  • User.ReadWrite.All
  • TeamsTab.ReadWriteForTeam
  • TeamsTab.ReadWriteForChat
  • TeamsTab.ReadWrite.All
  • TeamsTab.Read.All
  • TeamSettings.ReadWrite.All
  • TeamSettings.Read.All
  • TeamMember.ReadWrite.All
  • TeamMember.Read.All
  • Team.ReadBasic.All
  • GroupMember.ReadWrite.All
  • GroupMember.Read.All
  • Group.ReadWrite.All
  • Group.Read.All
  • Directory.ReadWrite.All
  • Directory.Read.All
  • Directory.AccessAsUser.All
  • Chat.ReadWrite
  • Chat.ReadBasic
  • Chat.Read
  • ChannelSettings.ReadWrite.All
  • ChannelSettings.Read.All
  • ChannelMessage.Read.All
  • Channel.ReadBasic.All

また、本日時点で Microsoft Teams 用のコネクターはデータソースとしてだけサポートされています。
送信先としてはご利用頂けないのでご注意ください。

接続出来るようになると、様々なオブジェクトで連携が出来ます。
この記事では全ては試しませんので、サポートされているオブジェクトは[公式ドキュメント](Microsoft Teams connector for Amazon AppFlow - Amazon AppFlow)をご参照ください。

今回は先程作成したようにチームをいくつか作ってメッセージ投稿したので、Team と Channel Message あたりを使ってみます。

Team

まずは以下のように Team を試してみます。
全てのフィールドをマッピングさせました。

フロー実行に成功すると S3 バケットにメタデータが出力されています。

AppFlow 構成時に出力形式として JSON を指定しているので JSON で出力されていますが、以下のような情報を取得することが出来ました。
テナントのチーム一覧情報という感じですね。

{
    "id": "a1558fb4-397d-48e3-8fa4-d7ae1e579b7b",
    "createdDateTime": null,
    "webUrl": null,
    "displayName": "ほげ会社",
    "description": "組織のお知らせや重要な情報をここで確認してください。",
    "internalId": null,
    "classification": null,
    "specialization": null,
    "visibility": null,
    "isArchived": false,
    "isMembershipLimitedToOwners": null,
    "memberSettings": null,
    "guestSettings": null,
    "messagingSettings": null,
    "funSettings": null,
    "discoverySettings": null,
    "summary": null
}
{
    "id": "ccef6621-65aa-4fde-a965-faa3e0e93f2b",
    "createdDateTime": null,
    "webUrl": null,
    "displayName": "ほげチーム1",
    "description": "ほげチーム1",
    "internalId": null,
    "classification": null,
    "specialization": null,
    "visibility": null,
    "isArchived": false,
    "isMembershipLimitedToOwners": null,
    "memberSettings": null,
    "guestSettings": null,
    "messagingSettings": null,
    "funSettings": null,
    "discoverySettings": null,
    "summary": null
}

アーカイブ状態など、いくつかの属性にもアクセス出来るようなのでシステム間で非同期にチームを同期している際に活用出来るケースがあるかもしれないです。

Channel Message

続いて Channel Message です。
こちらは追加でどのチームのどのチャネルなのかを指定する必要があります。
先程 General で適当なメッセージを投稿していたのでそちらを指定してみましょう。

成功後、先程と同じ用にメタデータが取得出来ました。
中身は以下のようになっています。

{
    "id": "1671784649853",
    "createdDateTime": "2022-12-23T08:37:29.853Z",
    "webUrl": "https://teams.microsoft.com/l/message/19%3AXPcBa9dj8pKeORJe_FcCHkXwxTVcKygaT9mGwa9yAeA1%40thread.tacv2/1671784649853?groupId=a1558fb4-397d-48e3-8fa4-d7ae1e579b7b&tenantId=e2b652be-4913-4623-b3cb-792761207f00&createdTime=1671784649853&parentMessageId=1671784649853",
    "summary": null,
    "replyToId": null,
    "etag": "1671784649853",
    "messageType": "message",
    "lastModifiedDateTime": "2022-12-23T08:37:29.853Z",
    "lastEditedDateTime": null,
    "deletedDateTime": null,
    "subject": null,
    "chatId": null,
    "importance": "normal",
    "locale": "en-us",
    "policyViolation": null,
    "eventDetail": null,
    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "87b2ab55-db1d-4c35-8274-2530c4122818",
            "displayName": "岩浅貴大",
            "userIdentityType": "aadUser",
            "tenantId": "e2b652be-4913-4623-b3cb-792761207f00"
        }
    },
    "body": {
        "contentType": "text",
        "content": "いいいいい"
    },
    "channelIdentity": {
        "teamId": "a1558fb4-397d-48e3-8fa4-d7ae1e579b7b",
        "channelId": "19:XPcBa9dj8pKeORJe_FcCHkXwxTVcKygaT9mGwa9yAeA1@thread.tacv2"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}
{
    "id": "1671784645747",
    "createdDateTime": "2022-12-23T08:37:25.747Z",
:
    "body": {
        "contentType": "text",
        "content": "あああああ"
    },
    "channelIdentity": {
        "teamId": "a1558fb4-397d-48e3-8fa4-d7ae1e579b7b",
        "channelId": "19:XPcBa9dj8pKeORJe_FcCHkXwxTVcKygaT9mGwa9yAeA1@thread.tacv2"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}
{
    "id": "1671784638893",
    "createdDateTime": "2022-12-23T08:37:18.893Z",
:
    "body": {
        "contentType": "text",
        "content": "うおおおお"
    },
    "channelIdentity": {
        "teamId": "a1558fb4-397d-48e3-8fa4-d7ae1e579b7b",
        "channelId": "19:XPcBa9dj8pKeORJe_FcCHkXwxTVcKygaT9mGwa9yAeA1@thread.tacv2"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}

メッセージ一覧と、個々のメッセージの様々な属性を取得出来ています。
なお webUrl にアクセスすると以下のように対象メッセージを表示することが出来ます。(認証必要)

さいごに

本日は Amazon AppFlow の送信元コネクタで Microsoft Teams が選択出来るようになったので使ってみました。

AppFlow を使うことで Teams のデータに簡単にアクセス出来るようになりました。良いですね。
個人的には Webhook からペイロード加工して Teams に投稿するようなところを期待していたのですが用途としてはちょっと違ってますね。

用途としては Teams のデータを集めて分析とかに活用する感じでしょうか。
先日弊社から Slack データアーカイブ基盤のプレスリリースが出ていましたが、要はこれの Microsoft Teams 版を AWS 上で実現する際に活用出来そうです。