Hur man integrerar ett API med Zapier (gästinlägg)

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.

setupZapier46elks

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.

ZpaierNoun46elks

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.

ZapFlow

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.

  1. Det första steget i releaseprocessen är att ha 10 alfatestare som kör med alla olika delar i din integration.
  2. 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.
  3. 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.
  4. Du ska också skapa dokumentation som du ska skicka till Zapier för godkännande och uppläggning på hemsidan.
  5. 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.

Zap46elksVissibe