Azuren Logic Apps: pelastuspuhelukoneisto

Joillain toimialoilla (teleoperaattorit, sähkönmyynti) on mahdollista, että asiakkaalla on tietty ”katuma-aika” ennen kuin sopimus siirtyy toiselle toimijalle. Tänä aikana on tietyissä olosuhteissa mahdollista tarjota asiakkaalle erikoistarjousta, jolla tämä jää vielä asiakkaaksi. Tällaista reagoivaa kampanjaa voisi kutsua ”pelastuspuheluksi”.

Onko tällaisten kampanjan rakentaminen kallista ja vaatiiko se runsaasti ICT – resursseja? Ei välttämättä, tässä kirjoituksessa esitetään esimerkki miten tällaisen prosessin voisi rakentaa kustannustehokkaasti.

Azuren Logic Apps on Microsoftin pilvipalvelun Azuren palvelu erilaisten integraatioiden tekemisen, työnkulkujen käynnistämisen ja liiketoimintaprosessien suorittamisen tarpeisiin. Millaisia mahdollisuuksia Logic Apps sitten tarjoaa ja millaista on kehittäminen sillä edellä kuvatun liiketoimintaprosessin tapauksessa?

Työnkulku vastaaotetusta sanomasta OK – kuittaukseen

Työnkulku käynnistyy vastaanotetusta sanomasta, sen jälkeen sanoma käsitellään ja päätellään, mikä on paras kontaktointitapa. Kontaktointitavan perusteella viesti lähetään joko SMS – gateway – palvelun kautta tai sähköpostina. Lopuksi prosessi lähettää kuittaussanoman.

Azure Logic Appsin luominen ARM – templaatilla

Logic Appsin voi luoda hyvin nopeasti portaalin käyttöliittymästä käsin aiemman esimerkkini mukaisesti, mutta kun prosessia toistetaan niin tietyt perusasetukset olisi helpompi luoda pohjalle käyttäen Azure Resource Manager – templaatteja sekä esimerkiksi Powershelliä.

Alla on JSON – muodossa olevat pohjat ARM – templaatista sekä siihen liittyvästä parametritiedostosta, alussa workflow – definition on tyhjä, se luodaan vasta portaalin puolella.

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
    "logicAppName": {
      "type": "string"
    },
    "logicAppLocation": {
      "type": "string"
    }
   },
   "variables": {},
   "resources": [
      {
         "name": "[parameters('LogicAppName')]",
         "type": "Microsoft.Logic/workflows",
         "location": "[parameters('LogicAppLocation')]",
         "tags": {
            "displayName": "LogicApp"
         },
         "apiVersion": "2016-06-01",
         "properties": {
            "definition": {
               "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#"  
            },
            "parameters": {
            },
            "accessControl": {
               "triggers": {
                  "allowedCallerIpAddresses": [
                     {
                        "addressRange": "x.x.x.x-y.y.y.y"
                     }
                  ]
               },
               "actions": {
                  "allowedCallerIpAddresses": []
               }
            },
            "endpointsConfiguration": {}
         }
      }
   ],
   "outputs": {}
}

Parametritiedosto sisältää tietyt kiinteät arvot, muuten parametrisointeja tehdään myös .ps1 – skriptissä.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "logicAppName": {
      "value": "Rescue_Call"
    },
	"logicAppLocation": {
	  "value":  "northeurope"
	}
  }
}

Azureen resurssit näiden perusteella luova .ps1 – skripti on alla.

param ($accountName,$rgName)


Connect-AzAccount

Get-AzSubscription -SubscriptionName $accountName | Set-AzContext -Name "Context" -Force

New-AzResourceGroupDeployment -ResourceGroupName $rgName -TemplateFile ".\app_rescue.json" -TemplateParameterFile ".\app_rescue.parameters.json"

Edellinen skripti käynnistetään kutsumalla skriptiä määritellyin parametrein, jotka tässä tapauksessa ovat käytettävä resurssiryhmä sekä Azure – tilauksen nimi. ARM – templaattien, Powershell – skriptien ja muiden tarvittavien resurssien luomiseen Visual Studio Code on riittävän hyvä, sillä voidaan helposti toteuttaa nämä ja integraatio Azure DevOps – palvelussa tai GitHubissa olevaan Git – repoon on toimiva.

Työnkulun sisältö

Työnkulun käynnistystapahtumaksi valittiin vastaanotettu sanoma, seuraavaksi sanoma käsitellään ja päätellään mikä olisi paras kontaktointitapa.

Jos kontaktointitapa on sähköposti niin sanoma menee sähköpostina vastaanottajalle, muussa tapauksessa käytetään tekstiviestipalvelua. Tässä esimerkissä sähköpostipalvelu on Outlook, käytännössä kuitenkin joku Sendgridin tai vastaavan kaltainen palvelu olisi välttämätön. Kirjoitin aiemmin esimerkin siitä, miten Sendgrid – palvelun avulla voidaan personoida sähköposteja.

SMS – gatewayna toimii Twilio, johon on mahdollista saada kokeilutunnukset sen rajapinnan hyödyntämistä varten. Twiliota varten on Logic Appsissa oma connector, joten prosessin konfigurointi ei vie paljoa aikaa.

Logic Appsin testaus

Testasin prosessin toimivuutta käyttämällä Postmania, vaaditun sanoman muodostaminen on helppoa ja tulokset näkyvät välittömästi.

Kun sanomaa muuttaa lähetystavan suhteen niin puhelimeen tulee viesti Twilio – palvelusta.

Kuittaussanoma kertoo millä lähetystavalla viesti on laitettu eteenpäin.

Kuitaussanoma – 200 OK

ARM – templaatissa oli myös määritelty se IP – avaruus, josta prosessin käynnistävä sanoma voi tulla. Jos IP on eri, niin tulee alla oleva viesti.

Virheviesti jos lähettävä palvelin ei ole sallitussa IP – joukossa

Postmania on suhteellisen helppo käyttää tällaisten rajapintapalveluiden yksittäisten sanomien testaamiseen.

Kehitysmahdollisuudet

Monesti pelastuspuheluprosessissa olisi oltava mukana myös puhelu, sitä varten pitäisi olla rajapinta käytettävän call center – kumppanin järjestelmään taikka sitten joissain tapauksissa SFTP – pohjainen eräsiirto. Logic Appsiin pitää myös lisätä Azure AD – autentikointi ja hyödyntää Azuren API management palveluita.

Tutustu myös Ready Solutions Oy:n data engineering – palveluihin, meillä on erittäin vahvaa osaamista Azuren data-alustapalveluista!

Kirjoittajasta

Asko Kauppinen on Ready Solutions Oy:n konsultti ja osakas, jolla on vuosien kokemus erilaisista data-alustoista aina integraatioista analytiikan hyödyntämiseen asti.

Asko Kauppinen

Asko.kauppinen@readysolutions.fi

+358451374850