Webhook Referansı.

Panelde tanımladığınız webhook adresine hangi olayların, hangi alanlarla gönderildiğinin tam listesi — gerçek alan adları, temsili değerler.

Nasıl Çalışır

Bir olay gerçekleştiğinde Cxperium, panelde kayıtlı adresinize tek bir HTTP isteği gönderir. Gönderim tek yönlüdür; yanıt gövdeniz okunmaz. Webhook'lar Enterprise planda kullanılabilir.

MetotPOST
Content-Typeapplication/json
Beklenen yanıt2xx durum kodu; gövde serbest
Yeniden denemeYalnızca ağ hatasında 1 kez. HTTP 4xx/5xx yanıtlar yeniden denenmez.
Adresİnternetten erişilebilir, geçerli TLS sertifikalı bir HTTPS uç noktası. Sorgu parametreleri olduğu gibi korunur.

Panelden tanımlama: Webhook ekranında adresi girin, hangi olaylarda tetikleneceğini ve hangi anketleri kapsayacağını seçin, sonra bağlantıyı etkinleştirin. Adım adım anlatım için Webhook Entegrasyonu makalesine bakın. Sohbet ve talep olaylarının gitmesi için webhook'un anket erişimi "Tümü" olmalıdır.

API ile tanımlama: Aynı kaydı POST /api/webhook ile de oluşturup güncelleyebilirsiniz (adres eşleşirse günceller). Gövde alanları paneldeki alanlarla aynıdır:

webhook-tanimla.sh
curl -X POST https://api.cxperium.com/api/webhook \
  -H "apikey: $CX_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "webhook_adress": "https://ornek.com/cxperium-hook",
    "webhook_time": ["COMPLETED", "ANSWER_GRANTED", "TICKET_CREATED"],
    "access_survey": ["*"],
    "webhook_active": true
  }'

webhook_time olay kodlarının listesidir (aşağıdaki başlıklar). access_survey anket kimliklerinin listesidir; "*" tüm anketler demektir. Tanımlı webhook'ları GET /api/webhook ile listeler, DELETE /api/webhook ile (gövdede webhook_adress) silersiniz.

Her İstekte Bulunan Ortak Alanlar

Hangi olayı işlediğinizi event_status alanından ayırt edin. Kalan alanlar olaya özeldir.

AlanTipAçıklama
event_statusstringOlayın kodu. Aşağıdaki başlıkların her biri bir değerdir.
complated_timeISO 8601İsteğin gönderildiği an (UTC). Alan adı bu şekilde yazılır.
webhook_adressarrayBu olayı almak üzere eşleşen webhook tanımlarınız. Kendi yapılandırmanızın kopyasıdır; işlemenize gerek yoktur.

Kimlik alanlarının tamamı 24 karakterlik hexadecimal string, tarihlerin tamamı ISO 8601 UTC biçimindedir. Değeri olmayan alanlar JSON'a hiç yazılmaz; alanların varlığını kontrol ederek işleyin. Örneklerdeki "webhook_adress": [ … ] kısaltmadır.

Anket Olayları

Anket akışı olayları ortak bir yapı paylaşır: survey anketi, contact yanıtlayan kişiyi, questions o ana kadarki soru ve cevapları taşır.

AlanTipAçıklama
survey.id / survey.namestringAnket kimliği ve adı
survey.preDataobjectAnket linkine eklediğiniz sorgu parametreleri (örn. sipariş no). Link parametresiz açıldıysa yoktur.
contact.contactIdstringKişi kimliği
contact.namestringWhatsApp profil adı. Ankette "kişi bilgisi topla" kapalıysa maskelenmiş gelir (A**** Y*****).
contact.phonestringÜlke kodlu numara, artı işareti olmadan
questions[].idstringSoru kimliği
questions[].nameobjectSoru metni, dil koduna göre anahtarlanmış: {"TR": "...", "EN": "..."}
questions[].answerobjectSerbest metin sorularda {"text_reply": "..."}, buton/liste/yıldız sorularda {"button_reply": "..."}. Cevaplanmamış soruda alan yoktur.
start_timeISO 8601Olayın kuyruğa alındığı an

START — Anket başlatıldığında

Kişi anket linkine tıklayıp WhatsApp'tan ilk mesajı gönderdiğinde, ilk soru iletilmeden hemen önce. Bu aşamada hiçbir sorunun cevabı yoktur.

START.json
{
  "survey": { "id": "6650aabbccddeeff00112233", "name": "Müşteri Memnuniyet Anketi", "preData": { "orderId": "SP-99123" } },
  "contact": { "contactId": "6612cc33dd44ee55ff667788", "name": "A**** Y*****", "phone": "905321112233" },
  "questions": [
    { "id": "6650bbccddeeff0011223345", "name": { "TR": "Hizmetimizi 1-5 arası puanlar mısınız?" } },
    { "id": "6650bbccddeeff0011223346", "name": { "TR": "Eklemek istediğiniz bir şey var mı?" } }
  ],
  "event_status": "START",
  "start_time": "2026-09-07T09:45:12.512Z",
  "complated_time": "2026-09-07T09:45:12.740Z",
  "webhook_adress": [ … ]
}

ANSWER_GRANTED — Her soru cevaplandığında

Kişinin cevabı doğrulamadan geçip kaydedildiğinde. Ortak yapıya ek olarak yalnızca bu olayda instantReply bloğu bulunur; az önce cevaplanan soruyu tek başına verir.

AlanTipAçıklama
instantReply.questionIdstringAz önce cevaplanan sorunun kimliği
instantReply.questionTextobjectSoru metni, dil koduna göre
instantReply.answerstringKişinin yazdığı ya da seçtiği cevap, ham metin
instantReply.preDataobjectsurvey.preData ile aynı
ANSWER_GRANTED.json
{
  "survey": { "id": "6650aabbccddeeff00112233", "name": "Müşteri Memnuniyet Anketi", "preData": { "orderId": "SP-99123" } },
  "contact": { "contactId": "6612cc33dd44ee55ff667788", "name": "A**** Y*****", "phone": "905321112233" },
  "instantReply": {
    "questionId": "6650bbccddeeff0011223345",
    "questionText": { "TR": "Hizmetimizi 1-5 arası puanlar mısınız?" },
    "answer": "5",
    "preData": { "orderId": "SP-99123" }
  },
  "questions": [
    { "id": "6650bbccddeeff0011223345", "name": { "TR": "Hizmetimizi 1-5 arası puanlar mısınız?" }, "answer": { "button_reply": "5" } },
    { "id": "6650bbccddeeff0011223346", "name": { "TR": "Eklemek istediğiniz bir şey var mı?" } }
  ],
  "event_status": "ANSWER_GRANTED",
  "start_time": "2026-09-07T09:46:02.101Z",
  "complated_time": "2026-09-07T09:46:02.330Z",
  "webhook_adress": [ … ]
}

COMPLETED — Anket sona erdiğinde

Son soru cevaplanıp kapanış mesajı gönderildiğinde. Yapı START ile aynıdır; farkı questions içindeki tüm soruların answer alanının dolu olmasıdır.

COMPLETED.json
{
  "survey": { "id": "6650aabbccddeeff00112233", "name": "Müşteri Memnuniyet Anketi" },
  "contact": { "contactId": "6612cc33dd44ee55ff667788", "name": "A**** Y*****", "phone": "905321112233" },
  "questions": [
    { "id": "6650bbccddeeff0011223345", "name": { "TR": "Hizmetimizi 1-5 arası puanlar mısınız?" }, "answer": { "button_reply": "5" } },
    { "id": "6650bbccddeeff0011223346", "name": { "TR": "Eklemek istediğiniz bir şey var mı?" }, "answer": { "text_reply": "Teşekkürler, çok memnun kaldım." } }
  ],
  "event_status": "COMPLETED",
  "start_time": "2026-09-07T09:47:40.000Z",
  "complated_time": "2026-09-07T09:47:40.212Z",
  "webhook_adress": [ … ]
}

LEAVE — Kişi anketten ayrıldığında

Kişi devam eden bir ankette çıkış komutu yazdığında ya da "Ayrıl" butonuna bastığında. Yapı START ile aynıdır; o ana kadar verilmiş cevaplar questions içinde bulunur. Bu olay yalnızca anket erişimi "Tümü" olan webhook'lara gider.

TIMEOUT — Anket süresi dolduğunda otomatik

Bitiş tarihi tanımlı bir anketin süresi dolmuşken kişi mesaj gönderdiğinde. Panelde ayrıca seçilmez; aktif tüm webhook'larınıza gider. İki biçimi vardır: kişi ankete daha önce başlamışsa yapı START ile aynıdır ve questions dolu gelir. Kişi süresi dolmuş bir linke ilk kez tıkladıysa questions alanı bulunmaz ve contact.contactId yer almaz:

TIMEOUT.json
{
  "survey": { "id": "6650aabbccddeeff00112233", "name": "Müşteri Memnuniyet Anketi" },
  "contact": { "name": "Ahmet Yılmaz", "phone": "905321112233" },
  "event_status": "TIMEOUT",
  "start_time": "2026-09-07T09:52:00.000Z",
  "complated_time": "2026-09-07T09:52:00.180Z",
  "webhook_adress": [ … ]
}

REPEATED — Tek kullanımlık anket tekrar açıldığında otomatik

"Tek kullanımlık" olarak işaretlenmiş bir anketi daha önce tamamlamış bir kişi aynı linke yeniden tıkladığında. Panelde ayrıca seçilmez; aktif tüm webhook'larınıza gider. Yapı, süresi dolmuş linkteki TIMEOUT ile aynıdır; yalnızca event_status değeri REPEATED olur.

SURVEY_FORM_CREATE_OR_UPDATE — Anket formu oluşturulduğunda veya değiştirildiğinde

Panelde bir anket oluşturulduğunda, anket ayarları kaydedildiğinde, bir soru düzenlendiğinde ya da bir buton/liste seçeneği eklenip silindiğinde. Her durumda anketin tam güncel tanımı gönderilir; hangi parçanın değiştiği ayrıca belirtilmez.

AlanTipAçıklama
result._id / result.namestringAnket kimliği ve adı
result.languagestringTR, EN, DE, FR, ES, IT, AR, HI, RU, PT_PT
result.keysstringAnket linkindeki kısa anahtar
result.startMessage / endMessagestringAçılış ve kapanış mesajları
result.disposablebooleanTek kullanımlık mı
result.collectUserInfobooleanKişi bilgisi toplanıyor mu
result.endDate / endDateActivedate / booleanBitiş tarihi ve aktif olup olmadığı
result.tagsarrayAnkete bağlı etiketler
result.transactions veya result.questionarraySıralı soru listesi. Anket ayarları kaydedildiğinde transactions, soru veya seçenek düzenlendiğinde question adıyla gelir. İkisini de aynı biçimde işleyin.
…[].typestringTEXT, INTERACTIVE, IMAGE, VIDEO, DOCUMENT, LOCATION
…[].text / header / footerstring veya objectSoru metni; çok dilli anketlerde dil koduna göre nesne
…[].response_typestringTEXT, NUMBER, EMAIL, DATE, TIME, NPS, STAR, LOCATION, MEDIA veya boş
…[].nextProcess_idstringSonraki soru; son soruda yoktur
…[].ordernumberSıra numarası, 0'dan başlar
…[].interactives[]arrayButon/liste seçenekleri: title, description, processGoTo_id (gidilecek soru ya da "end")
user_idstringHesap kimliğiniz
SURVEY_FORM_CREATE_OR_UPDATE.json
{
  "result": {
    "_id": "66a0f1e2d3c4b5a697887766",
    "name": "Müşteri Memnuniyet Anketi",
    "language": "TR",
    "keys": "Kd83Ba7Z",
    "disposable": false,
    "collectUserInfo": true,
    "startMessage": "Anketimize hoş geldiniz.",
    "endMessage": "Katılımınız için teşekkürler.",
    "firstProcess_id": "66a0f1e2d3c4b5a697887767",
    "tags": [ { "_id": "66b1c2d3e4f5a60718293a4b", "name": "memnuniyet" } ],
    "transactions": [
      {
        "_id": "66a0f1e2d3c4b5a697887768",
        "type": "INTERACTIVE",
        "header": "Değerlendirme",
        "text": "Hizmetimizden memnun kaldınız mı?",
        "response_type": "",
        "order": 1,
        "interactives": [
          { "_id": "66a0f1e2d3c4b5a697887780", "title": "Evet", "processGoTo_id": "end" },
          { "_id": "66a0f1e2d3c4b5a697887781", "title": "Hayır", "processGoTo_id": "66a0f1e2d3c4b5a697887769" }
        ]
      }
    ],
    "createdAt": "2026-09-07T11:14:58.442Z",
    "updatedAt": "2026-09-07T11:31:02.900Z"
  },
  "user_id": "6512b0f4a1c2d3e4f5a6b7c8",
  "event_status": "SURVEY_FORM_CREATE_OR_UPDATE",
  "complated_time": "2026-09-07T11:31:03.117Z",
  "webhook_adress": [ … ]
}

Talep (Ticket) Olayları

Talep olaylarında userId işlemi yapan panel kullanıcısını, userType ise bu kullanıcının ana hesap (NORMAL) mı alt kullanıcı (SUB) mı olduğunu belirtir.

TICKET_CREATED — Talep oluşturulduğunda

Panelden ya da API'den yeni bir talep açıldığında. Talebin tam kaydı createOneResult altında gelir.

AlanTipAçıklama
createOneResult._idstringTalep kimliği. Diğer talep olaylarındaki ticket_id ile eşleşir.
createOneResult.taskIdstringPanelde görünen talep numarası (1001'den başlar)
createOneResult.statusstringNEW, OPEN, PENDING, CLOSED
createOneResult.subject / messagestringKonu ve açıklama
createOneResult.priortystringÖncelik (alan adı bu şekilde yazılır)
createOneResult.contactIdstringTalebi açan kişinin kimliği
createOneResult.assigneeIdstringAtanan kullanıcı; atanmamışsa yoktur
createOneResult.dueDatedateSon tarih
createOneResult.tagsarrayEtiket kimlikleri
createOneResult.mediaNamearrayEklenen dosya adları
createOneResult.createdAtdateOluşturulma zamanı
TICKET_CREATED.json
{
  "createOneResult": {
    "_id": "665f1a2b3c4d5e6f70819200",
    "taskId": "1042",
    "status": "NEW",
    "subject": "Kargo gecikmesi",
    "message": "Siparişim 5 gündür elime ulaşmadı.",
    "priorty": "NORMAL",
    "contactId": "6612cc33dd44ee55ff667788",
    "tags": [ "66201122334455667788990a" ],
    "mediaName": [ "fatura.pdf" ],
    "comments": [],
    "createdAt": "2026-09-07T09:12:44.123Z",
    "updatedAt": "2026-09-07T09:12:44.123Z"
  },
  "userId": "6600aa11bb22cc33dd44ee55",
  "userType": "NORMAL",
  "event_status": "TICKET_CREATED",
  "complated_time": "2026-09-07T09:12:44.400Z",
  "webhook_adress": [ … ]
}

TICKET_STATUS_CHANGE — Talep durumu değiştiğinde

Bir talebin durumu NEW, OPEN, PENDING veya CLOSED olarak ayarlandığında. Alanlar: status (yeni durum), ticket_id, tagsId (talebin etiket kimlikleri), userId / userType.

TICKET_STATUS_CHANGE.json
{
  "status": "CLOSED",
  "ticket_id": "665f1a2b3c4d5e6f70819200",
  "tagsId": [ "66201122334455667788990a" ],
  "userId": "6600aa11bb22cc33dd44ee55",
  "userType": "NORMAL",
  "event_status": "TICKET_STATUS_CHANGE",
  "complated_time": "2026-09-07T10:02:10.000Z",
  "webhook_adress": [ … ]
}

TICKET_ASSIGNEE_CHANGE — Talep ataması değiştiğinde

Bir talep bir kullanıcıya atandığında. Alanlar: assigneeId (talebin atandığı kullanıcı), ticket_id, tagsId, userId / userType (atamayı yapan kullanıcı).

TICKET_ASSIGNEE_CHANGE.json
{
  "assigneeId": "6633445566778899aabbccdd",
  "ticket_id": "665f1a2b3c4d5e6f70819200",
  "tagsId": [ "66201122334455667788990a" ],
  "userId": "6600aa11bb22cc33dd44ee55",
  "userType": "NORMAL",
  "event_status": "TICKET_ASSIGNEE_CHANGE",
  "complated_time": "2026-09-07T10:05:00.000Z",
  "webhook_adress": [ … ]
}

TICKET_SEND_COMMENT_PANEL — Talebe yorum yazıldığında

Panelden ya da API'den bir talebe, kişiye gönderilen bir yorum eklendiğinde. "Dahili not" olarak işaretlenen yorumlar bu olayı tetiklemez; yoruma eklenen dosyalar payload'da yer almaz. Alanlar: message (yorum metni), ticket_id, taskId (adına rağmen talep numarası değil, talebin etiket kimlikleri), userId / userType.

TICKET_SEND_COMMENT_PANEL.json
{
  "message": "Kargo firmasıyla görüşüldü, yarın teslim edilecek.",
  "ticket_id": "665f1a2b3c4d5e6f70819200",
  "taskId": [ "66201122334455667788990a" ],
  "userId": "6633445566778899aabbccdd",
  "userType": "SUB",
  "event_status": "TICKET_SEND_COMMENT_PANEL",
  "complated_time": "2026-09-07T10:08:30.000Z",
  "webhook_adress": [ … ]
}

Sohbet Olayları

Canlı destek sohbetleri için olaylar. chat_id sohbet kimliğidir; contactId karşıdaki kişiyi, userId ve userType işlemi yapan temsilciyi belirtir.

CHAT_CREATED — Sohbet oluşturulduğunda

Panelden ya da API'den bir kişiyle sohbet başlatıldığında. Kişinin zaten açık bir sohbeti varsa yeni kayıt açılmaz, mevcut sohbet döner. Alanlar createOneResult altındadır: _id (sohbet kimliği), status (NEW, OPEN, PENDING, CLOSED), contactId, teamId, assigneeId (atanmamışsa yoktur), messages, tags, sessionTime.startTime.

CHAT_CREATED.json
{
  "createOneResult": {
    "_id": "667700112233445566778899",
    "status": "NEW",
    "contactId": "6612cc33dd44ee55ff667788",
    "teamId": "6644556677889900aabbccdd",
    "messages": [],
    "tags": [],
    "sessionTime": { "startTime": "2026-09-07T09:30:00.000Z" },
    "createdAt": "2026-09-07T09:30:00.000Z",
    "updatedAt": "2026-09-07T09:30:00.000Z"
  },
  "userId": "6600aa11bb22cc33dd44ee55",
  "userType": "NORMAL",
  "event_status": "CHAT_CREATED",
  "complated_time": "2026-09-07T09:30:00.250Z",
  "webhook_adress": [ … ]
}

CHAT_NORMAL_MESSAGE — Temsilci mesaj gönderdiğinde

Bir temsilci panelden kişiye metin mesajı gönderdiğinde tetiklenir (müşteriden gelen mesajlarda tetiklenmez). Mesajdaki satır sonları boşluğa çevrilir; mesaja eklenen medya payload'da yer almaz. Alanlar: message, chat_id, contactId, userId / userType.

CHAT_NORMAL_MESSAGE.json
{
  "message": "Merhaba, size nasıl yardımcı olabilirim?",
  "chat_id": "667700112233445566778899",
  "contactId": "6612cc33dd44ee55ff667788",
  "userId": "6600aa11bb22cc33dd44ee55",
  "userType": "SUB",
  "event_status": "CHAT_NORMAL_MESSAGE",
  "complated_time": "2026-09-07T09:31:12.000Z",
  "webhook_adress": [ … ]
}

CHAT_TEMPLATE_MESSAGE — Şablon mesajı gönderildiğinde

Bir temsilci sohbetten WhatsApp şablon mesajı gönderdiğinde. Şablonun içeriği payload'da yer almaz; sohbet kimliği bu olayda conversationId adıyla gelir.

CHAT_TEMPLATE_MESSAGE.json
{
  "conversationId": "667700112233445566778899",
  "userId": "6600aa11bb22cc33dd44ee55",
  "userType": "NORMAL",
  "event_status": "CHAT_TEMPLATE_MESSAGE",
  "complated_time": "2026-09-07T09:33:00.000Z",
  "webhook_adress": [ … ]
}

CHAT_STATUS_CHANGE — Sohbet durumu değiştiğinde

Bir sohbetin durumu elle değiştirildiğinde, temsilci NEW durumundaki bir sohbete ilk mesajı yazdığında (OPEN), kişi silindiği için sohbet kapatıldığında (CLOSED) ya da oturum zaman aşımıyla sohbet kapandığında (CLOSED). Alanlar: status, chat_id, contactId, userId / userType. Otomatik kapanışlarda userType bulunmayabilir.

CHAT_STATUS_CHANGE.json
{
  "status": "CLOSED",
  "chat_id": "667700112233445566778899",
  "contactId": "6612cc33dd44ee55ff667788",
  "userId": "6600aa11bb22cc33dd44ee55",
  "userType": "NORMAL",
  "event_status": "CHAT_STATUS_CHANGE",
  "complated_time": "2026-09-07T10:40:00.000Z",
  "webhook_adress": [ … ]
}

CHAT_ASSIGNEE_CHANGE — Sohbet ataması değiştiğinde

Bir sohbet başka bir temsilciye atandığında ya da atanmamış bir sohbete ilk yazan temsilci sohbeti üstlendiğinde. Alanlar: assigneeId, chat_id, contactId, userId / userType.

CHAT_ASSIGNEE_CHANGE.json
{
  "assigneeId": "6633445566778899aabbccdd",
  "chat_id": "667700112233445566778899",
  "contactId": "6612cc33dd44ee55ff667788",
  "userId": "6600aa11bb22cc33dd44ee55",
  "userType": "SUB",
  "event_status": "CHAT_ASSIGNEE_CHANGE",
  "complated_time": "2026-09-07T10:41:00.000Z",
  "webhook_adress": [ … ]
}

Gönderim Olayları

Toplu gönderimler tamamlandığında tek bir özet olay gelir. success ve failed alanları telefon numarası dizileridir; sayı almak için dizi uzunluğunu kullanın.

SURVEY_SENDING_COMPLETED — Anket gönderimi tamamlandığında

Bir anket gönderim oturumundaki tüm numaralara iletim denemesi bittiğinde. Alanlar: surveyName, success, failed, startingDate, endDate, preData (gönderime eklenen özel veri; yoksa alan bulunmaz).

SURVEY_SENDING_COMPLETED.json
{
  "surveyName": "Müşteri Memnuniyet Anketi",
  "success": [ "905321112233", "905334445566" ],
  "failed": [ "905559998877" ],
  "startingDate": "2026-09-07T08:00:00.000Z",
  "endDate": "2026-09-07T08:04:12.000Z",
  "event_status": "SURVEY_SENDING_COMPLETED",
  "complated_time": "2026-09-07T08:04:12.300Z",
  "webhook_adress": [ … ]
}

NOTIFICATION_SENDING_COMPLETED — Bildirim gönderimi tamamlandığında

Bir bildirim (şablon mesajı) gönderim oturumundaki tüm numaralara iletim denemesi bittiğinde. Yapı yukarıdakiyle aynıdır; anket adı yerine templateName gelir.

NOTIFICATION_SENDING_COMPLETED.json
{
  "templateName": "kampanya_eylul_2026",
  "success": [ "905321112233", "905334445566" ],
  "failed": [],
  "startingDate": "2026-09-07T08:00:00.000Z",
  "endDate": "2026-09-07T08:02:40.000Z",
  "event_status": "NOTIFICATION_SENDING_COMPLETED",
  "complated_time": "2026-09-07T08:02:41.000Z",
  "webhook_adress": [ … ]
}

Asistan Olayları

Yapay zekâ asistanı, niyetler (intent), yerelleştirme metinleri ve bilgi tabanı dosyalarıyla ilgili olaylar.

ASSISTANT_SESSION_TIMEOUT — Asistan oturumu zaman aşımına uğradığında

Bir kişinin asistan oturumu, tanımlı süre boyunca mesaj gelmediği için kapatıldığında. O kişiye ait açık sohbet varsa ayrıca CLOSED durumlu bir CHAT_STATUS_CHANGE gönderilir. Tek alan: contactId.

ASSISTANT_SESSION_TIMEOUT.json
{
  "contactId": "6612cc33dd44ee55ff667788",
  "event_status": "ASSISTANT_SESSION_TIMEOUT",
  "complated_time": "2026-09-07T12:00:05.000Z",
  "webhook_adress": [ … ]
}

ASSISTANT_INTENT_CHANGE — Asistan niyeti değiştiğinde

Panelde bir niyet oluşturulduğunda, güncellendiğinde ya da silindiğinde. Ne olduğunu place alanı söyler (CREATE, UPDATED, DELETED). Niyetin regex kuralları payload'da yer almaz; bu olayı genellikle önbellek tazelemek için kullanın. Alanlar: place, name (niyet adı), languageId (örn. tr-TR), userId.

ASSISTANT_INTENT_CHANGE.json
{
  "place": "UPDATED",
  "name": "siparis_durumu_sorgula",
  "languageId": "tr-TR",
  "userId": "6512b0f4a1c2d3e4f5a6b7c8",
  "event_status": "ASSISTANT_INTENT_CHANGE",
  "complated_time": "2026-09-07T11:45:02.117Z",
  "webhook_adress": [ … ]
}

ASSISTANT_LOCATION_CHANGE — Asistan yerelleştirmesi değiştiğinde

Asistan metinleri (yerelleştirme anahtarları) eklendiğinde, güncellendiğinde ya da silindiğinde. Alanlar place değerine göre değişir:

placeAlanlarAçıklama
CREATEcreatedData, userIdcreatedData eklenen anahtar listesidir: [{key, value, languageId}]
CREATE_STATICcreatedDataYeni bir dil tanımlandığında: {name, languageId, cultureCode}
UPDATEDkey, languageId, userIdDeğişen anahtar. Yeni değer payload'da yoktur; API'den okuyun.
DELETEDkey, userIdAnahtar tüm dillerden silindi
ASSISTANT_LOCATION_CHANGE.json
{
  "place": "UPDATED",
  "key": "welcome_message",
  "languageId": "tr-TR",
  "userId": "6512b0f4a1c2d3e4f5a6b7c8",
  "event_status": "ASSISTANT_LOCATION_CHANGE",
  "complated_time": "2026-09-07T11:45:02.117Z",
  "webhook_adress": [ … ]
}

FILE_UPLOAD_AGENT — Asistan bilgi dosyaları değiştiğinde otomatik

Yapay zekâ asistanına bilgi kaynağı olarak dosya yüklendiğinde, dosya silindiğinde ya da bir bilgi tabanı (stage) silindiğinde. Panelde ayrıca seçilmez; aktif webhook'larınıza gider. Webhook tanımında "Bu botun aldığı bilgi tabanları" seçimiyle hangi bilgi tabanlarının olaylarını alacağınızı daraltabilirsiniz. Ne olduğunu status alanı söyler:

statusAlanlarAçıklama
FILE_ADDEDstageId, files[], userIdfiles yeni eklenen dosyalardır: originalName, storageLink, mimeType, size (byte)
FILE_DELETEDstageId, file, userIdfile silinen tek dosya, aynı alanlarla
STAGE_DELETEDstageId, userIdBilgi tabanının tamamı silindi
FILE_UPLOAD_AGENT.json
{
  "status": "FILE_ADDED",
  "stageId": "66f1c2a9b4e5d6f7a8b9c0d1",
  "files": [
    {
      "originalName": "urun-katalogu-2026.pdf",
      "storageLink": "https://storage.cxperium.com/…/urun-katalogu-2026.pdf",
      "mimeType": "application/pdf",
      "size": 481920
    }
  ],
  "userId": "6512b0f4a1c2d3e4f5a6b7c8",
  "event_status": "FILE_UPLOAD_AGENT",
  "complated_time": "2026-09-07T11:45:02.117Z",
  "webhook_adress": [ … ]
}

Aradığınızı bulamadınız mı?

Teknik ekibimiz entegrasyonunuzda size eşlik etsin — sorunuzu iletin, aynı gün dönelim.

Türkçe teknik destek · Entegrasyon danışmanlığı ücretsiz