WhatsApp taksi rezervasyon botu
2
●164
- 08-10-2025, 06:37:37Yazılabilir.
Yol haritası WhatsApp üzerinden alım-adres → varış-adres → alım zamanı → Google Maps ile mesafe & süre → ücret göster botu
Aşağıda Make.com veya n8n ile inşa edilebilecek, uçtan uca uygulanabilir bir yol haritası ve her platform için adım-adım teknik akış sunuyorum. Her iki seçenek için de temel bileşenler, örnek API çağrıları, mesaj şablonları, doğrulama, hata durumları ve üretime alma notları içeriyor. İster Make kullan ister n8n mantık aynı, sadece node/modül isimleri değişiyor.
---
1) Mimari & Gereksinimler (yüksek seviye)
WhatsApp mesajlaşma: Twilio WhatsApp veya Meta (WhatsApp Cloud API / Business API). (Twilio daha kolay entegre edilir; Meta doğrudan üretim için tercih edilen seçenek olabilir.)
Harita & mesafe: Google Maps APIs Geocoding API (adres → enlem/boylam), Distance Matrix API (mesafe & süre). Alternatif: HERE, Mapbox.
Oturum / durum yönetimi: kısa ömürlü sipariş oturumları (DB: Airtable / Google Sheets / PostgreSQL / Firebase) kullanıcı, adresler ve seçimler oturumda tutulur.
İş akışı otomasyonu: Make.com veya n8n.
Depolama / log: müşteri bilgileri, talep zamanları, hesaplanan ücret, Google API yanıtları.
Güvenlik & KVKK/GDPR: kullanıcı açık rızası, anahtarların güvenli saklanması (Make / n8n credential store), veri şifreleme/anonimleştirme.
Ops: hata yönetimi, tekrar deneme, kullanıcı bilgilendirme.
---
2) Kullanıcı deneyimi (örnek konuşma akışı)
1. Müşteri WhatsAppa Araç çağır yazar.
2. Bot: Alınacak adresi yazınız (ör. Vatan Cad. No:5, İstanbul).
3. Müşteri adresi gönderir → bot Geocoding ile doğrular / mümkünse öneri sunar.
4. Bot: Nereye gidiyorsunuz? → Müşteri varış adresini yazar → doğrula.
5. Bot: Alım zamanını seçin: Şimdi veya Tarih & Saat gir → eğer tarih/saat girerse doğrula zaman formatı.
6. Bot Google Distance Matrix ile mesafe + süre hesaplar.
7. Bot: Mesafe X km, tahmini süre Y dk. Ücret: Z ₺. Onaylıyor musunuz? [Evet] / [Hayır] (Buton veya yazı ile yanıt)
8. Onay → rezervasyon kaydı, teyit mesajı (driver ataması opsiyonel).
---
3) Önemli tasarım kararları & kurallar
Adres doğrulama: Serbest metin → Geocoding API ile enlem/boylam. Eğer sonuç belirsiz ise (confidence düşük veya birden çok sonuç) kullanıcıya alternatifler sun.
Mesafe kaynağı: Distance Matrix API sürüş (driving) modunu kullan. distance.value (metre) ve duration.value (saniye) alınır.
Ücret formülü (örnek): Ücret = Baz + (Km * KmFiyat) + (Dakika * DakikaFiyat)
Örnek: Baz = 10 ₺, KmFiyat = 3 ₺/km, DakikaFiyat = 0.5 ₺/dk
Hesaplama decimal; yuvarlama kuralı (örn. en yakın 0.5₺) belirtin.
Zaman dilimi: Kullanıcıların lokal saatini (Türkiye → Europe/Istanbul) dikkate alın.
Kötü girişler: Bilinmeyen adres, hatalı tarih formatı, Google API limit aşımı durumlarına geri bildirim.
---
4) Google Maps API örnek çağrılar ve parse
1. Geocoding (adres → lat/lng)
HTTP GET:
https://maps.googleapis.com/maps/api...y=YOUR_API_KEY
Cevapta results[0].geometry.location.lat ve .lng. results.length == 0 → adres bulunamadı.
2. Distance Matrix (iki nokta arası mesafe/süre driving mode)
HTTP GET (örnek):
https://maps.googleapis.com/maps/api...y=YOUR_API_KEY
Cevapta:
rows[0].elements[0].distance.value → metre (örn. 12050)
rows[0].elements[0].distance.text → "12.1 km"
rows[0].elements[0].duration.value → saniye (örn. 900)
status alanları kontrol edilmeli (OK, NOT_FOUND, ZERO_RESULTS vb.)
3. Mesafe → km dönüşümleri: km = distance.value / 1000; dakika = duration.value / 60.
---
5) WhatsApp entegrasyonu (mesaj + butonlar)
Twilio WhatsApp: kolay; Make ve n8nde hazır Twilio modülleri var. Interaktif buton desteği sınırlı ama template messages & media gönderilebilir.
Meta WhatsApp Cloud API: interactive messages (list messages, reply buttons) ve template messages destekler production için genelde tercih edilir.
Örnek ilk mesaj (template):
Merhaba {{1}}! Alınacak adresinizi yazar mısınız?
Onay butonları: "Evet" / "Hayır" veya "Şimdi" / "Randevu oluştur".
> Not: WhatsApp Business API ile interaktif mesajlar için önceden onaylanmış şablonlar (templates) gerekir; Make/n8n'de bu template'leri HTTP Request ile çağırarak gönderebilirsiniz.
---
6) Make.com adım adım akış (detay)
Aşağıda Make kullanarak tipik bir senaryo:
1. Trigger: Twilio/WhatsApp incoming message (Makede Twilio > "Watch Incoming Messages") veya Make Webhook (WhatsApp Cloud gönderirse).
2. Router 1 Kullanıcı durumuna göre (state machine):
new_request → ask_pickup_address
got_pickup → ask_destination
got_destination → ask_time
got_time → calculate_fare
3. Adres doğrulama: HTTP > Google Geocoding (GET). Eğer birden fazla sonuç → Formatter > create list > Reply user with options (list message).
4. Varsa kullanıcı seçimi → tekrar geocoding alınan lat/lng ile kaydet.
5. Mesafe hesaplama: HTTP > Google Distance Matrix. Parse JSON, çıkar distance.value, duration.value.
6. Ücret hesaplama: Make Formatter veya "Set variable" + math işlemleri (örn. round(distance/1000 * KmFiyat + duration/60 * DakikaFiyat + Baz, 2)).
7. Kullanıcıya sonuç göster: Twilio Send Message (WhatsApp) ya da HTTP -> WhatsApp Cloud API çağrısı. Gönder: mesafe, süre, ücret, Onaylıyor musunuz? butonları.
8. Onay takibi: Onay gelirse → kaydı veritabanına yaz (Airtable/Google Sheets), sürücü atama işine webhook tetikle. Onay yoksa iptal akışı.
9. Hata & limit handling: Google API quota hatası → kullanıcıya "şu anda hesaplama yapılamıyor" mesajı, opsiyonel yeniden deneme.
Make modülleri örnek sırası:
Twilio > Watch Messages (Trigger)
Router
HTTP > Make a request (Geocoding)
Tools > JSON > Parse JSON (geocoding)
HTTP > Make a request (Distance Matrix)
Tools > Math/Formatter > hesaplama
Twilio > Send WhatsApp message
Airtable / Google Sheets > Create Record
Notifications / Slack (opsiyonel log)
---
7) n8n adım adım akış (detay)
n8n node akışı benzer, node isimleri:
1. Webhook (HTTP Request incoming) veya Twilio Trigger node.
2. Function / Switch node: kullanıcı oturum durumuna göre yönlendir.
3. HTTP Request (Google Geocode) → JSON parse (n8n otomatik).
4. If node: eğer birden fazla result → send back options (WhatsApp Cloud HTTP Request).
5. HTTP Request (Distance Matrix) → Function node ile ücret hesapla (JS):
const km = items[0].json.distance.value / 1000;
const minutes = items[0].json.duration.value / 60;
const fare = 10 + km*3 + minutes*0.5;
return [{ json: { fare: Math.round(fare*100)/100, km, minutes } }];
6. WhatsApp send: Twilio node veya HTTP Request node (WhatsApp Cloud).
7. DB: PostgreSQL, Airtable, Google Sheets node ile kayıt.
8. Error workflow: n8nde hata çıkışı ayrı workflowa bağlanarak loglayın.
---
8) Veri modeli (basit)
requests tablosu / satırı:
id
user_whatsapp_number
pickup_address_raw
pickup_lat, pickup_lng
destination_address_raw
dest_lat, dest_lng
pickup_time (ISO string)
distance_m, duration_s
fare_calculated
status (pending, confirmed, canceled, completed)
created_at, updated_at
---
9) Örnek hesaplama & örnek JSON (Distance Matrix parse)
Distance Matrix mock response (kısa):
{
"rows": [{
"elements":[
{
"distance": {"text":"12.1 km","value":12100},
"duration": {"text":"15 mins","value":900},
"status":"OK"
}
]
}]
}
Hesap (örnek):
km = 12100 / 1000 = 12.1
dakika = 900 / 60 = 15
ücret = 10 + 12.13 + 150.5 = 10 + 36.3 + 7.5 = 53.8 → 53.80 ₺
---
10) Mesaj şablon örnekleri (WhatsApp)
Alım adresi isteği (template):
Merhaba! Alınacağınız adresi yazar mısınız? (örn. "Vatan Cad. No:5, İstanbul")
Konum doğrulama:
Bu adresi kastettiniz mi? [Adres metni] (Evet / Hayır)
Fiyat teklifi:
Mesafe: 12.1 km, Tahmini süre: 15 dk. Tahmini ücret: 53.80 ₺. Onaylıyor musunuz? (Buton: Onayla / İptal)
---
11) Hata senaryoları & çözümler
Adres bulunamadı → kullanıcıya adres bulunamadı, lütfen daha ayrıntılı yazınız veya konum paylaşın mesajı.
Google API limit/timeout → kullanıcıya nazik hata, opsiyonel SMS veya callback seçeneği; teknik ekip için alert (Slack/email).
Yanlış koordinat → kullanıcıdan tekrar doğrulama (harita linki göster).
Kullanıcı iptali → oturumu temizle veya status = canceled yap.
---
12) Test & QA
Unit testler: fare hesaplama (çeşitli mesafeler/süreler).
Entegrasyon testleri: WhatsApp ↔ Make/n8n ↔ Google API (mock + gerçek).
Kullanıcı kabul testi: farklı adres türleri (sokak adı, cadde + bina no, landmark).
Rate limit testi: eşzamanlı istek sayısını test et.
---
13) Üretime alma & izleme
API anahtarları güvenli saklanmalı; Make/n8n credential store kullanın.
İzleme: API hata oranı, başarısız hesaplama oranı, ort. yanıt süresi.
Loglama: her isteğin Google yanıtı, ücret hesaplama sonucu ve kullanıcı onayı saklanmalı.
Yedekleme: DB snapshotları, günlük rapor.
---
14) Opsiyonel iyileştirmeler / ileri seviye
Gerçek zamanlı sürücü atama (sürüş yönetim sistemi entegrasyonu).
Fiyat dinamikleri: yoğunluğa göre surge pricing.
Ön hesaplama için harita trafik verisi: Distance Matrix departure_time parametresi ile tahmini süreyi daha hassas al.
Kullanıcıya harita önizlemesi gönder (Google Maps link veya statik map image).
Çoklu durak desteği (multi-destination).
---
15) Hızlı checklist yapılacaklar (uygulama adımları)
1. WhatsApp provider seç (Twilio veya Meta Cloud).
2. Google Cloud hesabı, Maps API (Geocoding, Distance Matrix) etkinleştir, API key alın.
3. Make.com veya n8n ortamını hazırla; credentials ekle.
4. Basit akışı kur: incoming WhatsApp → adres al → geocode → distance → hesap → teklif göster → onay → kayıt.
5. Test et (özellikle adres varyasyonları).
6. Hata/limit senaryolarını ekle.
7. Prod domain / webhook ve güvenlik (HTTPS) ayarla.
8. İzleme & logging ekle.
---
16) Ek: Örnek HTTP Distance Matrix çağrısı (kopyala-yapıştır)
GET https://maps.googleapis.com/maps/api...ncematrix/json
?origins=41.008237,28.978359
&destinations=41.015137,28.979530
&mode=driving
&departure_time=now
&key=YOUR_API_KEY
---