はじめに
- タイトルの通り、Integration Service 版 Microsoft Teams アクティビティパッケージ「UiPath.MicrosoftTeams.IntegrationService.Activities」を利用して添付ファイル付きのメッセージを送信する方法を紹介します。
Integration Service 版 Microsoft Teams アクティビティパッケージの最新版 v5.0.6 のリリースに合わせて記事を修正しました。
2023年11月13日時点では、Integration Service 版 Microsoft Teams アクティビティパッケージはプレビュー公開となっています。そのため、今後仕様が変更される可能性があることご了承ください。
Microsoft Teams アクティビティ パッケージ (プレビュー) について
プロジェクトへの追加方法
v5.0.6 のリリースに伴い、Windows レガシ版の提供が過去バージョンも含めて廃止されたようです。 Integration Service 版 Microsoft Teams アクティビティパッケージを利用いただくには Windows またはクロスプラットフォームをご利用いただく必要があります。
- 「パッケージを管理」から Integration Service 版 Microsoft Teams アクティビティパッケージを追加します。
- 「Microsoft Teams」が表示されたら、「インストール」、「保存」を押してプロジェクトに追加します。
* 最新バージョンの v5.0.5-preview では任意項目であるはずの File Resource
が必須項目となっている不具合があります。
* そのため、ひとつ前のバージョン v4.0.4-preview をご利用ください。本事象はWindowsとクロスプラットフォームのみで発生しており、Windowsレガシには影響がありません。
v5.0.6 では上記不具合が解消されていること確認しました。
ファイル添付の方法
Teams アクティビティでは以下の2つの方法でメッセージにファイルを添付することができます。以下順番に説明します。
方法1 . 画像
プロパティを使った方法
方法2 . プロパティ 添付ファイル - ID
、コンテンツ URL
、添付ファイルのリソース名
を使った方法
方法1 画像
プロパティを使った方法
- プロパティ名の通りですが画像ファイルのみ添付することができます。
-
UiPath.Platform.ResourceHandling.IResource
型のインタフェースを実装したクラスの変数を設定することで画像ファイル付きのメッセージを送信することができます。 -
IResource
型インタフェースを実装するクラスは、UiPath が提供する OneDrive や SharePoint、Google ドライブ、Dropbox などのクラウドストレージ用アクティビティから取得できます。 - 今回は「UiPath.MicrosoftOffice365.Activities」アクティビティパッケージを利用して SharePoint に格納された画像ファイルを添付してみます。
v5.0.6 ではローカルの画像ファイルを Teams メッセージに添付できるようになりました。
注意事項その1(UiPath.MicrosoftOffice365.Activities について)
- 「UiPath.MicrosoftOffice365.Activities」では、「Office 365」と「Office 365 - クラシック」の2種類のアクティビティで SharePoint 及び OneDrive にあるファイルの操作をすることができます。
- 「ファイル/フォルダーを取得」等のアクティビティが「Office 365」と「Office 365 - クラシック」両方から提供されていますが、
IResource
型を実装したクラスの変数が取得できるのは 「Office 365」で提供されているアクティビティのみ となります。
方法2. プロパティ 添付ファイル - ID
、コンテンツ URL
、添付ファイルのリソース名
を使った方法
- こちらの方法では、
IResources
型のファイル変数を指定する代わりに、SharePoint または OneDrive に格納されているファイルの ID、URL 及び名前を指定することでメッセージにファイルを添付します。 - 方法1では画像ファイルのみ指定できましたが、方法2ではファイル形式に制限はなく指定することが出来ます。
何の値をプロパティに設定すればよいのか?
公式ドキュメントのチャンネル メッセージを送信アクティビティの説明を見ると次のように書かれています。コンテンツ URL と添付ファイルのリソース名は何となくわかりますが、添付ファイルIDが何者なのかこれだけではわからないですね。
- 添付ファイル ID - SharePoint アセットの ID です。 このフィールドは任意です。SharePoint コンテンツをアップロードする場合のみ必須です。
- コンテンツ URL - SharePoint または DriveItem の URL です。 このフィールドは任意です。SharePoint コンテンツをアップロードする場合のみ必須です。
- 添付ファイルのリソース名 - SharePoint アセットの名前です。 このフィールドは任意です。SharePoint アセットをアップロードする場合のみ必須です。
Microsoft Graph APIのドキュメントを確認してみる
- テクニカル リファレンスによると、「チャンネル メッセージを送信」アクティビティは Microsoft Graph API である「チャンネルまたはチャットでチャットメッセージを送信する - POST」を利用していることが書かれています。
- 何かヒントがあるかもしれないので、API のドキュメントを確認してみましょう。
例 4: 添付ファイルを含むメッセージを送信するを見ると以下の記述があり、添付ファイルの ID は driveItem の ETag の GUID であることがわかりました。
メモ: ファイルは既に SharePoint に存在している必要があります。 ファイルのプロパティを見つけるには、ファイルの driveItem を取得します。 たとえば、/drives/{id}/items/{id}です。 添付ファイル ID は driveItem の eTag の GUID、添付ファイル contentURL は driveItem のフォルダーの webUrl と driveItem の名前、添付ファイル名は driveItem の名前です。
実装してみる
注意事項その3
- 方法1では、「UiPath.MicrosoftOffice365.Activities」の「Office 365」を利用する必要がありましたが、「Office 365」配下のアクティビティの出力からはETagを取得する手段がないため方法2では、「Office 365 - クラシック」のアクティビティを利用する必要があります。
- 方法1と同様に、「ファイル/フォルダーを取得」アクティビティで SharePoint または OneDrive に格納されているファイルを取得します。
- ファイルの取得ができたら、変数の以下のプロパティを Teams の「チャンネル メッセージを送信」アクティビティに設定していきます。
プロパティ | 設定する値 |
---|---|
添付ファイル - ID |
file.ETag (※1) |
コンテンツ URL |
file.WebUrl + "/" + file.Name
|
添付ファイルのリソース名 | file.Name |
※1 file.ETag の値は、{0A1CE4AF-2871-47CF-8A75-B784737525C2},5
の形式となっており、鍵括弧内の値(この例では 0A1CE4AF-2871-47CF-8A75-B784737525C2
)を抽出して Attachement ID
に設定する必要があります。正規表現 (?<=\{)[^\(\)]+(?=\})
を利用することで値を抽出することが出来ます。
おわりに
- 本記事で紹介した内容が皆様のお役に立てれば幸いです。