Wow! WhatsApp entegrasyonunuzu oluşturun. Ücretsiz başlayın. Şimdi Kaydol
Otelde uzaktan check-in · WhatsApp API kullanım senaryosu

Misafir kimlik yüklemesinden sonra WhatsApp’ta kapı kodu yanıtı gönderin

Misafirler pasaport veya kimlik belgesini gönderdikten sonra kapı erişim kodu aynı sohbete gelince uzaktan check-in’i tamamlar. Belge otel kanalınıza düştüğünde backend’iniz dosyayı alabilir, rezervasyona göre kabul edebilir ve kodu Whapi.Cloud üzerinden sıradan sohbet metni olarak gönderebilir. Bu senaryo, entegratörlere WhatsApp API ile bu akışı nasıl kuracaklarını gösterir.

messages.post üzerinde gelen belge ile tetiklenir Kapı kodu misafire sohbet metni olarak gönderilir
Rezervasyon kaydı olan bir otel dizüstü bilgisayarı yanında, misafir pasaport belgesinin kapı erişim kodu yanıtının üstünde göründüğü bir telefon WhatsApp sohbeti.
Kullanım senaryosu

Bu akışı ne zaman kullanmalısınız

Pasaport veya kimlik WhatsApp belgesi olarak gelir

Rezervasyonu olan bir misafir tarama veya fotoğrafı tesis kanalına gelen belge olarak gönderdiğinde bu akışı kullanın; personelin her gelişte resepsiyonda kâğıt topladığı durumlar için değil.

Kapı kodu belge kabulünü beklemelidir

Backend’inizin erişim kodunu yalnızca dosya alındıktan ve rezervasyonla eşleştirildikten sonra üretip göndermesi gerektiğinde bu akışı kullanın — kimlik kabul edilmeden önce kod göndermeyin.

Geç veya personelsiz gelişler yine erişim ister

Tesisin mesai dışı veya uzaktan check-in için her gelişte tam bir resepsiyon açık tutmadan sohbette kapı kodu vermesi gerektiğinde bu akışı kullanın.

Telefonda WhatsApp sohbeti: misafir pasaport belgesinin üstünde, otel kapı erişim kodunu içeren bir yanıt.
Müşteri deneyimi

Misafir kapı kodunu sohbette alır

Otomasyon öncesinde misafir kapıda bekler veya resepsiyona yazar; biri rezervasyonu bulur, pasaportu kontrol eder ve erişim kodunu elle yazar — çoğu zaman mesai dışında.

Akış çalıştıktan sonra misafir, kimlik belgesini gönderdiği aynı WhatsApp sohbetinde kapı erişim kodunu görür. Entegratörler bu sonucu WhatsApp API ile kurar.

İş akışı

Kimlik belgesinden kapı koduna

1

Gelen misafir belgesi

Kanal, type document (pasaport veya kimlik) ile bir messages.post webhook’u yayınlar. Payload’da MediaID olarak document.id, Auto Download açıksa isteğe bağlı document.link ve misafirin from / chat_id değerleri vardır. Whapi.Cloud rezervasyon veya kilit mantığınızı çalıştırmaz.

2

Yüklenen kimlik dosyasını alın

GET /media/{MediaID}

getMedia, MediaID ile bulut depolamadan dosyayı indirir; böylece backend’iniz rezervasyona göre kabul edebilir. Auto Download zaten kullanılabilir bir bağlantı verdiyse o URL’yi de çekebilirsiniz; ancak bu iş MediaID alma adımını yine de adlandırır.

3

Kapı erişim kodunu gönderin

POST /messages/text

own_backend belgeyi kabul edip kodu ürettikten sonra sendMessageText bu kodu misafir telefonuna veya chat id’ye sıradan metin olarak gönderir.

Teslimat takibi gerekir mi? Başarılı bir gönderim yanıtı, misafirin kapı koduna zaten sahip olduğunu kanıtlamaz. Sonraki ack’leri teslimat webhook’larında izleyin. Teslimat durumu hakkında bilgi alın →

Ön koşullar

Akışı çalıştırmadan önce

Misafirlerin check-in belgeleri için kullandığı WhatsApp numarasını bağlayın ve her isteği o numaranın API token’ı ile kimlik doğrulayın. Rezervasyon eşleştirme, kapı kodu üretimi ve resepsiyon uyarıları backend’inizde kalır.

İsteğe bağlı — bu akış için derinleşin

API uygulaması

Medyayı alan ve kodu gönderen çağrılar

Webhook’unuz misafiri ve belge MediaID’sini zaten adlandırdı. Bu çağrılar dosyayı alır, ardından backend’inizin kabulden sonra ürettiği kapı erişim kodunu iletir.

whapi.cloud’da kaydolduktan sonra API token’ınızı ücretsiz alın ve örneklerdeki Your_Token yerine kodda onu kullanın.

Yüklenen kimlik dosyasını alın

Gelen belge webhook’undan MediaID ile misafir pasaport veya kimlik dosyasını indirin; own_backend kabul edebilsin.

curl --request GET \
     --url https://gate.whapi.cloud/media/{MediaID} \
     --header 'accept: application/json' \
     --header 'authorization: Bearer Your_Token'
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://gate.whapi.cloud/media/{MediaID}",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "authorization: Bearer Your_Token"
  ],
]);

$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests

url = "https://gate.whapi.cloud/media/{MediaID}"
headers = {
    "accept": "application/json",
    "authorization": "Bearer Your_Token"
}

response = requests.get(url, headers=headers)
print(response.content)
const response = await fetch('https://gate.whapi.cloud/media/{MediaID}', {
  method: 'GET',
  headers: {
    accept: 'application/json',
    authorization: 'Bearer Your_Token',
  },
});

console.log(await response.arrayBuffer());
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://gate.whapi.cloud/media/{MediaID}")
  .get()
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer Your_Token")
  .build();

Response response = client.newCall(request).execute();
using RestSharp;

var options = new RestClientOptions("https://gate.whapi.cloud/media/{MediaID}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
var response = await client.GetAsync(request);

Console.WriteLine("{0}", response.Content);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://gate.whapi.cloud/media/{MediaID}", nil)
	req.Header.Set("accept", "application/json")
	req.Header.Set("authorization", "Bearer Your_Token")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}

Kapı erişim kodunu gönderin

Belge kabul edildikten sonra üretilen kapı erişim kodunu aynı misafire sıradan sohbet metni olarak gönderin.

curl --request POST \
     --url https://gate.whapi.cloud/messages/text \
     --header 'accept: application/json' \
     --header 'authorization: Bearer Your_Token' \
     --header 'content-type: application/json' \
     --data '
{
  "to": "447123456789",
  "body": "Your door access code is 482915"
}
'
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://gate.whapi.cloud/messages/text",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"to\":\"447123456789\",\"body\":\"Your door access code is 482915\"}",
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "authorization: Bearer Your_Token",
    "content-type: application/json"
  ],
]);

$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests

url = "https://gate.whapi.cloud/messages/text"
payload = {
    "to": "447123456789",
    "body": "Your door access code is 482915"
}
headers = {
    "accept": "application/json",
    "authorization": "Bearer Your_Token",
    "content-type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
const response = await fetch('https://gate.whapi.cloud/messages/text', {
  method: 'POST',
  headers: {
    accept: 'application/json',
    authorization: 'Bearer Your_Token',
    'content-type': 'application/json',
  },
  body: JSON.stringify({
    to: '447123456789',
    body: 'Your door access code is 482915',
  }),
});

console.log(await response.text());
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"to\":\"447123456789\",\"body\":\"Your door access code is 482915\"}");
Request request = new Request.Builder()
  .url("https://gate.whapi.cloud/messages/text")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer Your_Token")
  .addHeader("content-type", "application/json")
  .build();

Response response = client.newCall(request).execute();
using RestSharp;

var options = new RestClientOptions("https://gate.whapi.cloud/messages/text");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
request.AddHeader("content-type", "application/json");
request.AddJsonBody(new { to = "447123456789", body = "Your door access code is 482915" });
var response = await client.PostAsync(request);

Console.WriteLine("{0}", response.Content);
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
)

func main() {
	body := []byte(`{"to":"447123456789","body":"Your door access code is 482915"}`)
	req, _ := http.NewRequest("POST", "https://gate.whapi.cloud/messages/text", bytes.NewReader(body))
	req.Header.Set("accept", "application/json")
	req.Header.Set("authorization", "Bearer Your_Token")
	req.Header.Set("content-type", "application/json")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}
Teslimat durumu

Kapı kodu metni pending durumundan çıktığında

Başarılı bir gönderim yanıtı, misafirin mesajı zaten aldığı anlamına gelmez. Webhook öncesi görünen ilk durum pending’dir. Sonraki durum değişiklikleri yalnızca statuses.post ve statuses.put ile gelir. Durum pending’de kalır ve sent, delivered veya sonraki bir ack’e geçmezse mesaj teslim edilmemiştir — payload’ı ve hesabın o türü gönderme iznini kontrol edin.

  • Takılı bir pending’i teslim edilmemiş sayın; bir saat veya webhook bekleyen kuyruk gibi değil.

  • Kapı kodu metni için gönderildi, teslim edildi veya okundu onayı gerektiğinde statuses.post ve statuses.put abonesi olun.

  • WhatsApp durumu pending iken tesis erişimini açmayın veya check-in’i tamamlanmış işaretlemeyin.

Teslimat ve webhook’lar hakkında ne okumalı

Bir şey ters gittiyse desteğe yazın
Bir şey bozulduğunda

Hataları her adımda yönetin

Belge webhook’unda kullanılabilir MediaID yoksa, getMedia başarısız olur veya dosya süresi dolmuşsa, own_backend belgeyi reddeder ya da kod üretemezse, veya sendMessageText başarısız olur ya da teslim edilmezse yeniden deneyin veya resepsiyonu uyarın ve check-in’i tamamlanmış saymayın.

Belge geldi ama misafir hiç kod almadı mı?

Rezervasyon kabulünü WhatsApp teslimatından ayrı tutun. Eksik MediaID’yi düzeltin, getMedia veya sendMessageText’i yeniden deneyin ya da resepsiyonu uyarın — misafirin hâlâ kodu yokken kapıyı açmayın veya uzaktan check-in’i bitmiş işaretlemeyin. Yeniden denemeden sonra gönderim hâlâ başarısızsa kanal id’si ve başarısız istek id’si ile Whapi desteğine yazın.

Bir şey ters gittiyse desteğe yazın

API adımına göre sorun giderin

Durum Ne anlama gelir Ne yapmalı
400 Wrong request parameters Yeniden denemeden önce MediaID yolundaki yanlış istek parametrelerini düzeltin.
404 Specified media not found Belge webhook’undaki MediaID’nin bulut depolamada hâlâ var olduğunu doğrulayın; sonra yeniden deneyin veya misafirden dosyayı yeniden göndermesini isteyin.
500 Internal Error
Durum Ne anlama gelir Ne yapmalı
400 Wrong request parameters Yeniden denemeden önce gönderim gövdesindeki yanlış istek parametrelerini düzeltin.
401 Need channel authorization for send message Kanalı mesaj göndermek için yetkilendirin, sonra geçerli bir token ile yeniden deneyin.
402 Trial version limit exceeded
403 It is forbidden to send to this group/recipient Bu alıcıya gönderimin izinli olduğunu doğrulayın, sonra düzeltilmiş to değeriyle yeniden deneyin.
413 Request body too large
429 Too many requests Çok fazla istekten sonra yavaşlayın ve daha sonra yeniden deneyin.
500 Internal Error
SSS

Uzaktan check-in ve kapı kodu

Hayır. Pasaportu rezervasyonla eşleştirme, kapı kodu üretme, resepsiyonu bilgilendirme ve kapıyı açma backend’inizde kalır. Bu sayfa WhatsApp belge alma ve kapı kodu metni gönderme adımlarını kapsar.
Gelen belge webhook’undan. Operatör örneğinde document.id, getMedia’ya verilen MediaID’dir. Auto Download açıksa aynı payload’da doğrudan çekebileceğiniz geçici bir document.link de olabilir.
Katalogdaki failure_mode’u izleyin — check-in’i tamamlanmış işaretlemeyin, başarısız adımı yeniden deneyin veya resepsiyonu uyarın; medya alma veya teslimat bozukken o misafir için erişimi açmayın.
Hayır. Bu iş, kişisel sohbette misafir kimlik belgesinden sonra otelcilik uzaktan check-in’idir. Resmi kimlik doğrulama ürün sayfası değildir ve tek kullanımlık giriş kodu teslimatı değildir.
Operatör hikâyesi pasaportun fotoğrafına veya taramasına izin verir. Webhook filtrelerinizi tesisin kabul ettiği ek türlerine göre ayarlayın; MediaID’niz olduktan sonra alma ve yanıtlama kalıbı aynı kalır.
Desteklenen WhatsApp Özellikleri

WhatsApp otomasyonları oluşturmak için ihtiyacınız olan her şey

Whapi.Cloud; mesajlaşma, medya, gruplar, kanallar, webhook’lar ve daha fazlası dahil olmak üzere WhatsApp’ın tüm özelliklerine erişim sağlar. Özellik kısıtlamaları olmadan botlar, otomasyonlar ve entegrasyonlar oluşturun.

Geliştiricilerin tercihi

3.300+ geliştirici ve SaaS ekibi tarafından güveniliyor

Dünya genelindeki geliştiriciler, otomasyonlar, botlar, CRM entegrasyonları, toplu mesaj araçları ve gelişmiş WhatsApp iş akışları oluşturmak için Whapi.Cloud'a güveniyor. Altyapımız her ay yüksek kararlılıkla milyonlarca API isteği işliyor — ve bu sayı giderek artıyor.

Özellik simgesi

5,5K+

aktif API kanalı

Özellik simgesi

21M+

aylık API isteği

“Her şey basit, sezgisel ve kullanımı kolay. Dokümantasyon net ve gerekli tüm bilgiler elimizin altında. Harika iş.”

Roberto K. / Web Geliştirici

“WhatsApp'ı n8n kullanarak iş akışlarımıza sadece birkaç dakikada bağladık. Kod yok, karmaşa yok — her şey ilk denemede çalıştı.”

Martin P. / Geliştirici

“Whapi.Cloud, müşteri iletişimimizin önemli bir parçası haline geldi. Ürün güncellemelerini, sipariş bildirimlerini ve destek mesajlarını Meta şablonlarına veya onaylara ihtiyaç duymadan otomatikleştirdik.”

Oscar T. / CTO

Dekoratif balon