Organisaatiolla on tyypillisesti mallipohja sähköpostien allekirjoitukselle.

Yhtä tyypillistä on, ettei kukaan tiedä mistä kyseinen mallipohja löytyy. Käytännössä allekirjoitus kopioidaan jonkun kollegan sähköpostista. Sen, jonka allekirjoitus näyttää omaan silmään tyylikkäimmältä.

Lopputuloksena sähköpostien allekirjoitukset ovat keskenään hieman eri näköisiä.

Minulta on kysytty, voisiko tätä jotenkin helpottaa Power Platformin työkaluilla.

Voisi.

Tehdään siis tällä kertaa Power App, jolla ylläpidetään organisaation virallisia allekirjoitusmalleja. Samalla sovelluksella käyttäjät voivat ladata allekirjoituksen (omilla tiedoillaan täytettynä) itselleen.

Lisäksi tarjotaan käyttäjille Power Virtual Agent, jolta voi pyytää tuoreimman allekirjoitusmallin. Jälleen omilla tiedoilla täytettynä.

Selvää Dataverse for Teams kamaa. Aloitetaan!

Tietojen tallennuspaikka

Luodaan ratkaisun kotipaikkana toimivaan tiimiin taulu, jonne allekirjoituspohjat tallennetaan (EmailSignatureTemplate). Taulussa on kolme saraketta

  • Mallipohjan nimi (Name)
  • Onko ko mallipohja käytössä (Is in use)
  • Varsinainen mallipohja html-muodossa (SignatureTemplate)

Allekirjoituspohjien ylläpito (Power Apps)

Seuraavaksi luodaan Teamsiin uusi Power App (Power Apps -> Create an app).

Tiimiksi valitaan sama, mihin juuri loimme uuden taulun.

Power Apps luo meille yhden näytön mallisovelluksen. Vaihdetaan näytön keskeltä (Connect to Data) klikkaamalla lomakkeen tietolähde oikeaksi (EmailSignatureTeamplates).

Kas näin.

Tämän jälkeen vaihdetaan vasemman laidan galleria osoittamaan samaan tietolähteeseen.

Näin meillä on valmiina näyttö, jolla ylläpidetään erilaisia allekirjoitusmallipohjia!

Muokataan näyttöä palvelemaan tarkoitustamme hieman paremmin.

Allekirjoitusmallit tallennetaan html-muodossa. Käyttäjäkohtaiset tiedot (nimi, puhelinnumero, sähköposti, titteli…) merkitään malleihin kaarisulkujen sisään (esim. {displayname}, {email} jne).

Oman allekirjoituksen lataaminen (Power Apps)

Lisätään sovellukseen uusi tyhjä näyttö ja siihen seuraavat kontrollit

  • Näytön otsikko
  • Pudotusvalikko (combo box), allekirjoitusmallin valitsemiseksi.
  • Tekstikentät käyttäjän tittelille ja puhelinnumerolle

Pudotusvalikon arvojoukkona on kaikki käytössä olevat mallipohjat.

Items: Filter(EmailSignatureTemplates, 'Is in use' = 'Is in use (EmailSignatureTemplates)'.Yes) 

Käyttäjän titteli haetaan hänen profiilistaan.

Text: Office365Users.MyProfileV2().jobTitle 

Puhelinnumero löytyy vastaavalla tavalla.

Lisätään näytölle seuraavaksi säilö ((1) vertical container) ja sijoitetaan se sopivaan kohtaan. Säilön sisään sijoitetaan otsikko (2) sekä html-kenttä ((3) html text).

Html-kentän korkeus on joustava (Flexible hight = On).

Kentän sisältönä on valittu mallipohja (cmbSignatureTemplate.Selected.SignatureTemplate) käyttäjän tiedoilla täytettynä.

Tähän tyyliin.

Substitute(
  Substitute(
    Substitute(
      Substitute(
        cmbSignatureTemplate.Selected.SignatureTemplate,
        "{Mail}",
        Office365Users.MyProfileV2().mail
      ),
      "{DisplayName}",
      Office365Users.MyProfileV2().displayName
    ),
    "{JobTitle}",
    inpJobTitle.Value
  ),
  "{Phone}",
  inpPhone.Value
 )
)

Allekirjoituspohjan lähetys

Miten toimitamme käyttäjälle valmiin pohjan? Hän tarvitsee tiedoston, jonka voi kopioida työasemalla oikeaan kansioon.

Helpointa tämä on tehdä Flow’lla, joka käynnistetään Power Appsista painikkeella. Flow saa parametrina muodostettavan tiedoston nimen sekä sen sisällön.

Flow koostuu seuraavista osista

  • Haetaan flow’n käynnistäneen käyttäjän profiili (tarvitsemme käyttäjän nimen)
  • Luodaan (käyttäjän omaan OneDriveen) tiedosto
  • Lähetetään tiedosto käyttäjälle sähköpostin liitteenä
  • Poistetaan luotu tiedosto OneDrivesta

Painikkeen painamisen jälkeen käyttäjä saa sähköpostin, jonka liitteenä on valmis allekirjoitustiedosto.

Ylläpidon rajaaminen tiimin omistajille

Sovelluksessa on kaksi näyttöä.

  1. Allekirjoituksen muodostaminen valitusta pohjasta
  2. Allekirjoituspohjien ylläpito

Ylläpitonäytölle on pääsy vain tiimin omistajilla. Omistajat ovat tiimiä vastaavan Dataverse for Teams -ympäristön järjestelmänvalvojia.

Selvitetään Power Appsin käynnistyksen yhteydessä (App OnStart), onko sovelluksen käyttäjällä tässä ympäristössä System Administrator käyttöoikeusrooli.

Mikäli on, asetetaan tämä tieto muuttujaan (varUserIsAdmin).

ClearCollect(colSysAdmis, LookUp('Security Roles', Name ="System Administrator").Users.'Primary Email');
Set(varUserIsAdmin,!IsBlank(LookUp(colSysAdmis, ThisRecord.'Primary Email' = User().Email)))

Näin voimme lisätä aloitusnäytölle ikonin, jolla navigoidaan ylläpitonäytölle. Ikoni näkyy ainoastaan tiimin omistajille.

Oman allekirjoituksen pyytäminen (Power Virtual Agents)

Dataverse for Teams tarjoaa käyttöömme kätevän Power Virtual Agentin. Tarjotaankin käyttäjille mahdollisuus pyytää oma allekirjoitustiedosto suoraan chatbotilta.

Siirrytään Teamsin sisällä Power Apps -sovellukseen ja luodan uusi botti (New -> Chatbot).

Nimetään se ja valitaan botin kieli (suomi tulossa tänävuonna).

Lisätään toiminnalllisuutta (allekirjoituksen toimittaminen) vastaava aihe (topic),

Sekä luodulle aiheelle muutama esimerkkilause (phrase), jonka tapaisilla keskustelunavauksilla botti siirtyy tähän aiheeseen.

Ja vihdoin päästään määrittelemään botin toiminnallisuutta (Go to authoring canvas) .

Botti muodostaa allekirjoitustiedoston flow’n avulla. Luodaan uusi flow (plus-symboli -> call an action .> Create a flow).

Valitaan vaihtoehdoista flow, joka käynnistyy Power Virtual Agentista käsin, sekä palauttaa sille paluuarvon.

Lisätään sisääntulevaksi parametriksi (input parameter) käyttäjän id (userid).

Ensimmäisenä haetaan käyttäjän profiili, sekä virallinen allekirjoituspohja.

Tämän jälkeen luodaan SharePoint-dokumenttikirjastoon allekirjoitustiedosto käyttäjän tiedoilla täydennettynä. Tiedot täydennetään pohjaan replace-toiminnolla.

replace(outputs('Get_a_row_by_ID')?['body/crb24_signaturetemplate'],'{DisplayName}',outputs('Get_user_profile_(V2)')?['body/displayName'])

Joudut tekemään näitä usean sisäkkäin. Samaan tapaan kuin Power Apps -esimerkissä juuri teimme.

Lopuksi palautetaan Power Virtual Agentille linkki muodostettuun tiedostoon.

Emme halua jättää vanhoja allekirjoitustiedostoja dokumenttikirjastoon. Lisätäänkin flow’n loppuun rinnakkainen haara, jossa muodostettu tiedosto poistetaan tunnin kuluttua.

Palataan chatbottiimme. Lisätään sen alkuun toiminnoksi (Call an action) juuri tekemämme flow.

Määritellään flow’n parametrin arvoksi bottia käyttävän käyttäjän id (bot.UserId). Flow’n suorituksen jälkeen näytetään käyttäjälle linkki muodostettuun allekirjoitustiedostoon sekä ohjeisiin sen käyttöönottamiseksi.

Botti tulee vielä julkaista (Publish), jotta muutkin voist käyttää sitä.

Valmis botti näyttää tältä.

Yhteenveto

Ratkaisusta tuli varsin näppärä. Muttei se vielä täysin valmis ole. Meille kovin tutut erikoismerkit aiheuttavat ongelmia. Ne tulee korvata (ä -> &auml jne), jotta allekirjoitus toimii.

Sovelluksen voisi myös virittää tukemaan Teamsin darkmodea.

Mutta mennään ensihätään tällä.