Hur man integrerar ett API med Zapier (gästinlägg)
av Martin Harari Thuresson
Jag arbetar på 46elks som gör ett API för Telefonsamtal, SMS och MMS. Genom att ge tillgång till telefonnätet med ett API så kan flera olika verksamheter dra nytta av telefonnätet. Vanliga exempel på användning är påminnelse, om bokad tid, obetald räkning eller vidarekoppling av samtal till olika nummer beroende på vem som ringer.
46elks API är dock svårt för ickeprogrammerare att använda. Detta problem är gemensamt för alla APIer. Detta har grundarna av Zapier tagit fasta på. Zapier är en tjänst som kopplar samman API mellan olika tjänster, utan att användaren behöver kunna programmera. Genom att användare ställer in funktionen och kopplingen mellan alla APIer med hjälp av formulär i sitt Zapier konto, kan vem som helst använda API-tjänster.
Triggers och Actions
Zapier jobbar med vad de kallar triggers och actions, en trigger aktiverar en action. En Trigger som heter Ny Inkommande E-Post kan till exempel kopplas till en action som heter Send SMS, för att få ett SMS varje gång man får ett nytt e-postmeddelande.
Så här funkar Zapiers första inställningssteg för användaren. Här väljer användaren vilken trigger som ska kopplas till en viss action.
När man integrerar med Zapier så förstår man ganska snart att det inte är en 1:1 integration som gäller. Man måste tänka om så det passar in som en Trigger eller en Action.
När jag integrerade så betydde detta bland annat att endpoints som till exempel att lista nummer och att hämta historik blir en del av inställningsflödet för att skapa Triggers och Actions. Medan inkommande SMS blev en Trigger, osv.
Enhetlighet i språket
Zapier har väldigt detaljerade regler om hur man beskriver sin integration. Detta gör att alla integrationer är väldigt lika, på så sätt blir Zapier en enklare upplevelse för användarna eftersom allt är beskrivet på samma sätt. Jag tror att detta är en av de största styrkorna med Zapier. Men som utvecklare tar det mycket tid att klura ut hur man ska beskriva sin applikation.
Så här gör Zapier för att styra språket när man skapar integrationen.
Stegvis inställning
Att integrera i Zapier innebär att klicka fram och tillbaka i ett flöde som i första hand är tänkt som en guide. Det finns massvis med olika fält och knappar med olika namn och funktioner som vid en första anblick verkar onödiga. Men efter många varv genom guiden så känner man sig faktiskt ganska hemma och vet hur man ska göra.
Så här ser ett av flödena ut, som man får gå fram och tillbaka i för att göra alla inställningar.
Frustrationen gör sig påmind med jämna mellanrum. Det vore bra om Zapier också skaffade en trädvy över projektet så att man kan gå in direkt och ändra på saker i strukturen utan att klicka sig genom flödet.
Push är det som gäller
När det gäller Triggers så accepterar Zapier både Push med webhooks och Pull. Dock är Pull hopplöst dåligt, då det kostar massor om man inte vill att hämtningsfrekvensen ska vara väldigt låg. Det gör att den som integrerar riskerar att få mycket färre användare om man använder Pull.
Scriptstödet
För att justera datan som skickas till/från från Zapier, så har Zapier en textruta där man kan lägga in lite JavaScript.
Vi använder det till att bland annat se till att filtrera bort fält som inte behövs/kan användas i Zapier, eller att ta bort fält som inte ska följa med från Zapier till vårt API.
Det finns en sak som begränsar möjligheterna mycket. Det är att man inte kan göra http-förfrågningar inne i scriptet för att till exempel hämta data från en annan endpoint. Eftersom Zapier Trigger och Actions ofta har kopplingar till flera endpoints så är det besvärligt att inte kunna göra det inne i scriptet.
Dokumentationen av hur JavaScriptet fungerar är något förvirrande, bland annat beskrivs inte att man inte får skicka vidare hela objektet som man får in i funktionen, utan man ska filtrera ut delar.
En annan väldigt begränsande detalj är att det inte går att välja svar på webhooks. Det går alltså inte att svara med:
{"Connect":"+467237175800"}
…när det kommer en webhook på ett inkommande samtal i vårt fall. Det gör att vår integration med Zapier är begränsad till statiska val vid inkommande samtal. Om vi vill tillåta mer avancerade grejor så måste vi skapa ett helt nytt API bara för Zapier.
Zapiers errorlogg är väldigt bra när man ska sätta sig in i scriptdelen.
Magi
Zapier gör dock något som är väldigt intressant när det gäller inkommande data. De ser alltid till att förstå hur datan är strukturerad och omvandlar den så att respektive nyckelvärde går att komma åt. Det går alltså att mellan två request gå från HTTP-post med URL-encodad data till JSON eller XML, o.s.v. Det gör att när man väl får in datan så är den lätt att hantera.
Release
När man tagit sig igenom integrationen är det dags att göra releasen.
- Det första steget i releaseprocessen är att ha 10 alfatestare som kör med alla olika delar i din integration.
- När det är klart så kan man ansöka om att få en audit, då får man en lista på saker som man måste fixa för att få releasa, det blev inte en jättelista för oss. Zapier var också hjälpsamma med att rätta till punkterna i listan.
- Efter det kommer det en betatest när APIet är tillgängligt för alla användare på Zapier, under denna tid kollar Zapier att det inte är problem med integrationen.
- Du ska också skapa dokumentation som du ska skicka till Zapier för godkännande och uppläggning på hemsidan.
- Dessutom ska du skapa 8 exempel på hur man kan använda integrationen med andra appar på Zapier. Detta ska göras i ett verktyg som lämnar en hel del i övrigt att önska i användarvänlighet.
Under alla dessa steg är det också jättemycket fokus på hur språket och flödet ser ut. Det var inte lätt att hitta var man ska göra alla olika dokument och verktyg etc. När allt är klart och godkänt av Zapier så gör de marknadsföring av integrationen, på så sätt har man som API-leverantör möjlighet att nå nya kunder!
Sammanfattning
Styrkan med Zapier ur användarens synvinkel är att det är ett enhetligt språk och flöde. Det gör att det som användare går att lätt sätta sig in i olika integrationer. Det är också det stora jobbet när det gäller att skapa en integration.
Zapier skulle kunna förbättra integrationsmöjligheterna bland annat genom att låta scriptet bli mer kompetent och vara tydligare med dokumentationen för det, gärna med fler exempel.
Zapier öppnar upp för fler kundgrupper för oss som API-företag, både en yta att synas på och ett sätt för ickeprogrammerare att kunna använda vår tjänst.
Dessutom heter vi 46elks så vi kommer högst upp i listan där man väljer Triggers & Acctions.