Microsoft TeamsのIncoming Webhookは (まだ) ユーザにメンションを通知できない

2022/02/04 追記

ユーザへのメンションが通知されるようになりました。次の記事で解説しています。

Microsoft TeamsのIncoming Webhookでメンションすると通知が行くようになった

結論

Incoming Webhookによってユーザにメンションを送ることは可能だが、アクティビティフィードとして通知されないため「色々なサービスのアクティビティをTeamsでユーザに通知したい」という目的は達成できなかった。

概要

コラボレーションプラットフォーム (いわゆるチャットツール) であるMicrosoft Teamsですが、他サービスと連携する「コネクタ」を追加することで、最新の情報を自動で投稿したり、Teamsからアクションを実行したりできます。
また、サービスそのもののコネクタがなくても、Incoming Webhookコネクタを追加すれば外部からメッセージをHTTPリクエストによって投稿することが可能です。

当社での活用例として、Zendesk Supportにチケットが届くとHTTPリクエストが発生してTeamsにメッセージが送られる、という仕組みを構築しました。
チケット一覧ページを頻繁にチェックする必要がなくなり、顧客からの問い合わせにも迅速に対応できます。

しかしこの仕組みには一つ問題がありました。
Zendesk Supportを導入した当初、TeamsのIncoming Webhookコネクタにはユーザへメンションを送る方法がなかったのです。
せっかくTeamsにメッセージを投稿しても、チケットの担当者に見てもらえないのでは片手落ちです。
一方、チケットのアクティビティが発生する度にチームメンバ全員が通知を受け取るのも好ましくありません。
私たちが本当に必要としていたのは、新しいチケットを受信したときはチーム全体に通知され、担当者が割り当てられた後はその人にだけ通知される仕組みでした。

(実のところ私たちは、若干回りくどい方法ではあるものの、Webhook経由で担当者に通知する仕組みを既に実現しています)

それから月日が経ち、ふとMicrosoftのユーザフォーラムを見ると、ユーザにメンションする機能が実装されたという書き込みがありました。
念願の機能ということで、実際に試してみました。

試したこと

公式ドキュメントによれば、アダプティブカードを使えばIncoming Webhookでもユーザにメンションできるようになったそうです。

User mention in Incoming Webhook with Adaptive Cards – Teams | Microsoft Docs

{
    "type": "message",
    "attachments": [
        {
        "contentType": "application/vnd.microsoft.card.adaptive",
        "content": {
            "type": "AdaptiveCard",
            "body": [
                {
                    "type": "TextBlock",
                    "text": "Hello <at>somaki</at>"
                }
            ],
            "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
            "version": "1.0",
            "msteams": {
                "entities": [
                    {
                        "type": "mention",
                        "text": "<at>somaki</at>",
                        "mentioned": {
                            "id": "somaki@example.com",
                            "name": "Yoshinari Somaki"
                        }
                    }
                ]
            }
        }
    }]
}

TeamsのチャネルにIncoming Webhookを設定して、生成されたリンクに上記のようなJSONをHTTPリクエストとしてPOSTすれば投稿完了です。

チャネルに投稿されたメッセージ

私の名前がしっかりメンション色になっており、カーソルを合わせるとプロフィールも表示されます。

ところが、本来メンション先のユーザに表示されるはずの赤いバナーアイコンが出ず、アクティビティフィードにも通知が来ません。


すっかり早とちりしてしまったのですが、先のリンクでもしっかりと説明されていました。

activity feed notification for Incoming Webhook with user mention will be available in the future release.
(ユーザーメンションを含む受信 Webhook のアクティビティ フィード通知は、今後のリリースで利用できます。)

このユーザメンション機能ですが、Teamsユーザおよび開発者からの要望が多く、MicrosoftのBacklogにも一年以上前から登録されています。(Webhook needs to support forced notification a la “@channel”, “@team”, “@person” – Welcome to UserVoice!)
今回試した方法のメンションは三ヵ月ほど前に実装された機能のようなので、Incoming Webhookによる通知が今後のリリースで利用できるようになることを強く望みます。


記事が面白かった方、参考になった方は、是非「イイね」お願いします👍

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA