3 min read
The webhook will process data per chatbot. Webhook will post leads and appointment 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 any new leads and appointments immediately,
Notification Details – HTTP POST Request
JSON Body
Example:
{ // SerialNumber string Chatbot ID "SerialNumber": "59001dd73709417321c58b11693183a2", // Type string There are two types: Lead and Appointment "Type": "Lead", // FirstName string User First Name "FirstName": "David", // LastName string User Last Name "LastName": "Garcia", // Email string User's Email "Email": "test@qq.com", // PhoneNumber string User's phone number "PhoneNumber": "", // CreateTime string Creation time (UTC time) "CreateTime": "2023-11-23T18:36:21.512302Z", // Content string Remarks or appointment content "Content": "test", // SessionID int Session ID "SessionID": 31305, // URI string Source uri "URI": "www.google.com"}
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