Adaptive CardsをOutlookに対して送ってみる(失敗)

さて、先ほどこのようなエントリを書きました。

Teamsで完結する簡単なアンケートをAdaptive Cardsで作成する

実は当初「回答率重視するならメールの方がよくね?」と思って、Outlookでの実装を検討しましたが、挫折しました。その経緯をまとめます。

注意点1. OutlookだとPower Automateに組み込みのアクションがない

ただ、これは難しいことはなく、Adaptive Cardsの生のJSONを作成して、OutlookのBody部分に送るだけです。

OutlookでもAdaptive Cardsを送りたい人のために – MoreBeerMorePower

注意点2. OutlookだとAdaptive Cardsからの回答を受領するのに一工夫必要

Teamsでは、気軽にメンバーに質問を送って回答を受領できていましたが、これはAdaptive Cardsの"Action.Submit"という機能を利用したもの。これは簡単に言うと、メンバーに質問を投げ、回答を待ち受けるプロセスもセットになっているものなので、待ち受けの事をあまり考えなくていい(その代わり、同期的な処理になるので、Power Automateで並列実行処理をONにしなければならない)のですが、Outlookではこれが使えず、代わりにAction.Httpを使う必要がある。

Action.HttpはAction.Submitと違ってメンバーに質問を投げっぱなして、回答は別プロセスで受け取るという非同期処理となります。

メンバーが回答するまで待ち受け処理が走り続けるAction.Submitと違って並列実行的な事は考えなくてもいいですが、その代わりに待ち受けサーバー的なものを用意しないといけません。もちろん、IaaSではなくAzure functions等のFaaSでいいのですが、多少面倒ですね。

ちなみにOutlookのAdaptive Cards実装は、Microsoftが定めている標準的なAdaptive Cards実装とは多少ズレがあるそうです。ここらへん、Githubで質問したら開発者の方が丁寧に答えてくれました。メモ→Please add not that Outlook(desktop client) is NOT full support actionable message. · Issue #880 · OfficeDev/outlook-dev-docs

注意点3. クライアントによってはAdaptive Cards利用できない?

注意点っつーかこれが原因で挫折しました。

なぜかOutlook(Desktop)ではAdaptive Cardsが表示できず、

Outlook for iOS/Outlook Web AppではOK。

Thunder Birdでメールの中身をのぞいてみると、ちゃんとデータは入っているっぽい…。

そこで、別の人に対して送ってみると、なんとその人はは全てのクライアントで表示できない…。状況をまとめると以下。

送信者 受信者 送信ツール 受信ツール Adaptive Cards表示
Power Automate Outlook(Desktop) ×表示されない
Power Automate Outlook for iOS ○表示される
Power Automate Outlook Web App ○表示される
協力者 Power Automate Outlook(Desktop) ×表示されない
協力者 Power Automate Outlook for iOS ×表示されない
協力者 Power Automate Outlook Web App ×表示されない

この事象、よく分かってないです。

受信ツールによって表示される、されないが変わるのであれば、所定のツールを使えば解決だが、協力者の状況を見る限りそうではなさそうだし…。まさか、自分自身に送ったAdaptive Cardsしか動作しない、ということはないだろうし…。あと、アンケートの回答率を上げる、という目的であれば「特定の受信ツールでしかうまくいかない」のは良くないですね。

まだAdaptive Cardsを勉強し始めたばかりだし、検証も足りていない。GraphAPIでメールを送ったりと、送信ツールを変えれば解決するかもしれないので、もう少し悩んでみます。

Posted by tera