Tovejs SMS-kommunikation med Wolfram|Alpha

Tilbage til oversigten
Tovejs SMS-kommunikation med Wolfram|Alpha

I dette blogindlæg vil vi præsentere et lille API-projekt, der giver os mulighed for at modtage et spørgsmål via SMS, anmode Wolfram Alpha om et svar og derefter svare via SMS. Wolfram Alpha er en onlinetjeneste, der besvarer forespørgsler direkte ved at beregne svaret ud fra eksterne data.

Nedenstående er en kort guide til, hvordan man opsætter det selv, hvor vi gennemgår de overordnede trin undervejs, så du får en bedre forståelse af den anvendte teknologi. Hvis du gerne vil afprøve det, og du har et dansk mobilabonnement, så prøv at sende en besked med keywordet wolfram efterfulgt af dit spørgsmål til 1204. Med andre ord: Send f.eks. “Wolfram temperatur København” til 1204.

Vi kan ikke garantere for tilgængeligheden af ​​denne Wolfram Alpha demonstration, da der er en begrænsning på antallet af API-anmodninger osv. Du kan dog nemt lave din egen opsætning ud fra guiden nedenfor.

Bemærk, at Wolfram Alpha er nødt til at tænke over din forespørgsel, så det kan nogle gange tage et stykke tid for den at vende tilbage.

Forudsætninger

Til denne opsætning har du brug for et Wolfram Alpha APP ID. Du kan få dette gratis ved at oprette en konto på Wolfram Alpha.

Du har også brug for en GatewayAPI-konto, som du kan oprette gratis her. For at modtage en SMS skal du dog have en shortcode og/eller keyword, som brugeren sender SMS’en til. Shortcodes og keywords udlejes til dig specifikt, så når vi modtager en SMS på den specifikke shortcode med det specifikke keyword, ved vi, hvor vi skal levere SMS beskeden.

Du kan enten leje et keyword på en delt shortcode, såsom 1204, eller du kan leje en hel shortcode, f.eks. 4560575797. Din konto er også på forhånd konfigureret med et keyword til testformål.

Kontakt os via live chatten, hvis du har brug for en shortcode og/eller et keyword.

Sig hej til ngrok

For at kunne levere SMS-beskeder til din tjeneste skal din service/webhook gøres tilgængelig på nettet, så vi kan kontakte den, når en ny SMS kommer.

Normalt betyder dette, at du skal deploy’e din kode til en webserver et givent sted, hvilket bevirker, at test pludselig kan tage en evighed. Dog gør den gratis service, ngrok, dette virkelig nemt og hurtigt. Kort fortalt, giver ngrok dig et HTTP(S) endpoint på nettet, hvor alle anmodninger videresendes til din lokale server, hvilket gør webhook-udviklingen betydeligt nemmere.

I dette eksempel vil vi også anvende Flask, et Python-baseret micro-framework, som er meget velegnet til denne opgave. Jeg håber, at kodeprøverne nedenfor er lette at følge, selv for ikke-Python-udviklere. Som altid, hvis du har spørgsmål, kan du kontakte os via live chat eller support@gatewayapi.com.

Download og pak ngrok ud.

Installer deps med:

Åbn wolfram.py i din favorit-editor, og indsæt følgende:

På kommandolinjen, hvor du pakker ud ngrok skal du køre: ./ngrok http 5000.Du får derefter en ngrok.io https url.

Kør env FLASK_APP=wolfram.py flask runDette vil starte en Flask server på localhost port 5000. Ngrok videresender anmodninger til Flask. Bekræft dette ved at besøge ngrok.io URL i din webbrowser. Du skal gerne få en side frem, hvor der står: “Send mig en SMS”.

Modtagelse af SMS-beskeder

Den ngrok URL, du fik tidligere, skal konfigureres som en webhook, og et keyword skal tildeles webhook’en, så vi ved, at vi skal kontakte den, når du modtager en SMS.

Gå ind på dit GatewayAPI dashboard, gå til Indstillinger -> Webhooks, tilføj en ny webhook og indtast ngrok URL’en i “Web hook URL” og klik på ”Gem”. Åbn derefter fanen ”Keyword”, og tildel et keyword til webhook’en. GatewayAPI kontakter nu din webhook, når der kommer en SMS på dit keyword på din short code.

Nu skal vi udvide Flask API med en route, der modtager SMS-beskederne.

Nu får vi en variabel med navnet ’query’, som indeholder alt, hvad brugeren skrev efter selve keywordet. Dette vil være vores input til Wolfram Alpha.

Send forespørgsler til Wolfram Alpha

Brugerens forespørgsel bliver nu håndteret af Wolfram Alpha, og svar bliver formateret. Udskift “APP-ID-GOES-HERE” med dit APP-ID fra Wolfram Alpha.

Send svaret

Det eneste, der er tilbage nu, er at sende svaret fra Wolfram Alpha tilbage til brugeren via SMS. Det er let at sende en SMS via GatewayAPI. På vores dashboard kan du finde forudkonfigurerede kodeeksempler til de fleste kodesprog. Vælg Python-eksemplet, og copy-paste din API-nøgle samt secret.

GatewayAPI vil fortsætte med at pinge din webhook, indtil du sender et 2xx-svar for at fortælle os, at SMS beskeden blev modtaget. Så husk at inkludere returnering af et svar til sidst.

Inspiration

Wolfram Alpha indeholder mange gode eksempler på, hvilke spørgsmål man kan stille, herunder emner som web og computerevideospil og kultur og medier.

Komplet kodeeksempel

Samme som ovenfor, men her inkluderet i sin fulde længde.