Overview
The purpose of this API documentation is to help you integrate your custom CRM with Symbo's dialer service. If you have any questions please reach out to [email protected].
Authentication
Symbo uses HMAC Validation to help you authenticate requests made to your application. When a webhook is added, you will be provided with a webhook_secret. Each request from symbo will include its signature via the X-Hmac-Signature header. All that's left is to validate that the signature we sent you matches your webhook secret. Here is an example of how to compare the X-Hmac-Signature to your computed hash:
const crypto = require("crypto")
const signature = '' // Signature from X-Hmac-Signature
const requestBodyString = '' // Stringified body from Symbo request const secret = "abcdefg" // Your webhook_secret
const hash = crypto.createHmac("sha256", secret)
.update(requestBodyString).digest("hex") if(hash === signature) console.log('Request verified!')
Accounts & Users
Webhooks are set up at the Symbo Account level. Webhook requests will contain the user_id of the user whose action initiated the request.
Custom CRM Contact Lookup on Dial
Description
To display custom CRM data in Symbo when a number is dialed, you can create an endpoint for Symbo to query when a call is initiated. When a user calls a number, a GET request will be made to your custom endpoint with the number param in the query string in E164 format. Provide your custom endpoint to [email protected] to set up this integration.
GET https://your-custom.com/endpoint?number=+18005551212
A successful match should include a 200 status code and the following body (replacing your data values). If no match is found, return a 404 status code.
Successful response body
{
external_id: "12345",
first_name: "Sally",
last_name: "Sample",
work_email: "[email protected]",
personal_email: "[email protected]",
work_phone: "+18005551212",
mobile_phone: "+18005551213",
home_phone: "+18005551214",
other_phone: "+18005551215",
address_city: "Salt Lake City",
address_country: "US",
address_state: "UT",
address_street: "123 Main",
address_street_2: "Ste 100",
address_zip: "84010",
linkedin_url: "https://linkedin.com/in/sallysample",
facebook_url: "https://facebook.com/sallysample",
personal_note_1: "This is a personal note",
time_zone: "America/Denver",
title: "Sales Manager",
website_url_1: "https://sample.com",
account: {
external_id: "9876",
name: "Sample Company",
website_url: "https://sample.com",
industry: "Technology"
}
}
Required response body params
external_id (the unique contact id in your CRM)
first_name
account.name && account.external_id (account name and external_id only required if an account is included in response)
Call Activity Webhook
Description
Symbo can send a webhook to your application with a Call object when a call is completed or updated. Make sure to store the call id in order to receive updates to the call object. Provide your POST webhook endpoint to [email protected] to set up this integration.
Events
call.created |
| This event occurs immediately after a call is completed. |
call.updated |
| This event occurs when a user updates a call with a disposition or note and when a call recording or transcription becomes available. |
Example webhook body
{
id: "ecc25304-ad56-4f73-b75c-77f3165c6c65",
object: "Call",
description: "call.created",
user_id: "35904adb-e732-4ee7-a450-a87dfbe8a7f5",
created_at: "023-01-11T20:19:40.000Z",
data: {
prospect: {
id: "f0111f41-53c5-4d39-bfa1-447caa17b732",
external_id: "12345",
external_source: "custom_crm",
first_name: "Sally",
full_name: "Sally Sample",
last_name: "Sample",
linkedin_url: "http://www.linkedin.com/in/sallysample",
title: "Sales Manager",
},
id: "2dc92583-0376-469b-9909-3a020b75d777",
answered_at: "2023-01-11T20:19:25.000Z",
call_disposition: "answered_positive",
completed_at: "2023-01-11T20:19:29.000Z",
created_at: "2023-01-11T20:19:25.000Z",
dialed_at: "2023-01-11T20:19:25.000Z",
direction: "outbound",
from: "+19897189159",
from_formatted: "+1 989 718 9159",
note: "User entered call note",
recording_url: "https://symbo.ai/recording/2dc92583-0376-469b-9909-3a020b75d777",
should_record_call: "record",
state: "completed",
state_changed_at: "2023-01-11T20:19:29.000Z",
to: "+15178626434",
to_formatted: "+1 517 862 6434",
transcription: "Rep Name:<br>This is a test.<br><br>Prospect:<br>Hey.<br><br>",
transcription_completed_at: "2022-10-21T17:35:20.000Z",
total_talk_time_millis: 1399,
total_conversation_duration_millis: 2170,
rep_talk_time_millis: 830,
prospect_talk_time_millis: 569,
rep_overall_sentiment: 0,
prospect_overall_sentiment: 0,
rep_words_per_minute: 72,
prospect_words_per_minute: 105,
total_silence_time_millis: 0,
updated_at: "2022-10-21T17:35:20.000Z",
}
}
โ