前回の投稿に続き、Office 365 GroupsコネクターのHTTP要求アクションについて調べた結果の紹介です。
前回はGETした結果をPower Appsでどう処理するかでしたが、今回はPOSTで何かデータを送る場合の手続きについて、Power Apps単体でやろうと思ったときの注意事項を書きます。
例として、Teamsにチャットメッセージを送る処理を取り上げます。
この場合、URLはhttps://graph.microsoft.com/v1.0/teams/{team-id}/channels/{channel-id}/messages の形式で、メソッドがPOST、リクエストの本文には
{ "body": { "content": "Hello World" } }
このようなJSONを入れます。Power Appsでこれを実現するために Office365Groups.HttpRequestを使うと、ナイーブには以下のように書かれるかと思います。

Office365Groups.HttpRequest(
"https://graph.microsoft.com/v1.0/teams/{team-id}/channels/{channel-id}/messages",
"POST",
"{
""body"": {
""content"": ""Test message. "",
""contentType"": ""html""
}
}",
{ContentType: "application/json"}
)
実際このようにアプリを作って動作させると、以下のようなエラー「リクエストの本文が空ですよ」と出てきます。

アクションの3つ目のパラメータが不適切なようです。
じゃあ何を渡せばいいのか。こんな時は意図的にエラーを発生させて、要求されるデータ型を見てあげます。

今回の場合はBlobを要求されています。
ここまででわかるのは、
Power Apps で Office365Groups.HttpRequest を利用してデータをPOSTする場合、要求本文はファイルで渡す必要がある
ということです。
Power Appsでファイルを渡すとすると、埋め込みのファイルか、ファイルアップロード用に添付ファイルコントロールを使うくらいです。実際ためしてみると、以下のように添付ファイルのコントロールを使ってファイルの中に必要なJSONを書けば、APIを実行できることがわかりました。



ということで、Power Apps から Office365Groups.HttpRequestを使えば何でもできるように感じるかもしれませんが!POSTの場合にはちょっと注意が必要ですよという結果でした。