Custom Webhook empowers you to send data programmatically to Enterpret by calling an ingestion API.
If you want to send Users and Accounts data to Enterpret, using a Custom Webhook or Census, you can follow the instructions here:
If you're using Census to send feedback data to Enterpret, you can follow the instructions in this article:
https://helpcenter.enterpret.com/en/articles/8317703-census-integration
The following instructions are for sending customer feedback to Enterpret programmatically by configuring a custom webhook integration:
Webhook Endpoint
Auth
Create an API Key
Navigate to the Integrations page in your Enterpret instance.
Click on
+New Integration
, and selectWebhook
from the list.Provide a
Display Name
for the integration in the presented form, this name will appear as the Source for the records, everywhere in your Enterpret instances, for the records ingested using this Webhook.Click
Connect
, a Webhook integration will be created, with an API Key, that you can copy as shown below.This API Key should be used with every request as a value to
api-key
header.
Rate Limits
The API, currently, doesn’t enforce any rate limit, but the recommended rate limit is 100 RPM ( request per minute )
Errors
Data Model
Field | Type | Is Required? | Comment |
msg | String | True | Error Message |
code | String | True | Enterpret Error Code |
referenceID | String | True | Provide it to the Enterpret team, to investigate any unexpected errors |
Possible Errors
Code | HTTP Status Code | Is Retriable? | Description |
ErrCodeInternalError | 500 | True | Implies a server-side issue |
ErrCodeInvalidRequestArgument | 400 | False | Implies a issue in the request itself |
Sample Error Response
{
"msg": "Internal server exception",
"code": "ErrCodeInternalError",
"referenceID": "8B5OQA"
}
Models
FeedbackInput
Field | Type | Is Required? | Comment |
records | []Feedback | True | Array of Feedback |
Feedback
Field | Type | Is Required? | Comment |
id | String | True | A unique identifier to identify the feedback record |
createdAt | Int64 | True | Timestamp of the feedback record |
type | String | True | The type of feedback record, and possible values are REVIEW, CONVERSATION, SURVEY, |
fileID | String | True | It is combined with the id to generate a unique identifier internally |
fileType | String | False | A field to differentiate different sources of feedback records. Enterpret allows filtering records by this field on its dashboard |
metadata | False | Custom metadata for the record. This metadata will be available on Enterpret’s dashboard as filters | |
conversation | False | Should be populated, if the type is CONVERSATION | |
surveyResponse | False | Should be populated, if the type is SURVEY | |
audioRecording |
|
|
|
Metadata
Field | Type | Is Required? | Comment |
metadata | map<string, Value> | True | Map to store the custom metadata |
Value
Field | Type | Is Required? | Comment |
array | True | Array Value to store list of values |
Array Value
Field | Type | Is Required? | Comment |
s | []String | False | List of strings |
n | []float64 | False | List of numbers |
Conversation
Field | Type | Is Required? | Comment |
msgs | []Message | True | Array of conversation message |
Message
Field | Type | Is Required? | Comment |
text | String | True | Content of the message |
actor | String | True | Possible values are user, agent , bot |
SurveyResponse
Field | Type | Is Required? | Comment |
responses | []SurveyQA | True | Array of survey responses |
SurveyQA
Field | Type | Is Required? | Comment |
question | String | True | Survey question |
answer | String | False | Open text answer of the survey question |
selectedOptions | []String | False | Selected option for the answer |
AudioRecording
Field | Type | Is Required? | Comment |
audioURL | String | Yes | Please provide a publicly accessible or signed URL of your call recording here. Please note that only the following formats are supported currently,
|
transcript | Transcript | No | You can optionally provide the transcript of the call recording in the specified format. |
Transcript
Field | Type | Is Required | Comment |
conversation | AudioConversation | Yes | Conversation-style transcript for your call recording. |
AudioConversation
Field | Type | Is Required | Comment |
units | []AudioRecordingMessageUnit | Yes | Transcripts are made of back-and-forth dialogues, represented as units here. |
AudioRecordingMessageUnit
Field | Type | Is Required | Comment |
actor | String | Yes | Possible values are user, agent, and bot. |
actorID | String | Yes | Id of the actor, who is the speaker of the current unit. |
text | String | Yes | The Transcript of the current unit. |
metadata | AudioRecordingMetadata | Yes | Contains the information about where the current unit appears in the call recording. |
AudioRecordingMetadata
Field | Type | Is Required? | Comment |
startTime | float64 | Yes | Relative time in Milliseconds of where the speaker starts speaking the current unit. |
endTime | float64 | Yes | Relative time in milliseconds is where the speaker ends up speaking the current unit. |
Examples
Survey Feedback Input
Survey Feedback Input
{
"records": [
{
"id": "cedr_12312",
"surveyResponse": {
"responses": [
{
"question": "How likely is it that you would recommend us to a friend or colleague?",
"selectedOptions": [
"5"
]
},
{
"question": "What is the primary reason for your score?",
"answer": "It's easy. it works. New stuff being added by you guys every year helps. It is not expensive. It is simple. "
}
]
},
"createdAt": 1652425557,
"metadata": {
"metadata": {
"topic": {
"array": {
"s": [
"Competitive Programming"
]
}
},
"rating": {
"array": {
"n": [
10
]
}
}
}
},
"type": "SURVEY",
"fileType": "SESSION_FEEDBACK",
"fileID": "session_feedback"
}
]
}
Conversation Feedback Input
Conversation Feedback Input
{
"records": [
{
"id": "conv_123123",
"conversation": {
"msgs": [
{
"actor": "user",
"text": "Hey team, I am ...."
},
{
"actor": "agent",
"text": "We can help you..."
}
]
},
"createdAt": 1652370808,
"metadata": {
"metadata": {
"sample_key": {
"array": {
"s": [
"1"
]
}
}
}
},
"type": 2,
"fileType": "SESSION_FEEDBACK",
"fileID": "session_feedback"
}
]
}
Audio Recording [ Without Transcript ] Input
Audio Recording [ Without Transcript ] Input
{
"records": [
{
"id": "call_id_1234",
"audioRecording": {
"audioURL": "https://test-bucket-aavaz.s3.us-east-2.amazonaws.com/KPL%20%2B%20Resource%20Monitoring%20%282024-02-13%2014_04%20GMT-8%29.mp4?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEI3%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMiJIMEYCIQD4vRu4HNbI27PF2oLMm5uAQpch%2FVpryafwh1yaXe%2Bm2AIhAMqgxivRiOJLEryVW%2FGleateiSyDwPw172uaRhYvtC6hKvQDCOf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQBBoMMjg1OTY4MzM2MTgzIgyRbH0QOhGiBq4XcbQqyAMjxLj00pZZqo%2BxrFUt2aTi6evuyX5XEAXVvG5ZK3PUgpmEFvj2OQekHtP%2BDXlFf29zSMh2vWJygF%2FyfHtXh52UPYIv7Ciu3bIWDjE9%2Fw"
},
"createdAt": 1652370808,
"metadata": {
"metadata": {
"account-name": {
"array": {
"s": [
"Aviator Inc."
]
}
}
}
},
"type": "AUDIO_RECORDING",
"fileType": "SALES_CALLS",
"fileID": "2024-q1-sales-calls"
}
]
}
Audio Recording [ With Transcript ] Input
Audio Recording [ With Transcript ] Input
{
"records": [
{
"id": "call_id_1234",
"audioRecording": {
"audioURL": "https://test-bucket-aavaz.s3.us-east-2.amazonaws.com/KPL%20%2B%20Resource%20Monitoring%20%282024-02-13%2014_04%20GMT-8%29.mp4?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEI3%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMiJIMEYCIQD4vRu4HNbI27PF2oLMm5uAQpch%2FVpryafwh1yaXe%2Bm2AIhAMqgxivRiOJLEryVW%2FGleateiSyDwPw172uaRhYvtC6hKvQDCOf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQBBoMMjg1OTY4MzM2MTgzIgyRbH0QOhGiBq4XcbQqyAMjxLj00pZZqo%2BxrFUt2aTi6evuyX5XEAXVvG5ZK3PUgpmEFvj2OQekHtP%2BDXlFf29zSMh2vWJygF%2FyfHtXh52UPYIv7Ciu3bIWDjE9%2Fw",
"transcript": {
"conversation": {
"units": [
{
"actor": "agent",
"actorID": "spk_0",
"text": "Your call will now be forwarded in accordance with the call forwarding settings of the phone number.",
"metadata": {
"startTime": 8250,
"endTime": 13229
}
},
{
"actor": "agent",
"actorID": "spk_0",
"text": "Unless you change the settings at Sona tel.com, this usually means that your call now will be forwarded to your mobile phone number.",
"metadata": {
"startTime": 13979,
"endTime": 21489
}
},
{
"actor": "agent",
"actorID": "spk_1",
"text": "Hello?",
"metadata": {
"startTime": 40159,
"endTime": 40990
}
},
{
"actor": "user",
"actorID": "spk_2",
"text": "Yeah. Uh, three.",
"metadata": {
"startTime": 42049,
"endTime": 43639
}
},
{
"actor": "agent",
"actorID": "spk_1",
"text": "Hello. Thank you for contacting the support.",
"metadata": {
"startTime": 44599,
"endTime": 47389
}
},
{
"actor": "agent",
"actorID": "spk_1",
"text": "My name is Shin. How can I assist you today?",
"metadata": {
"startTime": 48459,
"endTime": 51040
}
},
{
"actor": "user",
"actorID": "spk_2",
"text": "Yeah. Hi. I'm having some issues with the sound quality of my zoom calls. I'm using it. Not, uh, it on my apple device. And the audio is, like, really unclear. Sometimes even cuts out. Uh, can you help me with that?",
"metadata": {
"startTime": 52319,
"endTime": 64750
}
},
{
"actor": "agent",
"actorID": "spk_1",
"text": "I'm sorry to hear that. You're experiencing sound quality issues on your apple device. Uh, let's troubleshoot this together. Could you please let me know which specific apple device you're using and its model?",
"metadata": {
"startTime": 66110,
"endTime": 77019
}
}
]
}
}
},
"createdAt": 1652370808,
"metadata": {
"metadata": {
"account-name": {
"array": {
"s": [
"Aviator Inc."
]
}
}
}
},
"type": "AUDIO_RECORDING",
"fileType": "SALES_CALLS",
"fileID": "2024-q1-sales-calls"
}
]
}
Example CURL request
Example CURL request