İçeriğe geç
Veri MerkeziVeri MerkeziAPI

Mesajlaşma

WhatsApp sesli aramalarını açın, gelen aramayı kabul edin, izin veren müşteriyi arayın ve arama olaylarını izleyin.

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

BASH
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

  1. Müşteri aradığında call.connect olayı gelir: direction: "user_initiated" ve sdp_offer dolu.
  2. WebRTC ucunuzda teklifi uygulayıp bir SDP yanıtı üretin.
  3. İsteğe bağlı olarak bağlantıyı önceden kurmak için pre_accept, ardından accept çağırın.
  4. Görüşme bitince call.terminate olayı gelir. Açmazsanız arama cevapsız olur.
BASH
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:

BASH
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_reply olayıyla gelir.
  • İzin durumunu GET /calls/permission?phone_number_id=...&to=... ile sorgulayın: no_permission, temporary (7 gün) ya da permanent.
  • 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:

BASH
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_pulses alanı yalnız bilgi amaçlıdır.
  • Müşterinin sizi araması ücretsizdir.

#Gizlilik

  • SDP (IP ve ICE bilgisi) call.connect olayının ilk teslimatında tam gider; teslimden sonra, en geç 1 saat içinde kayıtlarda maskelenir. Yeniden teslim edilen call.connect olayında SDP yoktur.
  • POST /privacy/erasure, arama kayıtlarındaki kişi numarasını da siler.

#Geçmiş

BASH
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.

Not Test anahtarıyla tüm arama eylemleri Meta'ya gitmeden simüle edilir. Arama olayları (call.*) * aboneliğine dahil değildir; açıkça seçin.

Tüm alanlar ve hata kodları: Aramalar referansı.

Bu sayfa işinize yaradı mı?

Sorunuz mu var? Destek talebi açın ya da [email protected] adresine yazın.