2020

okt

2

Av

Att ta emot sms i FileMaker är en helt annan sak än att skicka sms från FileMaker. Skicka sms kan du göra med en lokal FileMaker-databas, ta emot sms kräver att databasen finns på en FileMaker Server, du behöver en webbserver och lite programmering i PHP, Javascript eller liknande. Dessutom måste FileMaker Server vara åtkomlig från internet.

För några månader (tiden går fort!) sedan visade jag hur du skickar sms med FileMaker och operatören 46elks. För att ta emot sms måste du också ha ett mobilnummer, operatören 46elks har även det. De har även funktionen att när ett sms tas emot till mobilnumret skickas en s.k. webhook, ett anrop till en webbadress, med information om avsändare och innehåll. Det är denna funktion som gör det möjligt att skapa en post i en FileMaker-databas för varje sms som tas emot. Det finns fler operatörer än 46elks som har denna funktion.

Med funktioner för att både skicka och ta emot sms kan du t.ex.:

  • skicka snabba enkäter till dina kunder, och få snabba svar direkt i FileMaker
  • ha en tjänst som svarar på frågor, s.k. bot (se exempel nedan)
  • konversera med dina kunder via sms, och ha fullständig historik lätt sökbar i en databas

Du behöver alltså följande:

  • FileMaker Server som är åtkomlig från internet
  • FileMaker Data API eller PHP påslaget i FileMaker Server
  • en databas i FileMaker Server med tabell och layout med fält för sms-mottagning samt ett konto med behörighet att användas för PHP eller Data API
  • en webbserver eller moln-funktion. Du kan använda FileMaker Servers inbyggda webbserver och en PHP-sida. I det här exemplet väljer jag istället en moln-funktion med Javascript och Data API, ungefär på samma sätt som i exemplet med Google Forms.
  • ett mobilnummer. I exemplet använder jag ett mobilnummer från operatören 46elks, som jag enkelt har skaffat via deras webbsajt. Om du väljer en annan operatör behöver du läsa i deras dokumentation om hur du tar emot sms, vilket antagligen är ganska likt.

Numera gör jag en hel del moln-funktioner för alla möjliga ändamål, allt från kommunikation mellan hårdvara och FileMaker, webbformulär, skicka och ta emot epost i HTML-format, PDF- och bildhantering, OCR till text, etc. Fördelen är att du inte behöver hålla reda på någon server, en moln-funktion körs utan server (i alla fall ingen som du behöver känna till) och dessutom är kostnaden låg. I många fall helt gratis.

Jag använder ramverket Serverless som gör det enkelt att välja mellan Amazon, Microsoft Azure, Google Cloud, IBM och några till för publicering av moln-funktionen. Ofta väljer jag Amazon, där 1 miljon anrop (eller 4000 sekunders körtid vilket brukar inträffa först) varje månad är utan kostnad.

Moln-funktioner skriver jag i programspråket Javascript med ramverket NodeJS. När en funktion skapas med Serverless får man med automatik en tom funktion, sedan är det bara att fylla på med lite Javascript-kod.

I exemplet tar moln-funktionen emot och tolkar informationen från ett inkommande sms för att sedan logga in i FileMaker med Data API, skapa en post i en tabell i databasen med sms-informationen och sedan logga ut. 46elks skickar information om avsändare och meddelande i en s.k. querystring. Många webbsidor använder metoden, och det kan t.ex. förenklat se ut så här:

from=0705339299&message=Hej från Mallverkstan

Det, tillsammans med lite mer information, skickas med ett POST-anrop från 46elks när ett meddelande kommer till mitt mobilnummer hos 46elks.

Fördelen med NodeJS är att det finns oändligt många ”plugins”, eller programsnuttar, som enkelt kan installeras och användas. De ”plugins” jag behöver för denna moln-funktion är ”querystring” (tolkar det som kommer till funktionen från 46elks), ”base64” (för att skapa inloggningskod till FileMaker Data API) och ”node-fetch” (som används för att skicka information till FileMaker).

Först tolkas det som skickas från 46elks:

const params = querystring.parse(event.body);

Sedan hämtar jag de olika delarna, de 3 viktigaste är dessa (men det finns några till) samtidigt som de konverteras:

const data = {
  direction: params['direction'],
  from: decodeURIComponent (params['from']),
  message: decodeURIComponent (params['message'])
};

Jag kontrollerar att det är ett inkommande sms och loggar sedan in i FileMaker med Data API, skapar en post med avsändare och meddelande för att till slut logga ut från FileMaker.

if (data.direction == 'incoming') {
  const token = await login(fmConnection);
  const result = await createRecord (fmConnection,data,token);
  const out = await logout (fmConnection,token);
}

Fullständig kod finns på Github.

Moln-funktionen får automatiskt en webbadress av Amazon när den skapas första gången. Denna webbadress anges i administrationssidan för mobilnumret från 46elks. När ett sms skickas till mobilnumret anropas webbadressen tillsammans med information om avsändare och meddelande.

Prova att skicka sms till vår pris-tjänst!

Som exempel har jag gjort en enkel sms-tjänst. Du skickar det antal FileMaker-licenser du behöver, du får ett sms tillbaka med vad de kostar. Prova gärna att skicka sms till 076-686 84 46! (OBS! Begränsat till 2 frågor per mobilnummer.)

Det sms du skickar tas emot av moln-funktionen, som skapar en post i en FileMaker-databas. I samma databas finns uppgifter om vad FileMaker kostar, ett manus letar fram kostnaden och skickar ett sms tillbaka till dig

Skickar du 8 till 076-686 84 46 får du som svar ”8 st FileMaker-licenser: hyr för 12480 kr/år, eller köp för 37440 kr plus 7488 kr/år för kommande år. Ring 046-235250 för mer information!” (OBS! Numret uppdaterat 5 okt.)

Skriv en kommentar

  • (will not be published)

Läs också: