WhatsApp Cloud API ile müşterilerinizden sesli arama alabilir ve izin veren müşterileri arayabilirsiniz. Ses, sizin WebRTC ucunuz ile Meta arasında doğrudan akar. Veri Merkezi yalnız sinyal verisini (SDP) iletir; sesi taşımaz ve kaydetmez.
#Ön koşullar
- Numara yalnız API'ye bağlı olmalıdır. Telefondaki WhatsApp Business uygulamasıyla birlikte kullanılan (coexistence) numaralarda Meta aramayı desteklemez.
- Günlük mesajlaşma limiti en az 2.000 kişi olmalıdır.
- Müşteriyi aramak için WhatsApp hesabında geçerli bir ödeme yöntemi bulunmalıdır. Müşterinin sizi araması ücretsizdir.
- İşletme başlatmalı arama bazı ülke kodlarında kullanılamaz (ABD/Kanada +1, Mısır +20, Vietnam +84, Nijerya +234).
GET /numbers/{phone_number_id}/calling yanıtındaki eligibility alanı bu koşulları Türkçe açıklamalarla kontrol eder.
#Aramayı açın
curl -X PATCH https://api.verimerkezi.app/wa/numbers/1234567890/calling \
-H "Authorization: Bearer $VM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"callback_permission": true,
"call_icon_visibility": "DEFAULT",
"call_hours": {
"status": "ENABLED",
"timezone_id": "Europe/Istanbul",
"weekly_operating_hours": [ { "day_of_week": "MONDAY", "open_time": "0900", "close_time": "1800" } ]
}
}'Yalnız gönderdiğiniz alanlar değişir. Numara coexistence ise ya da limit 2.000'in altındaysa istek Meta'ya gitmeden 422 döner ve hata gövdesinde eligibility bulunur.
#Gelen arama
- Müşteri aradığında
call.connectolayı gelir:direction: "user_initiated"vesdp_offerdolu. - WebRTC ucunuzda teklifi uygulayıp bir SDP yanıtı üretin.
- İsteğe bağlı olarak bağlantıyı önceden kurmak için
pre_accept, ardındanacceptçağırın. - Görüşme bitince
call.terminateolayı gelir. Açmazsanız arama cevapsız olur.
curl -X POST "https://api.verimerkezi.app/wa/calls/wacid.HBgLOTA1NTUxMjM0NTY3FQIAEhggQkE1/accept" \
-H "Authorization: Bearer $VM_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "sdp_answer": "v=0\r\no=- 4611731400430051336 2 IN IP4 127.0.0.1\r\n..." }'Reddetmek için POST /calls/{call_id}/reject, kapatmak için POST /calls/{call_id}/terminate kullanın. call_id değerini URL-kodlayın; içinde / varsa yol yerine _ yazıp gövdede call_id gönderin.
Her eylem arama kimliği ve eylem bazında idempotenttir: aynı eylemi tekrar gönderirseniz ilk sonuç Idempotent-Replay: true ile döner.
#Müşteriyi arayın
Önce müşteriden arama izni alın:
curl -X POST https://api.verimerkezi.app/wa/calls/permission-request \
-H "Authorization: Bearer $VM_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "phone_number_id": "1234567890", "to": "905550000000", "body": "Siparişiniz hakkında sizi arayabilir miyiz?" }'- Yanıt
call.permission_replyolayıyla gelir. - İzin durumunu
GET /calls/permission?phone_number_id=...&to=...ile sorgulayın:no_permission,temporary(7 gün) ya dapermanent. - Aynı kişiye 24 saatte 1, 7 günde 2 izin isteği gönderilebilir. İstek, 24 saat penceresi açıkken gider.
- İzin isteği 1 mesaj kredisi düşer; başarısızsa iade edilir.
İzin varsa aramayı başlatın:
curl -X POST https://api.verimerkezi.app/wa/calls \
-H "Authorization: Bearer $VM_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "phone_number_id": "1234567890", "to": "905550000000", "sdp_offer": "v=0\r\n...", "biz_opaque": "crm-ticket-42" }'Ardından call.status (ringing, accepted, rejected) ve Meta'nın yanıtıyla call.connect (sdp_answer) gelir. Başlattığınız aramada yalnız terminate eylemi kullanılabilir.
#Ücretlendirme
- Arama eylemleri mesaj kredisi düşmez.
- İşletme başlatmalı aramaları Meta 6 saniyelik dilimlerle doğrudan faturalar.
billable_pulsesalanı yalnız bilgi amaçlıdır. - Müşterinin sizi araması ücretsizdir.
#Gizlilik
- SDP (IP ve ICE bilgisi)
call.connectolayının ilk teslimatında tam gider; teslimden sonra, en geç 1 saat içinde kayıtlarda maskelenir. Yeniden teslim edilencall.connectolayında SDP yoktur. POST /privacy/erasure, arama kayıtlarındaki kişi numarasını da siler.
#Geçmiş
curl "https://api.verimerkezi.app/wa/calls?phone_number_id=1234567890&limit=20" \
-H "Authorization: Bearer $VM_API_KEY"Süzgeçler: phone_number_id, from / to (ISO 8601 tarih aralığı), peer, limit, cursor.
call.*) * aboneliğine dahil değildir; açıkça seçin.Tüm alanlar ve hata kodları: Aramalar referansı.
