Zum Inhalt springen

Lösung

WhatsApp und Telefonie in einer iOS-App

Eine iOS-App für WhatsApp und Anrufe im Team: Twilio, FastAPI und Supabase, mit CallKit, Klingelgruppen und Status beschäftigt. So haben wir sie gebaut.

Robert Cwicinski,

Schaubild WhatsApp und Telefonie über Twilio in iOS App

Für einen Kunden haben wir eine iOS-App gebaut, in der WhatsApp-Nachrichten und Anrufe zusammenlaufen. Twilio liefert Telefonie und WhatsApp. Ein FastAPI-Backend steuert alles, und Supabase speichert Nutzer, Nachrichten und Anrufe. Eingehende Anrufe klingeln per CallKit bei mehreren Leuten gleichzeitig. Wer beschäftigt ist, bekommt weder Anrufe noch Push-Nachrichten. Den Kunden nennen wir nicht.

Was haben wir gebaut?

Ein Team teilt sich eine Rufnummer und eine WhatsApp-Nummer. Statt Tischtelefon und Diensthandy hat jeder die App auf dem iPhone. Anrufe und Chats landen dort in einem Verlauf, und jeder sieht, wer aus dem Team reagiert hat.

Wie funktioniert die App?

Vier Teile, jeder hat eine Aufgabe:

  • Twilio liefert Rufnummer, Anrufe und WhatsApp
  • FastAPI nimmt alle Webhooks von Twilio an und entscheidet, was passiert
  • Supabase speichert Login, Nachrichten, Anrufe und Einstellungen
  • Die iOS-App meldet Anrufe über CallKit und WhatsApps als Push-Nachricht

Wie steuert FastAPI die Anrufe?

Bei jedem Anruf fragt Twilio per Webhook beim FastAPI-Backend nach. Das Backend schaut in Supabase nach, wer zur Klingelgruppe gehört und wer gerade frei ist. Dann antwortet es mit TwiML, Twilios XML-Format für Anrufe. Darin steht, bei wem es klingelt und ob der Anruf weitergeleitet wird. WhatsApp-Nachrichten kommen genauso per Webhook im Backend an.

Was liegt in Supabase?

  • Login für jedes Teammitglied
  • Die WhatsApp-Nachrichten und ihre Anhänge, also Bilder und Dateien
  • Das Anrufprotokoll
  • Klingelgruppen und ihre Mitglieder, also was bei wem klingelt
  • Einstellungen pro Person: Status beschäftigt und Rufumleitung

Bei jedem Anruf und jeder WhatsApp steht dazu, wer aus dem Team reagiert hat.

Wie klingelt es bei mehreren Leuten gleichzeitig?

PushKit weckt die App, sobald ein Anruf kommt. CallKit zeigt ihn dann wie einen normalen iPhone-Anruf an, auch bei gesperrtem Bildschirm. So klingelt es parallel bei allen aus der Klingelgruppe. Ausgehende Anrufe startet das Team direkt aus der App.

Was passiert, wenn jemand beschäftigt ist?

Jeder setzt in der App seinen Status. Steht er auf beschäftigt, klingelt es bei ihm nicht, und er bekommt keine Push-Nachrichten. Bei Bedarf leitet er Anrufe weiter. Beides liegt als Einstellung in Supabase, und das Backend prüft es bei jedem Anruf.

Was kostet der Betrieb?

Twilio rechnet nach Nutzung ab, ohne Grundgebühr und ohne Lizenz pro Nutzer:

  • Rufnummer: 1,35 $ im Monat für eine deutsche Festnetznummer
  • Eingehende Anrufe: 0,01 $ pro Minute. Weil der Anruf in der App landet, kommen 0,004 $ pro Minute dazu.
  • Ausgehende Anrufe: 0,0283 $ pro Minute ins deutsche Festnetz, 0,042 $ ins Mobilfunknetz. Auch hier kommen 0,004 $ für die App dazu.
  • WhatsApp: 0,005 $ Twilio-Gebühr pro Nachricht, dazu die Meta-Gebühr je nach Nachrichtentyp
  • Supabase: ab 25 $ im Monat im Pro-Plan

Twilio Stand Oktober 2026 laut Twilio-Preisseite (öffnet in neuem Tab), Supabase Stand November 2026 laut Supabase-Preisseite (öffnet in neuem Tab). Wie das für ein Team ohne eigene App aussieht, steht bei WhatsApp Business mit mehreren Nutzern.

Robert Cwicinski, Gründer von MacNorris, mit Brille, Bart und roter Cap im lila Football-Trikot

Robert Cwicinski

Quarterback

Berater, Macher, brutal ehrlich, seit 2005. ADHS. Wenn etwas kaputt ist, will ich es reparieren. Aber erst will ich verstehen, warum. Quarterback bei MacNorris.

Kein Foliensatz.

DEIN PROBLEM IST UNSERE NÄCHSTE LÖSUNG.

Beschreib uns, woran du seit Wochen hängst. Wir sagen dir ehrlich, ob wir das lösen und wie schnell. Wenn nicht, sagen wir dir, wen du stattdessen anrufen kannst.