Webhooks, tawk.to içindeki olayların gerçek zamanlı bildirimlerini harici hizmetlere göndermenizi sağlar.
Aşağıdaki olaylarda gönderilecek bir web kancası yapılandırabilirsiniz:
Bir web kancası şunlardan oluşur:
Bir web kancası tetiklendiğinde, olay türüne özel bir JSON yükü ile birlikte yapılandırılan URL’ye bir POST isteği yapılacaktır.
Web kancaları, tawk.to panelindeki “Yönetim” bölümü aracılığıyla yönetilebilir.
Geri çağırma işlevleri, sayfa durumu değiştiğinde çağrılır. İşlev; çevrimiçi, dışarıda veya çevrimdışı olabilen durumu alacaktır. Bu geri çağırma, açılır sohbet penceresinde (popout) desteklenmez.
Sohbet:
Bilet:
Http uç noktası başarı dışında herhangi bir şeyle yanıt verirse (2XX) 12 saate kadar Web kancası çağrısı tekrar denenir. 30 saniye içinde herhangi bir yanıt alınmazsa, çağrı başarısız olarak kabul edilir ve yeniden denenir. Her web kancası olayına bir olay kimliği atanır. Olay kimliği, üstbilgilerdeki her istekle birlikte X-Hook-Event-Id olarak iletilir. Yeniden deneme durumunda olay kimliği aynı kalır.
Her web kancası olayı, web kancası gizli anahtarı kullanılarak Karma tabanlı (Hash-based) bir Mesaj Kimlik Doğrulama Kodu (HMAC) aracılığıyla imzalanır. HMAC-SHA1 algoritması, web kancası veri yükü imzasını oluşturmak için kullanılır. İmza, üstbilgilerdeki her istekle birlikte “X-Tawk-Signature” olarak iletilir.
const WEBHOOK_SECRET = 'webhook secret key';
const crypto = require('crypto');
function verifySignature (body, signature) {
const digest = crypto
.createHmac('sha1', WEBHOOK_SECRET)
.update(body)
.digest('hex');
return signature === digest;
};
app.post('/webhooks', function (req, res, next) {
if (!verifySignature(req.rawBody, req.headers['x-tawk-signature'])) {
// verification failed
}
// verification success
});
const WEBHOOK_SECRET = 'webhook secret key';
function verifySignature ($body, $signature) {
$digest = hash_hmac('sha1', $rawPost, WEBHOOK_SECRET);
return $signature !== $digest ;
}
if (!verifySignature(file_get_contents('php://input'), $_SERVER['HTTP_X_TAWK_SIGNATURE'])) {
// verification failed
}
// verification success
WEBHOOK_SECRET = 'webhook secret key';
post '/payload' do
request.body.rewind
body = request.body.read
signature = request.env['HTTP_X_TAWK_SIGNATURE']
unless verifySignature(body, signature))
// verification failed
end
// verification success
end
def verifySignature(body, signature)
digest = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), WEBHOOK_SECRET, body)
return digest == signature
end
Varlık | Tür | Açıklaman |
olay | String | Olay adı ‘chat:start’ |
sohbet kimliği | String | sohbet kimliği |
zaman | String | JSON formatında olayın oluşturulma tarihi ve saati |
mesaj | Object | Mesaj nesnesi (Aşağıya bakınız) |
ziyaretçi | Object | Varlık nesnesi (Aşağıya bakınız) |
varlık | Object | Varlık nesnesi (Aşağıya bakınız) |
Varlık | Tür | Açıklama |
metin | String | Mesajın metinsel gösterimi |
tür | String | Mesaj türü, sıralama değeri msg, file, webrtc-call |
gönderen | Object | Gönderen bilgisi nesnesi (Aşağıya bakınız) |
Varlık | Tür | Açıklama |
tür | String | Gönderen türü, sıralama değeri atemsilci, ziyaretçi, sistem |
Varlık | Tür | Açıklama |
isim | String | Ziyaretçinin adı |
e-posta | String | Ziyaretçi e-postası (İsteğe Bağlı) |
şehir | String | Zİyaretçinin şehri |
ülke | String | ISO 3166 biçiminde ziyaretçinin ülkesi |
Varlık | Tür | Açıklama |
kimlik | String | Varlık kimliği |
isim | String | Varlık adı |
{
event: 'chat:start',
chatId: '70fe3290-99ad-11e9-a30a-51567162179f',
time: '2019-06-28T14:03:04.646Z',
message : {
text : 'Sample message',
type : 'msg',
sender : {
type : 'visitor'
}
},
visitor: {
name: 'V1561719148780935',
email : 'hello@test.com',
city: 'jelgava',
country: 'LV'
},
property: {
id: '58ca8453b8a7e060cd3b1ecb',
name: 'Bobs Burgers'
}
}
GBir sohbet sonlandırıldığında oluşturulur
Sohbet olayı sonu yükü
Varlık | Tür | Açıklama |
olay | String | Olay adı chat:end |
sohbet kimliği | String | Sohbet kimliği |
zaman | String | JSON formatında olay oluşturulma tarih ve saati |
ziyaretçi | Object | Ziyaretçi nesnesi (Aşağıya bakınız) |
varlık | Object | Varlık nesnesi (Aşağıya bakınız) |
Varlık | Tür | Açıklama |
isim | String | Ziyaretçinin adı |
e-posta | String | Ziyaretçi e-postası (İsteğe Bağlı) |
şehir | String | Zİyaretçinin şehri |
ülkeü | String | ISO 3166 biçiminde ziyaretçinin ülkesi |
Varlık | Tür | Açıklama |
kimlik | String | Varlık kimliği |
isim | String | Varlık adı |
{
event: 'chat:end',
chatId: '70fe3290-99ad-11e9-a30a-51567162179f',
time: '2019-06-28T14:04:08.718Z',
visitor: {
name: 'V1561719148780935',
email : 'hello@test.com',
city: 'jelgava',
country: 'LV'
},
property: {
id: '58ca8453b8a7e060cd3b1ecb',
name: 'Bobs Burgers'
}
}
Yeni bir bilet oluşturulduğunda meydana gelir.
Bilet oluştur olay yükü
Varlık | Tür | Açıklama |
olay | String | Olay adı ‘ticket:create’ |
zaman | String | JSON formatında olay oluşturulma tarih ve saati |
talep eden | Object | Bilet talep eden nesnesi (aşağıya bakınız) |
varlık | Object | Varlık nesnesi (aşağıya bakınız) |
bilet | Object | Bilet nesnesi (aşağıya bakınız) |
Varlık | Tür | Açıklama |
isim | String | Ziyaretçi adı |
e-posta | String | Ziyaretçi e-postası (İsteğe Bağlı) |
Varlık | Tür | Açıklama |
kimlik | String | Varlık kimliği |
isim | String | Varlık adı |
Varlık | Tür | Açıklama |
kimlik | String | Bilet kimliği |
kullanıcı kimliği | Number | Kullanıcı kimliği |
konu | String | Biletin konusu |
mesaj | String | Bilet mesaj içeriği |
{
event: 'ticket:create',
time: '2019-06-28T14:07:13.512Z',
property: {
id: '58ca8453b8a7e060cd3b1ecb',
name: 'Bobs Burgers'
},
requester: {
name: 'Martins',
email: 'martins@tawk.to',
type: 'agent'
},
ticket: {
id: '02598050-99ae-11e9-8887-97564881b95b',
humanId: 3,
subject: 'Testing',
message: 'Once more through the breach'
}
}