Top

Wzmiankowanie w Microsoft Teams poprzez Power Automate


Temat ten był stale podnoszony przez wiele osób, z którymi rozmawiałem. Jak można wzmiankować o użytkownika w Microsoft Teams, w wiadomościach wysyłanych z Power Automate? Wydawało się, że ten problem nigdy nie był do rozwiązania przez nas: Power Users aż do momentu, gdy kilka dni temu Microsoft udostępnił nową akcję dla Microsoft Teams w Power Automate pod nazwą: „Get @mention token for a user”. Akcja tam jest tym ciekawsza, że pozwala na wzmiankowanie również w korzystając z Adaptive Cards!

Zobacz to w akcji

Jak wzmiankować w Teams za pomocą Power Automate

Od kilku dni mamy nową akcję w grupie akcji Teams, w Power Automate o nazwie „Get @mention token for a user”. Na początku, kiedy ją przetestowałem zauważyłem, że po prostu zwraca ciąg znaków: „<at>user e-mail</at>„. Pomyślałem – to nic specjalnego! Jednak potem, podczas krótkiej rozmowy z Haryshem Menon z grupy produktowej dowiedziałem się, że chociaż ta akcja wydaje się niespecjalnie skomplikowana, umieszczenie jej wyniku w wiadomości lub karcie adaptacyjnej jest następnie obsługiwane wewnętrznie przez Flow Bota, a następnie wszystkie wymagane encje wzmiankowania są dodawane, dzięki czemu całość magicznie działa.

Jeśli spróbujesz ręcznie wpisać ten ciąg znaków (<at>) do kodu karty adaptacyjnej, nie zadziała to.

Jak możemy tego użyć?

Najpierw musisz posiadać e-mail użytkownika, którego chcesz wzmiankować. To jest wartość wejściowa dla akcji.

Następnie użyj wyników w jednej z poniższych akcji:

  • Post a message (V3)
  • Post a reply to a message (V2)
  • Post your own adaptive card as the Flow bot to a channel
  • Post an Adaptive Card to a Teams channel and wait for a response

Nie zadziała z akcjami wysyłającymi wiadomości / karty do użytkownika.

Teraz wynik działania akcji umieść w treści wiadomości jednej ze wspieranych akcji.

Ważne! Musisz użyć adresu e-mail użytkownika, którego chcesz wzmiankować. Nie identyfikatora AAD.

Ważne! Akcja nie obsługuje wzmianki o kanałach. W tej chwili wspiera tylko wzmiankowanie użytkowników.

A o to i wynik!

Ważne! Wzmiankowanie w kartach adaptacyjnych działa wyłącznie umieszczone w jednym z wymienionych niżej bloków tekstu: TextBlock, FactSet.

Alternatywy – czyli to, czego do tej pory próbowałem

tagi <at>user mail</at>

Pierwszą rzeczą, którą próbowałem, było po prostu umieszczenie <at>e-maila użytkownika</at> w wiadomości wysyłanej do Teams (akcja: Post a message (V3)). Zadziałało. Chociaż to nie pozwoliło mi na tworzenie ładnie wyglądających kart, tylko jedynie prostych wiadomości. Jeśli to CI wystarczy, pamiętaj, aby zmienić dane wejściowe w konfiguracji akcji na „code view”:

At-mention dla Adaptive Cards

Następnie znalazłem tę dokumentację dotyczącą kart adaptacyjnych z encją wzmianki: https://docs.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-format?tabs=adaptive-md%2Cconnector-html#sample-adaptive-card-with-a-mention. Próbowałem postępować zgodnie z podanym przykładem, jednak akcja po uruchomieniu zakończyła się błędem: „One or more mention entity could not be found in card text.”. Porzuciłem to podejście, ponieważ po prostu nie działało. Myślałem, że powinno wystarczyć dodać obiekt „msteams” z tabelą „entities”, ale … nie bez powodzenia 🙂

"body": [
      {
        "type": "TextBlock",
        "text": "Hi <at>John Doe</at>"
      }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.0",
    "msteams": {
      "entities": [
        {
          "type": "mention",
          "text": "<at>John Doe</at>",
          "mentioned": {
            "id": "29:123124124124",
            "name": "John Doe"
          }
        }
      ]
    }

Ponadto nadal nie odkryłem, czym jest identyfikator użytkownika Teams, o którym mowa w dokumentacji 😛

At-mention używając GraphAPI

Istnieje sposób, aby wspomnieć o użytkownikach korzystających z endpoint beta w GraphAPI: https://graph.microsoft.com/beta/teams/{TeamID}/channels/{ChannelID)/messages. Jednak, zgodnie z dokumentacją: https://docs.microsoft.com/en-us/graph/api/channel-post-messages?view=graph-rest-beta&tabs=http ta operacja jest możliwa tylko dla uprawnienień delegowanych.Jeśli Twoje konto ma włączone MFA, nie da się uzyskać tokena użytkownika za pomocą Power Automate. To podejście, opisane przez Vesa Nopanem tutaj: https://myteamsday.com/2019/03/05/sending-message-with-atmention-onto-a-channel-using-graphapi/ działa na przykład z aplikacji Postman, gdzie można się uwierzytelnić. Ale niestety dla mnie – nie ma sposobu na zautomatyzowanie go za pomocą Power Automate.

Aby to zadziałało, musimy osadzić następujące wyrażenie w treści POST:

{
  "body": {
    "contentType": "html",
    "content": "Hello World <at id=\"0\">USER E-MAIL</at>"
  },
  "mentions": [
    {
      "id": 0,
      "mentionText": "USER DISPLAYNAME",
      "mentioned": {
        "user": {
          "displayName": "USER DISPLAYNAME",
          "id": "USER AAD ID",
          "userIdentityType": "aadUser"
        }
      }
    }
  ]
}

At-mention używając akcji Invoke an HTTP request z Azure AD

To ostatnie podejście, którego próbowałem. Wymaga od nas aplikacji Azure AD z zakresem uprawnień ustawionym na wysyłanie wiadomości i użycia akcji premium „Invoke an HTTP request”. To podejście zostało opisane tutaj http://www.expiscornovus.com/2019/05/29/mention-a-channel-with-flow/ przez Dennisa.

Uwaga! Takie podejście wymaga akcji premium, a zatem płatnego planu Power Automate.

I to tyle o wzmiankach w Teams. Daj mi znać, jeśli masz jakieś pytania, publikując je poniżej. Dzięki!


Tomasz Poszytek

Cześć! Nazywam się Tomasz. Jestem ekspertem w dziedzinie automatyzacji procesów i budowaniu rozwiązań dla biznesu z użyciem Power Platform. Jestem Microsoft MVP i Nintex vTE.

Brak komentarzy

Wyślij komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.