3 min read
The webhook will process data per chatbot. Webhook will post chat log history records to your CRM in JSON format daily.
To set up a Webhook you must have been issued with a chat.smarterbot.ai logon (contact chat.smarterbot.ai Support if you do not already have this access):
chat.smarterbot.ai
Once the webhook URL is entered, the webhook Sign Key is automatically generated.
Gain confidence in the authenticity of your webhooks when you use a webhook signing key that mentioned above, a unique secret key shared between your application and chat.smarterbot.ai, to verify the events sent to your endpoints. The webhook signing key will produce theX-Webhook-Signature, which you can use to compare against an expected webhook signature, to verify events from chat.smarterbot.ai.
X-Webhook-Signature
When chat.smarterbot.ai sends your app a webhook, it will include theX-Webhook-Signature header in the following format:
X-Webhook-Signature: t=1492774577,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd
Compare the X-Webhook-Signature, prefixed by v1=, to the expected signature. If they match, then you can trust that the event payload was issued by chat.smarterbot.ai and has not been tampered with.
v1=
const crypto = require('crypto');// Your application's webhook signing keyconst webhookSigningKey = ({}).WEBHOOK_SIGNING_KEY;// Extract the timestamp and signature from the headerconst newoaksSignature = req.get('X-Webhook-Signature');const { t, signature } = newoaksSignature.split(',').reduce((acc, currentValue) => { const [key, value] = currentValue.split('='); if (key === 't') { // UNIX timestamp acc.t = value; } if (key === 'v1') { acc.signature = value } return acc;}, { t: '', signature: ''});if (!t || !signature) throw new Error('Invalid Signature');// Create the signed payload by concatenating the timestamp (t), the character '.' and the request body's JSON payload.const data = t + '.' + JSON.stringify(req.body);const expectedSignature = crypto.createHmac('sha256', webhookSigningKey).update(data, 'utf8').digest('hex');// Determine the expected signature by computing an HMAC with the SHA256 hash function.if (expectedSignature !== signature) { // Signature is invalid! throw new Error('Invalid Signature');}
When an event occurs, it is notified to your configured webhook URL. Push all chat logs of all chatbots owned by the previous day’s users at 2 o’clock every day (UTC time).
Notification Details – HTTP POST Request
Extra Request Headers
JSON Body
Example:
{ "Collection": [ { "SerialNumber": "59001dd73709417321c58b11693183a2", "Name": "test...", "StartTime": "2023-11-21T00:00:00Z", "EndTime": "2023-11-22T00:00:00Z", "Conversations": [ { "SessionID": 31302, "CreateTime": "2023-11-21T16:22:42.264484Z", "URI": "www.google.com", "Messages": [ { "Type": "AI", "Content": "Hi What can I help you with?" }, { "Type": "User", "Content": "make an appointment" }, { "Type": "AI", "Content": "Please select the date and time..." } ] } ] } ]}
JSON Body Description:
Data response: {"status":"success"} or {"status":"Success: test request received"} (case-sensitive,the return value required for a successful callback), returning other values is considered a failure. After failure, retry within 1 minute and 3 minutes.
{"status":"success"}
{"status":"Success: test request received"}
Your email address will not be published. Required fields are marked *
Comment *
Name *
Email *
Website
Save my name, email, and website in this browser for the next time I comment.
Post Comment