Du har ett Telegram-erbjudande med “gå med för att få åtkomst”, och det funkar… tills det inte gör det. Folk hävdar att de gått med, du kan inte verifiera snabbt, och plötsligt är din dag ett kaos av skärmdumpar och “snälla lås upp”-DM:s.
Den här konfigurationen för åtkomstspärr i Telegram träffar marknadsförare som kör giveaways och lead magnets först. Men community managers känner också av det, liksom byråägare som behöver strukturerade, repeterbara kundkampanjer. Resultatet är enkelt: åtkomst beviljas bara när kravet att gå med faktiskt är uppfyllt, inte bara när någon säger att det är det.
Det här arbetsflödet gör din bot till en automatisk grindvakt med Postgres som “source of truth”. Du får se vad som automatiseras, vad du får tillbaka och hur delarna hänger ihop.
Så fungerar automationen
Hela n8n-arbetsflödet, från trigger till slutligt resultat:
n8n Workflow Template: Telegram + Postgres: åtkomstkontroll utan manuella kontroller
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Get Subscription statuses"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Get Channels"]
n2@{ icon: "mdi:cog", form: "rounded", label: "Union statuses", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Check failed"]
n5@{ icon: "mdi:cog", form: "rounded", label: "Get File", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Download File", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Add Channel"]
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Variables TG", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Initialization", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Trigger"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Get Bot Status"]
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Define flow", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Commands", pos: "b", h: 48 }
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Channel Exists"]
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Update bot status on CHECK S.."]
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Request Add Channel"]
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Update bot status on CHECK S.."]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Request Delete Channel"]
n19["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Request New Delete Channel"]
n20["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Request New Add Channel"]
n21["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Channel Not Exists"]
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Delete Channel"]
n23["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Get Channels "]
n24@{ icon: "mdi:cog", form: "rounded", label: "Add Divide Channels", pos: "b", h: 48 }
n25["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Channels"]
n26@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Define Type", pos: "b", h: 48 }
n27["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Update bot status on START"]
n28@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Buttons", pos: "b", h: 48 }
n29["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Success"]
n30["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Get Channels "]
n31@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n32["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Welcome message Referal"]
n33["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Welcome message Manager"]
n34["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Upsert bot status on START"]
n35@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Referal?", pos: "b", h: 48 }
n36["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Update bot status and referal"]
n37["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Get Referal"]
n38["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Check success"]
n39["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Check success + File"]
n40@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Is Admin?", pos: "b", h: 48 }
n31 --> n22
n31 --> n21
n3 --> n5
n3 --> n38
n3 --> n4
n28 --> n27
n13 --> n35
n13 --> n23
n13 --> n16
n13 --> n18
n5 --> n6
n35 --> n32
n35 --> n33
n40 --> n26
n7 --> n20
n7 --> n14
n26 --> n28
n26 --> n11
n12 --> n13
n12 --> n7
n12 --> n30
n37 --> n1
n1 --> n0
n8 --> n9
n6 --> n39
n23 --> n24
n22 --> n19
n11 --> n12
n30 --> n31
n9 --> n40
n2 --> n3
n10 --> n8
n24 --> n25
n16 --> n15
n18 --> n17
n33 --> n34
n32 --> n36
n0 --> n2
n27 --> n29
n36 --> n37
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n10 trigger
class n3,n12,n13,n26,n28,n31,n35,n40 decision
class n1,n7,n11,n15,n17,n22,n23,n27,n30,n34,n36,n37 database
class n5 disabled
class n6 disabled
class n39 disabled
classDef customIcon fill:none,stroke:none
class n0,n1,n4,n7,n10,n11,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n25,n27,n29,n30,n32,n33,n34,n36,n37,n38,n39 customIcon
Problemet: spärrad åtkomst blir manuell polisverksamhet
“Gå med i vår kanal för att få filen” låter enkelt. I verkligheten blir det ett dagligt modereringsjobb: folk går med, lämnar, går med igen och bråkar om huruvida de är berättigade. Om du kör flera obligatoriska kanaler multipliceras huvudvärken, eftersom du kontrollerar medlemskap på olika ställen och försöker hålla reglerna konsekventa. Och när du har mycket att göra blir grinden “mjuk”. Någon får åtkomst utan att kvalificera sig, det sprids, och nu är din “belöning” i praktiken offentlig.
Det eskalerar snabbt. Här är var det brukar gå sönder.
- Du gör medlemskapskontroller manuellt, vilket kan ta runt 10 minuter per förfrågan när du räknar in fram och tillbaka i meddelanden.
- Reglerna glider över tid eftersom ingen minns vilka kanaler som är “obligatoriska” den här veckan.
- Support-DM:s staplas, och du kan ändå inte bevisa vem som faktiskt kvalificerade sig när någon klagar.
- Rekommendationer och promolänkar blir röriga, så du kan inte se vilka användare som kom från vilken kampanj.
Lösningen: Telegram-boten spärrar åtkomst med kontroller som backas av Postgres
Det här n8n-arbetsflödet gör din Telegram-bot till en konsekvent grind som automatiskt kontrollerar “obligatoriska kanal-joins” och sedan svarar baserat på resultatet. Det startar när någon skriver till din bot (eller klickar på din rekommendationslänk) och arbetsflödet laddar den aktuella listan med obligatoriska kanal-ID:n från Postgres. Därefter kontrollerar boten användarens prenumerationsstatus för varje kanal och slår ihop resultaten till ett tydligt godkänd/underkänd-beslut. Om något krav saknas får de exakt instruktion om vad de ska göra och boten kan skicka ett välkomstmeddelande i rekommendationsstil. Om de godkänns skickar boten ett framgångsmeddelande (och arbetsflödet är redan förberett för att leverera en fil från Google Drive, även om den delen för närvarande är inaktiv).
Arbetsflödet börjar med en Telegram-meddelandetrigger och lite kontextsetup. Postgres håller dina kanalregler och användarstatus, så kontrollerna förblir konsekventa över tid. Till sist levererar Telegram rätt meddelande: “du är inne” eller “inte än”, med en tydlig väg framåt.
Det du får: automation vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du kör en veckovis giveaway där användare måste gå med i 3 kanaler innan de kan ladda ner belöningen. Om 50 personer begär åtkomst innebär manuell kontroll på cirka 10 minuter per person ungefär 8 timmar monotont jobb (och då är inte diskussionerna ens inräknade). Med det här arbetsflödet klickar användaren på din rekommendationslänk, boten kontrollerar alla 3 kanaler automatiskt och de får ett direkt godkänd/underkänd-meddelande. Du kommer fortfarande lägga tid på kampanjen, men inte på att agera polis.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Telegram-bot som tar emot meddelanden och svarar.
- Postgres för att lagra kanaler, användartillstånd och rekommendationer.
- Telegram bot token (hämtas från BotFather i Telegram).
Kunskapsnivå: Mellan. Du kopplar in credentials, kör ett SQL-skript som du får och är bekväm med att testa bot-kommandon.
Vill du inte sätta upp det själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En användare skriver till din bot eller kommer in via en rekommendationslänk. Telegram-triggern fångar deras chattdetaljer, och arbetsflödet sätter variabler så att varje efterföljande steg vet vem användaren är och vad de efterfrågade.
Din bot kontrollerar vilket läge den ska köra i. Postgres lagrar “botstatus” och användartillstånd, så arbetsflödet kan routa till rätt spår (start, kontrollera åtkomst, lista kanaler, lägg till kanal, ta bort kanal).
De obligatoriska kanalerna laddas från Postgres och sedan verifieras Telegram-medlemskap. Arbetsflödet hämtar kanallistan, kontrollerar användarens prenumerationsstatus för varje kanal, aggregerar resultaten och slår ihop dem till ett enda beslut. Om en kanal saknas talar boten om det och kan skicka ett välkomstmeddelande som knuffar användaren tillbaka till rätt join-länkar.
Lyckat eller misslyckat kommuniceras direkt. Om de godkänns skickar boten ett framgångsmeddelande. Arbetsflödet innehåller också Google Drive-noder för att hitta och hämta en fil för leverans, som du kan aktivera när du är redo.
Du kan enkelt justera hur listan över obligatoriska kanaler fungerar för att stödja olika kampanjer (till exempel separata listor per erbjudande) utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera Telegram-triggern
Konfigurera den inkommande Telegram-triggern för att fånga användarförfrågningar och starta arbetsflödet.
- Lägg till och öppna Telegram Incoming Trigger.
- Autentiseringsuppgifter krävs: Anslut era Telegram-autentiseringsuppgifter.
- Spara noden för att generera Telegram-webhook-URL:en och koppla den till er bot.
Steg 2: initiera Telegram-kontext och administratörskontroll
Normalisera inkommande data och säkerställ adminåtkomst innan kommandon routas.
- I Set Telegram Variables mappar ni nyckelfält från trigger-payloaden (t.ex. användar-ID, chatt-ID, kommandotext) för återanvändning.
- I Initialize Context sätter ni standardvärden för kontexten som används av efterföljande routing (t.ex. request state eller flaggor).
- I Verify Admin User definierar ni villkoret för adminvalidering som måste uppfyllas innan flödet fortsätter till Select Request Type.
Steg 3: sätt upp logik för kommandorouting
Routa kommandon till rätt hanteringsspår för att lägga till, ta bort, lista eller göra statuskontroller.
- I Select Request Type lägger ni till switch-regler för startkommandon, adminstatuskontroller och knapp-callbacks.
- Konfigurera Handle Button Choice för att mappa knappåtgärder till Update Status on Start.
- I Route Workflow Path och Command Router mappar ni kommandoutgångar till rätt grenar (add, delete, list eller check).
Steg 4: koppla databasoperationer (Postgres)
Alla läsningar och skrivningar i databasen beror på Postgres. Konfigurera autentiseringsuppgifter en gång och återanvänd dem i databasnoderna.
- Öppna valfri Postgres-nod (till exempel Retrieve Channel List) och anslut autentiseringsuppgifter.
- Autentiseringsuppgifter krävs: Anslut era Postgres-autentiseringsuppgifter.
- Använd samma autentiseringsuppgifter i alla Postgres-noder (12+ noder hanterar kanaldata, statusuppdateringar, referrals och uppslag), inklusive Insert Channel Record, Remove Channel Record, Load Channels For List och Fetch Bot Status.
- Bekräfta att era SQL-frågor eller tabellmappningar är korrekta i varje nod innan ni går vidare.
Steg 5: konfigurera utgående Telegram-meddelanden
Konfigurera alla Telegram-svarsnoder som skickar bekräftelser, listor och statusuppdateringar till användare.
- Öppna valfri Telegram-nod (till exempel Send Success Message) och anslut autentiseringsuppgifter.
- Autentiseringsuppgifter krävs: Anslut era Telegram-autentiseringsuppgifter.
- Använd samma autentiseringsuppgifter i alla Telegram-noder (14+ noder skickar meddelanden som Ask Add Channel, Confirm Add Channel, Notify Missing Channel och Send Channel List).
- Anpassa meddelandetext och knappar för er målgrupp i varje Telegram-nod.
Steg 6: aktivera kanallistning och sammanfogning av status
Bygg listvyn och flödet för statusvalidering som aggregerar data om prenumerationsstatus.
- I Load Channels For List bekräftar ni att frågan returnerar alla aktiva kanaler.
- Konfigurera Summarize Channel List för att formatera kanalraderna till en enda sammanfattande sträng.
- Skicka slutresultatet i Send Channel List.
- För statuskontroller: bekräfta att Retrieve Channel List flödar in i Fetch Subscription States, och därefter att Combine Status Records går in i Validate Status Merge.
Validate Status Merge skickar utdata parallellt till både Locate Drive File och Notify Check Success.
Steg 7: koppla filleverans från Google Drive (valfritt)
Grenen för filleverans är inaktiverad som standard; aktivera den endast om ni behöver skicka filer från Google Drive.
- Aktivera Locate Drive File, Fetch Drive File och Notify Success With File om ni vill använda filleverans.
- Autentiseringsuppgifter krävs: Anslut era Google Drive-autentiseringsuppgifter.
- I Locate Drive File ställer ni in sökkriterierna för filen ni vill skicka.
- I Fetch Drive File konfigurerar ni nedladdningsalternativen så att Notify Success With File kan bifoga filen.
Steg 8: testa och aktivera ert arbetsflöde
Kör ett end-to-end-test för att bekräfta att kommandorouting, databasuppdateringar och Telegram-notiser fungerar som förväntat.
- Klicka på Execute Workflow och skicka ett testkommando till er bot (t.ex. add, delete, list eller check).
- Verifiera att förväntat Telegram-svar skickas (t.ex. Confirm Add Channel eller Send Channel List).
- Kontrollera era Postgres-tabeller för att bekräfta uppdateringar från noder som Insert Channel Record eller Update Status for Del Req.
- När allt fungerar, slå om arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Telegram-credentials och botbehörigheter kan vara den tysta dödaren. Om kontrollerna misslyckas, bekräfta att boten är admin i de obligatoriska kanalerna och dubbelkolla bot-token i n8n.
- Om du använder Wait-noder eller extern rendering varierar processningstiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Schema-missmatch i Postgres ger förvirrande fel. Om SQL-skriptet har redigerats, verifiera tabellnamn och schema-prefixet (arbetsflödet förväntar sig att du ersätter “n8n” med ditt schema).
Vanliga frågor
Cirka en timme om du redan har Postgres och din bot redo.
Nej. Du kopplar konton och kör ett SQL-skript som du får en gång. Resten är att konfigurera meddelanden och testa bot-flödena.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in kostnader för Postgres-hosting (ofta 5–20 USD/månad om du inte redan har det).
Två alternativ: n8n Cloud (managed, enklast att sätta upp) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och klarar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, men planera din datamodell först. De flesta skapar separata listor med obligatoriska kanaler i Postgres (per erbjudande, per varumärke eller per region) och justerar frågorna “Retrieve Channel List” och “Load Channels For Check” för att hämta rätt uppsättning. Du kan också ändra logiken i “Command Router” och “Select Request Type” för att upptäcka ett kampanjnyckelord i användarens meddelande eller rekommendationslänk. Om du senare vill leverera filer aktiverar du Google Drive-spåret som startar vid “Locate Drive File”.
Oftast är boten inte admin i kanalerna den kontrollerar, så Telegram returnerar inte pålitlig medlemskapsstatus. Näst vanligast är en inaktuell bot-token i dina n8n Telegram-credentials. Om det fungerar för några användare och sedan börjar fallera kan du också slå i rate limits när du kontrollerar för många kanaler eller för många användare samtidigt.
Många, så länge din server och Telegrams begränsningar hänger med.
För det här användningsfallet är n8n oftast bättre, eftersom du gör tillståndsbaserad routing, databasläsningar/-skrivningar och verifieringslogik över flera kanaler som blir klumpig (och dyr) i enklare automationverktyg. Du får också möjligheten att self-hosta, vilket spelar roll när din bot får hög belastning och körningarna sticker. Zapier eller Make kan fortfarande fungera för väldigt enkel spärr, men när du behöver “lägg till/ta bort obligatoriska kanaler”, rekommendationer och ett revisionsspår brukar det kännas trångt. Prata med en automationsexpert om du vill ha en snabb rekommendation baserat på din volym och din setup.
Du sätter reglerna en gång, och boten upprätthåller dem varje gång. Ärligt talat räcker det långt när din “enkla grind” börjar dra in dig i support hela dagen.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.