BELGELER/KANALLAR~ 12 DK OKUMA

BÖLÜM 03 · KANALLAR

Her kanalı bağlayın
tek bir gelen kutusunda.

Telegram, WhatsApp Cloud, Facebook Messenger ve Instagram DM — uçtan uca bağlandı. Aşağıdaki her adım, canlı Meta dashboard'ları ve Telegram Bot API'sine karşı doğrulanmıştır. Meta bir şeye bir ad veriyor ve biz başka diyorsak, ikisini de söyleriz.

§ 00İhtiyacınız olanlar

Her kanal 5–20 dakika sürer. İki yerde çalışacaksınız: kanalın kendi geliştirici konsolu (Telegram'ın BotFather'ı, Meta Developer Dashboard) ve EasyLiveChat workspace'inizdeki Kanallar ekranı — app.livechattools.com/channels.

Dört kanal da EasyLiveChat'ta aynı mimariyi paylaşır — kişi başına bir normalize edilmiş Conversation, bir gelen kutusu, bir yanıt kutusu. Farklar her sağlayıcının istediği kimlik bilgilerinde ve webhook imza şemasındadır.

ORTAK KAVRAMLAR

  • Webhook URL'si. EasyLiveChat entegrasyon başına bir tane üretir: https://api.livechattools.com/api/channels/webhook/{channel}/{integration-id}. Kanal adı küçük harfle. Bu URL'yi sağlayıcının dashboard'una yapıştırırsınız.
  • Verify token. Sağlayıcı, bu token ile webhook URL'nize bir kez GET handshake yapar; eşleşirse challenge'larını yansıtırız. EasyLiveChat entegrasyon oluşturulduğunda otomatik üretir — açın Entegrasyon ayarları.
  • App Secret (sadece Meta kanalları). Meta, her webhook POST'unu x-hub-signature-256 ile imzalar — Meta App'in App Secret'ı ile anahtarlanır, verify token ile değil. WhatsApp / Messenger / Instagram entegrasyonunu oluştururken bir kez yapıştırırsınız.

§ 01Telegram

Kurulumu en basit kanal. Telegram developer app veya business hesap istemez — sadece bir bot. Bot token'ları sonsuza dek geçerli ve tüm entegrasyon yaklaşık beş dakika sürer.

1. BotFather ile bir bot oluşturun

Telegram'ı açın ve bir sohbet başlatın — @BotFather. Şunu gönderin: /newbot, bir görüntü adı ve şu ile biten bir kullanıcı adı seçin: bot. . BotFather şu biçimde bir token döner: 1234567890:ABCdefGHI…. Kopyalayın.

2. EasyLiveChat'a bağlayın

Workspace'inizde Kanallar → Telegram Bot → Bağla'ya gidin. Bot token'ını yapıştırın. Herhangi bir görüntü adı seçin — sadece gelen kutusunda görünür. Gönderin.

Yeni satırda Entegrasyon ayarları'nı açarak Webhook secret'ı ve entegrasyonun callback URL'sini ortaya çıkarın.

3. Telegram'ı webhook'umuza yönlendirin

Telegram Bot API'sinin webhook için UI'si yoktur; şunu kullanarak ayarlarsınız: setWebhook. Aşağıdaki placeholder'ları bot token'ınız, integration ID ve webhook secret ile değiştirin, sonra bir kez çalıştırın:

bashTelegram webhook'unu kaydet
curl -X POST "https://api.telegram.org/bot${BOT_TOKEN}/setWebhook" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.livechattools.com/api/channels/webhook/telegram/${INTEGRATION_ID}",
    "secret_token": "${WEBHOOK_SECRET}",
    "allowed_updates": ["message", "edited_message"]
  }'

Telegram yanıtı: {"ok":true,"description":"Webhook was set"}. . Şununla doğrulayın: getWebhookInfo pending_update_count 0'a düşmeli.

4. Test edin

Telegram'da t.me/yourbot_username adresini açın, Başlat'a dokunun, herhangi bir mesaj gönderin. EasyLiveChat gelen kutunuzda 1 saniyeden kısa sürede gönderenin adı ve dil koduyla görünmeli. Dashboard'dan yanıtlayın — biraz sonra ziyaretçinin Telegram'ına ulaşır.

§ 02WhatsApp Cloud

Meta Cloud API neredeyse herkes için doğru seçim — tamamen hosted, ayda 1000 service conversation'a kadar ücretsiz, sizin tarafınızda sıfır altyapı isteyen tek WhatsApp transport'u. Kurulum Telegram'dan ağır, çünkü Meta production trafiği için bir developer app ve doğrulanmış business portfolio ister.

1. Bir Meta developer app oluşturun

Şuraya gidin: developers.facebook.com/apps → Create App. Ad, e-posta seçin, sonraki ekranda “Connect with customers through WhatsApp” use case'ini seçin. Bir Business Portfolio ekleyin — var olan biri veya değerlendirme için Meta'nın gömülü Test Business'ı.

App oluştuktan sonra Use Cases → Connect on WhatsApp → API Setup'ı açın. Bir Phone Number ID (Meta'nın ücretsiz verdiği test numarası, ya da eklediğinizde kendinizinki) ve bir Generate access token düğmesi göreceksiniz. Tıklayın, onaylayın ve çıkan token'ı kopyalayın. Phone Number ID'yi de kopyalayın.

Token ömrü. Generate düğmesi token'ı kısa ömürlüdür (yaklaşık 24 saat). Production için Business Settings → Users → System Users'da bir System User oluşturun, WhatsApp Business Account'u atayın ve whatsapp_business_messaging ve whatsapp_business_management izinleriyle süresiz bir token üretin.

2. App Secret'ı alın

Aynı Meta dashboard'da App settings → Basic'i açın. App Secret bir Show düğmesinin arkasında saklıdır — ortaya çıkarın ve kopyalayın. Bu, Meta'nın her webhook POST'unu imzalamak için kullandığı HMAC anahtarıdır. Olmazsa gelen mesajlarınız şu hata ile reddedilir: BAD_SIGNATURE.

3. WhatsApp'ı EasyLiveChat'a bağlayın

Kanallar → WhatsApp Cloud → Bağla. Görüntü adını (serbest), Phone Number ID, Access Token ve App Secret'ı doldurun. Gönderin. Otomatik üretilen webhook secret ve integration ID'yi kopyalamak için entegrasyon ayarlarını açın.

4. Meta'nın webhook'unu yapılandırın

Meta dashboard'a dönün, Use Cases → Connect on WhatsApp → Configuration'a gidin. Yapıştırın:

configMeta'da WhatsApp webhook yapılandırması
Callback URL : https://api.livechattools.com/api/channels/webhook/whatsapp/${INTEGRATION_ID}
Verify token : ${WEBHOOK_SECRET}

Verify and save'e tıklayın. Meta bir GET handshake gönderir — verify token eşleşirse challenge'ı yansıtırız. Aynı sayfada Webhook fields listesini bulun ve messages'ı Subscribed olarak açın. Bu toggle olmadan Meta webhook URL'sini kabul eder ama hiçbir şey teslim etmez.

5. Test alıcı ekleyin (sadece sandbox)

Meta'nın ücretsiz test numarasını kullanıyorsanız, gönderim yapabilmek için her alıcıyı önce allow-list'e eklemelisiniz. API Setup → To'da mesaj göndereceğiniz numarayı ekleyin — Meta doğrulama için 6 haneli OTP'yi SMS ile gönderir. Beş test alıcısına kadar izin verebilirsiniz. Gerçek business numaralarında bu kısıt yok.

§ 03Facebook Messenger

Messenger, WhatsApp ile aynı Meta App, App Secret ve webhook tesisatını kullanır — ama telefon numarası yerine bir Facebook Sayfası ile konuşur ve access token'lar Page Access Token'lardır, WhatsApp Business token değil.

1. Meta app'inize Messenger'ı ekleyin

WhatsApp için kullandığınız app'te (veya yenisinde) Use cases → Add use cases → Business messaging'i filtreleyin → Engage with customers on Messenger from Meta. Kaydedin. App artık iki ürünü yan yana barındırıyor.

2. Bir Facebook Sayfası bağlayın

Messenger from Meta → Messenger API Settings'i açın. Generate access tokens altında, No FB pages yet yanındaki Connect'e tıklayın. Meta hangi Sayfalara erişim verileceğini sorar — mesaj almak istediğinizi seçin, izinleri onaylayın, kaydedin.

Sayfa şimdi tek tıkla Page Access Token ve Page ID ile görünür. İkisini de kopyalayın. Page ID, EasyLiveChat'ta pageId olarak yapıştıracağınız değerdir.

3. Messenger'ı EasyLiveChat'a bağlayın

Kanallar → Messenger → Bağla. Page ID, Page Access Token ve WhatsApp için kullandığınız App Secret'ı doldurun. Gönderin ve yeni entegrasyonun webhook secret + ID'sini kopyalayın.

4. İki katmanlı webhook aboneliği

Messenger'da WhatsApp'ta olmayan bir tuhaflık var: herhangi bir şey teslim etmek için iki abonelik gerekir. Önce app seviyesinde abonelik — Messenger API Settings → Configure webhooks'a yapıştırın:

configMessenger app seviyesi webhook config
Callback URL : https://api.livechattools.com/api/channels/webhook/messenger/${INTEGRATION_ID}
Verify token : ${WEBHOOK_SECRET}

Verify and save'e tıklayın, sonra Webhook fields'i açın ve messages'ı etkinleştirin. Sonra Sayfa seviyesinde abonelik — bu UI'dan yapılamaz, şu curl'ü çalıştırın:

bashSayfayı app'e abone et
curl -X POST "https://graph.facebook.com/v20.0/${PAGE_ID}/subscribed_apps" \
  -d "subscribed_fields=messages,messaging_postbacks,message_deliveries,message_reads" \
  -d "access_token=${PAGE_ACCESS_TOKEN}"

Sayfa seviyesi abonelik olmadan Meta, app aboneliğinde {"success":true} döner ama webhook'u hiç ateşlemez. Her şeyin bağlı olduğunu şununla doğrulayabilirsiniz:

bashher iki abonelik katmanını doğrula
curl "https://graph.facebook.com/v20.0/${APP_ID}/subscriptions?access_token=${APP_ID}|${APP_SECRET}"

Yanıt page tipinde bir nesne listelemeli, içeren boş olmayan fields dizisiyle — messages.

§ 04Instagram DM

Instagram mesajlaşması aynı Messenger Platform borularından geçer ama iki gereksinim ekler: Instagram hesabı bir Business hesap olmalı (kişisel veya Creator değil) ve aynı Business Portfolio'daki bir Facebook Sayfası'na bağlı olmalı. İkisi de gerçek olduğunda, Page Access Token'ınız aynı zamanda Instagram access token'ınızdır.

1. IG hesabını Business'a çevirin

Instagram mobil uygulamasında: Ayarlar → Hesap → Profesyonel hesaba geç → İşletme. Herhangi bir kategori. Çevirme geri alınabilir.

2. IG hesabını Business Portfolio'nuza ekleyin

Meta Business Suite Settings → Accounts → Instagram accounts → Add → IG bilgileriyle giriş yapın. Meta onaylar ve IG hesabının Instagram Business Account ID'sini gösterir — 17 haneli bir sayı, şununla başlar: 1784…. Kopyalayın; bu sizin pageId değerinizdir — EasyLiveChat entegrasyonu için.

3. IG'yi Facebook Sayfası'na bağlayın

Bu en çok atlanan adım. Facebook Sayfası'nın Inbox'ını Meta Business Suite'te açın — business.facebook.com/latest/inbox?asset_id={page_id}. Bir banner “Connect to Instagram” yazar ve bir Connect düğmesi sunar. Tıklayın, Instagram'a giriş yapın, istenen izinleri verin, onaylayın. Bundan sonra Meta'nın Graph API'si Sayfa'nın access token'ı kapsamında IG hesabıyla ilgili sorulara yanıt vermeye başlar.

4. Instagram'ı EasyLiveChat'a bağlayın

Kanallar → Instagram DM → Bağla. Adım 2'den Instagram Business Account ID'yi pageIdolarak, Messenger için kullandığınız aynı Page Access Token'ı pageAccessTokenolarak ve önceki App Secret'ı kullanın.

5. Her iki katmanda abone olun

Instagram, app seviyesi webhook'lar için object=instagram kullanır (Messenger object=page. kullanıyordu). Mevcut Messenger aboneliğinin üzerine bu curl'ü ekleyin:

bashapp'i Instagram mesajlarına abone et
curl -X POST "https://graph.facebook.com/v20.0/${APP_ID}/subscriptions" \
  -d "object=instagram" \
  -d "callback_url=https://api.livechattools.com/api/channels/webhook/instagram/${INTEGRATION_ID}" \
  -d "verify_token=${WEBHOOK_SECRET}" \
  -d "fields=messages,messaging_postbacks,message_reactions" \
  -d "access_token=${APP_ID}|${APP_SECRET}"
Geliştirme modu teslim kuralları. Meta app'iniz yayınlanmamışken Meta, Instagram webhook olaylarını sadece app admin, developer veya tester olan gönderenlerden teslim eder. Gerçek kullanıcılardan gelen rastgele DM'ler sessizce düşürülür. Ekip dışı biriyle test için onu App Dashboard → Roles → Roles'ta Tester olarak ekleyin ve daveti kabul etmesini sağlayın. Herhangi bir göndereni kabul etmek için app'i App Review ile yayınlamalısınız.

§ 05Sorun giderme

401 · BAD_SIGNATURE

Meta'nın POST imzası eşleşmedi. Neredeyse kesin olarak App Secret alanına yanlış değeri yapıştırdınız — bu, App settings → Basic'ten Meta App'in App Secret'ı olmalı, verify token veya Page Access Token değil. EasyLiveChat'ta Entegrasyon ayarlarını açın ve maskelenmiş App Secret değerinin 32 hex karakter olduğunu doğrulayın.

404 · UNKNOWN_CHANNEL

URL'deki kanal segmenti bilinen bir adapter ile eşleşmiyor. Küçük harfle yazın ( /whatsapp/ değil /WHATSAPP/) — route case-insensitive olsa da bazı ara katmanlar farklı normalize edebilir.

handshake geçer, mesaj gelmez

Meta kanalları için yukarıdaki subscriptions kontrolünü çalıştırın. İlgili nesnenin (page veya instagram veya whatsapp_business_account) fields dizisi boşsa, app kayıtlı ama hiçbir olaya abone değil — Webhook fields listesinde messages'ı yeniden açın.

access token süresi doldu (Meta)

Meta dashboard'daki Generate access token düğmesinden veya Graph API Explorer'dan alınan token'lar yaklaşık 24 saat yaşar. Demo'nun ötesinde herhangi bir şey için bir System User sağlayın ve doğru Page veya WhatsApp Business Account izinleriyle süresiz bir token üretin.

Telegram hiçbir şey teslim etmiyor

Şunu çalıştırın: getWebhookInfo — yanıt last_error_message alanı içerir. Yaygın değerler: “404 Not Found” (URL'de yanlış integration ID), “SSL handshake failed” (proxy / sertifika sorunu).

Bu makale faydalı oldu mu?

Düzenleme öner ↗