Din supportinkorg blir snabbt högljudd. Några “snabba frågor” blir till långa trådar, du tappar sammanhanget och överlämningen till en människa sker alldeles för sent (eller alldeles för tidigt).
Den här Telegram Gmail-handoff-setupen träffar supportansvariga först, men grundare och customer success-team märker den också. Du får ett AI-först-svar i Telegram, och sedan en strukturerad, bekräftad väg till en människa med en e-postavisering så att inget faller mellan stolarna.
Nedan hittar du den exakta automationslogiken, vad den löser och vad du behöver för att köra den utan att förvandla din supportprocess till ett vetenskapsprojekt.
Så fungerar den här automationen
Hela n8n-workflowen, från trigger till slutresultat:
n8n Workflow Template: Telegram + Gmail-varningar för smidig supportöverlämning
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/>Telegram Trigger"]
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Configuration", pos: "b", h: 48 }
n2["<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/>Confirm Operator"]
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "User Approved", pos: "b", h: 48 }
n4@{ icon: "mdi:message-outline", form: "rounded", label: "Alert Operator", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Operator Confirmed", 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/telegram.svg' width='40' height='40' /></div><br/>Operator Attendance"]
n8["<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/>Operator Declined Attendance"]
n9@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n10@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n11@{ icon: "mdi:message-outline", form: "rounded", label: "Reply To User", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Human Requested", pos: "b", h: 48 }
n13@{ icon: "mdi:brain", form: "rounded", label: "Azure OpenAI Chat Model", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Update Last Message", pos: "b", h: 48 }
n15@{ icon: "mdi:cog", form: "rounded", label: "Last Message Exists", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Row is Empty", pos: "b", h: 48 }
n17@{ icon: "mdi:cog", form: "rounded", label: "Create Temporary Message", pos: "b", h: 48 }
n18@{ icon: "mdi:cog", form: "rounded", label: "Update Temporary Message", pos: "b", h: 48 }
n19@{ icon: "mdi:cog", form: "rounded", label: "Get Temporary Message", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Message Router", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Topic"]
n23@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Text Message", pos: "b", h: 48 }
n24@{ icon: "mdi:cog", form: "rounded", label: "Stop Workflow", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Forward Message To Group"]
n26@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Topic Message", pos: "b", h: 48 }
n28["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Forward Message"]
n30@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Exit", pos: "b", h: 48 }
n31["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Close Topic"]
n32@{ icon: "mdi:cog", form: "rounded", label: "Update Closed Topic", pos: "b", h: 48 }
n30 --> n31
n30 --> n28
n9 --> n12
n31 --> n32
n22 --> n18
n16 --> n17
n16 --> n14
n23 --> n1
n23 --> n24
n1 --> n19
n11 -.-> n9
n10 -.-> n9
n26 --> n30
n26 --> n23
n3 --> n4
n3 --> n9
n4 --> n6
n20 --> n25
n20 --> n9
n12 --> n2
n12 --> n15
n2 --> n3
n0 --> n26
n6 --> n7
n6 --> n8
n15 --> n16
n7 --> n22
n19 --> n20
n5 -.-> n9
n13 -.-> n9
end
subgraph sg1["Personal Flow"]
direction LR
n21@{ icon: "mdi:swap-vertical", form: "rounded", label: "Personal", 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/>Personal Trigger"]
n29 --> n21
end
subgraph sg2["Flow 3"]
direction LR
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Chat Admins"]
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 n0,n29 trigger
class n9 ai
class n5,n13 aiModel
class n10 ai
class n3,n6,n12,n16,n20,n23,n26,n30 decision
class n22,n25,n28,n31,n27 api
class n29 disabled
classDef customIcon fill:none,stroke:none
class n0,n2,n7,n8,n22,n25,n28,n31,n29,n27 customIcon
Problemet: överlämningar till mänsklig support är röriga
De flesta “AI-supporter” faller isär precis när det spelar roll: när en riktig kund ber om en riktig person. Lämnar du över för tidigt blir teamet en livechattdisk igen. Lämnar du över för sent är kunden redan irriterad. Och även när du faktiskt routar det till en människa är kontexten utspridd mellan privata chattar, grupptrådar och någons minne av vad som hände för fem minuter sedan. Det kaoset skapar långsamma svar, dubbelt arbete och den typen av misstag som får kunder att upprepa sig.
Det går snabbt ihop. Här är var det oftast fallerar.
- Ett “kan jag prata med en människa?”-meddelande missas eftersom det ser ut som allt annat i chattflödet.
- När en kollega hoppar in finns det ingen tydlig plats att samarbeta på, så handläggare svarar över varandra eller undviker att svara helt.
- Kunder upprepar sitt ärende eftersom överlämningen inte tar med konversationens kontext på ett användbart sätt.
- Utan sessionstrackning kan du inte tillförlitligt avgöra om konversationen är med AI, en människa, fortfarande öppen eller redan stängd.
Lösningen: AI-först-support i Telegram med en strukturerad överlämning till människa
Den här n8n-workflowen startar i Telegram, där din bot tar emot inkommande meddelanden och en AI-agent svarar först med hjälp av konversationsminne (så att den inte “glömmer” vad som sas för två meddelanden sedan). När användaren signalerar att de vill prata med en människa kastar workflowen inte direkt över chatten till teamet. Den kör en bekräftelse i två steg: först ber den användaren bekräfta att de vill ha en överlämning, sedan kontrollerar den om en handläggare är tillgänglig. När överlämningen godkänns skapar workflowen ett dedikerat Telegram Forum-ämne namngivet efter användarens ID, vidarebefordrar meddelanden mellan den privata chatten och ämnet automatiskt och skickar en Gmail-avisering så att teamet ser det direkt. Till sist kan handläggaren skriva “exit” för att stänga sessionen och ämnet på ett snyggt sätt.
Workflowen börjar med en Telegram message-trigger. AI hanterar det vanliga fram och tillbaka, och systemet håller utkik efter överlämningsintention. När mänsklig support godkänns routas allt in i en enda ämnestråd och handläggaren får en notis via e-post.
Det här får du: automation kontra resultat
| Vad den här workflowen automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du får 20 supportchattar i Telegram per dag, och att cirka 6 av dem till slut behöver en människa. Manuellt är det ofta 5 minuter fram och tillbaka bara för att förstå vad de vill, och sedan ytterligare 10 minuter att kopiera kontext till en teamtråd eller ett mejl, alltså cirka 1,5 timmar per dag på ren dirigering. Med den här workflowen sker triggen direkt, AI hanterar de första frågorna och överlämningen skapar ett ämne plus skickar Gmail-aviseringen automatiskt. Den mänskliga tiden blir “svara när det faktiskt behövs”, inte “organisera konversationen först”.
Det du behöver
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att köra boten och Topics-gruppen
- Gmail (SMTP) för att skicka e-postaviseringar till handläggare
- OpenAI / OpenRouter / Azure OpenAI-uppgifter (skapa en API-nyckel i din leverantörs dashboard)
Kunskapsnivå: Medel. Du kommer främst att klistra in uppgifter, fylla i ID:n och testa meddelanderoutning i Telegram.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett Telegram-meddelande sätter igång det. När någon skriver till din bot tar n8n emot uppdateringen och avgör direkt om det är en privat användarchatt eller ett meddelande från ett handläggarämne.
Kontext lagras när konversationen utvecklas. Workflowen sparar en lättviktig sessionspost i en n8n-datatabell (typ och status samt ämne och användare), och använder sedan en minnesbuffert så att AI-agenten svarar som om den fortsätter en riktig konversation, inte startar om varje gång.
Workflowen upptäcker “jag vill prata med en människa” och bekräftar. Om AI:n ser en överlämningsförfrågan ber den användaren bekräfta. Sedan kontrollerar den handläggartillgänglighet och skickar en Gmail-avisering till handläggaren när överlämningen godkänns.
Allt routas via ett dedikerat Telegram-ämne. n8n skapar ett forumämne via Telegrams API, vidarebefordrar användarens meddelanden in i tråden och vidarebefordrar handläggarens svar tillbaka till användaren. När en handläggare skriver “exit” stänger workflowen ämnet och markerar sessionen som stängd.
Du kan enkelt ändra överlämningsreglerna så att de matchar dina öppettider och bemanning. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Telegram-triggern
Börja med att koppla inkommande Telegram-meddelanden till arbetsflödet och routa ämnesmeddelanden kontra vanliga textmeddelanden.
- Lägg till och öppna Telegram Incoming Trigger, och låt Updates vara inställd på
message. Inloggningsuppgift krävs: Anslut era telegramApi-inloggningsuppgifter. - Bekräfta exekveringsflödet: Telegram Incoming Trigger → Is Topic Message → Exit Command Check för ämnesmeddelanden, och Telegram Incoming Trigger → Is Topic Message → Text Message Check för standardmeddelanden.
- I Is Topic Message, säkerställ att villkoren kontrollerar
{{$json.message.is_topic_message}}och{{$json.message.text}}som visat, så att endast ämnes-textmeddelanden går till spåret för ämneshantering. - I Text Message Check, behåll villkoret som kontrollerar att
{{$json.message.text}}finns, och routa “false”-spåret till End Workflow för att ignorera icke-textmeddelanden.
Steg 2: Ställ in grundparametrar och ID:n
Definiera operatörens e-post, grupp-ID:n och användarspecifik kontext för efterföljande noder.
- Öppna Setup Parameters och sätt user till
{{ $('Telegram Incoming Trigger').item.json.message.from.id }}. - Fyll i statiska värden för smtp och operator med era e-postadresser och ersätt
[YOUR_EMAIL]. - Ställ in ID:n för personal och group (ersätt
[YOUR_ID]) för att definiera referenserna till privat- och gruppchatten som används senare i forumroutningen. - Om ni vill fånga ID:n dynamiskt, aktivera Personal Incoming Trigger och koppla den till Capture Personal IDs (denna trigger är inaktiverad som standard). Inloggningsuppgift krävs: Anslut era telegramApi-inloggningsuppgifter till Personal Incoming Trigger.
Steg 3: Konfigurera spårning av meddelandestatus i datatabeller
Dessa noder lagrar och hämtar senaste konversationsstatus så att meddelanden kan routas till AI- eller människoteman.
- I Fetch Temp Message, behåll Operation inställd på
get, Match Type påallConditionsoch Return All påtrue, med filter påuserochstatus=open. - Konfigurera Route Message Type med regler som kontrollerar att
{{$json.type}}är lika medhumanellerai, samt enempty-väg när{{$json}}är tom. - Konfigurera Check Last Message Exists med Operation
rowExistsoch filter föruser={{ $('Setup Parameters').item.json.user }}ochstatus=open. - Säkerställ att Evaluate Empty Row kontrollerar om
{{$json}}är tomt, och routar sedan till Create Temp Message Row eller Update Last Message Row. - I Create Temp Message Row, sätt status till
openoch user till{{ $('Setup Parameters').item.json.user }}. - I Update Temp Message Row, mappa topic till
{{ $json.result.message_thread_id }}och type tillhumanför nya operatörsteman. - I Mark Topic Closed, sätt status till
closedoch filtrera på{{ $('Telegram Incoming Trigger').item.json.message.reply_to_message.message_thread_id }}.
[YOUR_ID] för tabellen. Ersätt detta med det faktiska Data Table-ID:t, annars kommer alla uppslag och uppdateringar att misslyckas.Steg 4: Ställ in AI-konversation och verktyg
Konfigurera AI-agenten, minnet och svarsverktyget som hanterar automatiska svar när en mänsklig överlämning inte efterfrågas.
- Öppna AI Conversation Agent och sätt Text till
{{ $('Telegram Incoming Trigger').item.json.message.text }}. Behåll systemmeddelandet som instruerar agenten att returneraHumanvid operatörsförfrågningar. - Anslut OpenRouter Chat Engine som primär modell med Model
x-ai/grok-4-fast. Inloggningsuppgift krävs: Anslut era openRouterApi-inloggningsuppgifter. - Anslut Azure OpenAI Chat Engine som sekundär modell med Model
gpt-4o-mini. Inloggningsuppgift krävs: Anslut era azureOpenAiApi-inloggningsuppgifter. - I Conversation Memory Buffer, sätt Session Key till
{{ $('Setup Parameters').item.json.user }}och låt Session ID Type varacustomKey. Denna nod är kopplad som minne till AI Conversation Agent. - I Send Reply to User, behåll Text inställd på
{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text', `Reply message to be sent to user.`, 'string') }}och Chat ID på{{ $('Setup Parameters').item.json.user }}. - Send Reply to User är ansluten som ett verktyg för AI Conversation Agent; lägg till Telegram-inloggningsuppgifter i den överordnade agentkonfigurationen enligt vad er AI-verktygssetup kräver.
Steg 5: Konfigurera mänsklig överlämning och godkännanden
När AI:n upptäcker en begäran om människa, uppmanar arbetsflödet användaren och operatören innan ett forumämne öppnas.
- I Detect Human Request, behåll villkoret som kontrollerar att
{{$json.output}}är lika medHuman. - Konfigurera Request Operator Confirmation med Operation
sendAndWait, MessageConfirm switching to operator?, och Chat ID{{ $('Setup Parameters').item.json.user }}. Inloggningsuppgift krävs: Anslut era telegramApi-inloggningsuppgifter. - I User Approval Check, behåll villkoret att
{{$json.data.approved}}ärtrueinnan operatörens e-post skickas. - Öppna Notify Operator Email och sätt To Email till
{{ $('Setup Parameters').item.json.operator }}och From Email till{{ $('Setup Parameters').item.json.smtp }}. Behåll meddelandetexten och Resume Amount15minuter. Inloggningsuppgift krävs: Anslut era smtp-inloggningsuppgifter. - I Operator Approval Check, behåll booleska kontroller på
{{$json.data.approved}}, och routa sedan till Inform Operator Available eller Inform Operator Busy. - Sätt texten i Inform Operator Available till
Operator will be with you shortly.och texten i Inform Operator Busy tillUnfortunately, the operator is not free at the moment., båda med Chat ID{{ $('Setup Parameters').item.json.user }}. Inloggningsuppgift krävs: Anslut era telegramApi-inloggningsuppgifter.
Steg 6: Konfigurera Telegram-forumåtgärder och vidarebefordran
Dessa HTTP-request-noder skapar och hanterar forumämnen och vidarebefordrar meddelanden till rätt trådar.
- I Generate Forum Topic, behåll URL inställd på
https://api.telegram.org/bot[CONFIGURE_YOUR_TOKEN]/createForumTopic, ha Send Body aktiverat, och mappa chat_id till{{ $('Setup Parameters').item.json.group }}och name till{{ $('Setup Parameters').item.json.user }}. - I Forward to Group Topic, behåll URL inställd på
https://api.telegram.org/bot[CONFIGURE_YOUR_TOKEN]/forwardMessagemed body-parametrar för chat_id, from_chat_id, message_id och message_thread_id inställda på de befintliga uttrycken. - Konfigurera Exit Command Check för att upptäcka
exitmed{{ $('Telegram Incoming Trigger').item.json.message.text }}, och routa sedan till Close Forum Topic. - I Close Forum Topic, behåll body-parametrarna som använder
{{ $('Telegram Incoming Trigger').item.json.message.reply_to_message.chat.id }}och{{ $('Telegram Incoming Trigger').item.json.message.reply_to_message.message_thread_id }}. - Använd Forward Topic Message för operatörssvar genom att vidarebefordra ämnessvaret med de befintliga uttrycken i body-parametrarna.
- Om ni planerar att hantera administratörer programmatiskt, konfigurera Retrieve Chat Admins och ersätt
[YOUR_ID]i body-parametern chat_id.
[CONFIGURE_YOUR_TOKEN] i URL:en. Ersätt den med er riktiga Telegram-bot-token, annars kommer varje request att misslyckas.Steg 7: Testa och aktivera ert arbetsflöde
Verifiera beteendet från början till slut för både AI-svar och spåret för mänsklig överlämning innan ni slår på arbetsflödet.
- Klicka på Execute Workflow och skicka ett textmeddelande till er bot för att bekräfta att Text Message Check routar korrekt och att AI Conversation Agent svarar via Send Reply to User.
- Skicka ett meddelande som uttryckligen ber om en människa; bekräfta att Detect Human Request routar till Request Operator Confirmation och att Notify Operator Email triggar godkännande.
- Godkänn e-postmeddelandet och verifiera att Inform Operator Available publiceras, att Generate Forum Topic skapar ett ämne och att Update Temp Message Row sparar ämnes-ID:t.
- Svara från ämnestråden och bekräfta att Forward Topic Message routar tillbaka till den ursprungliga användaren.
- När allt fungerar, växla arbetsflödet till Active så att Telegram Incoming Trigger kör kontinuerligt i produktion.
Vanliga fallgropar
- Behörigheter för Telegram-boten spelar roll. Om skapande av ämnen eller vidarebefordran misslyckas, kontrollera att boten är admin i gruppen med Topics aktiverat och har behörighet att hantera ämnen och meddelanden.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Gmail/SMTP-uppgifter kan vara känsliga. Om mejl slutar skickas, bekräfta att applösenordet fortfarande är giltigt och kontrollera först autentiseringsinställningarna i noden Send Email.
Vanliga frågor
Cirka 30–45 minuter första gången.
Nej. Du kommer mest att klistra in uppgifter, fylla i ID:n och testa botflödet i Telegram.
Ja. n8n har ett gratisalternativ för egen hosting 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 med API-kostnader för AI-modeller (ofta några cent per konversation, beroende på längd).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, men räkna med att justera den lite. Du kan ändra överlämningslogiken i “Detect Human Request” och bekräftelsekontrollerna, och sedan anpassa handläggarnotiserna i noden Send Email så att de matchar din beredskapsrotation. Vanliga anpassningar är att bara erbjuda mänsklig support under kontorstid, routa VIP-kunder till ett annat ämne/en annan grupp och ändra nyckelordet “exit” så att det matchar er interna process.
Oftast beror det på att en bottoken klistrats in på fel ställe, eller att boten inte är admin i Topics-gruppen. Dubbelkolla HTTP Request-noderna som anropar Telegrams API och säkerställ att token och chatt-ID:n matchar din nuvarande grupp. Om det fungerade tidigare och plötsligt slutade, kontrollera behörigheter först och bekräfta sedan att gruppen fortfarande har Topics aktiverat.
Många, så länge din n8n-instans och din AI-leverantör hänger med.
För det här användningsfallet är n8n oftast ett bättre val eftersom logiken inte är “en trigger, en åtgärd”. Du har sessionstillstånd, förgrenade flöden (AI vs människa, öppen vs stängd) och vidarebefordran av meddelanden i båda riktningarna. Zapier och Make kan göra delar av det, men det blir dyrt och skört när du lägger till minne, skapande av ämnen och flera villkorsvägar. n8n ger dig också möjlighet till egen hosting, vilket är viktigt om meddelandevolymen växer. Om du vill kan du fortfarande börja enkelt i Zapier, men du kommer troligen att växa ur det. Prata med en automationsexpert om du vill ha en ärlig rekommendation för din setup.
När detta väl rullar slutar support kännas som en hög med lösa konversationer. Workflowen håller kontexten prydlig, tar in människor vid rätt tillfälle och ger dig andrum.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.