前回の投稿に続き、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の場合にはちょっと注意が必要ですよという結果でした。