Development FAQ
Engineering FAQ
Authentication questions
iOS / Android integration questions
Web SDK integration questions
General Questions
Authentication FAQs
Confirm the flow of authentication. Does the SDK really make the call to authenticate or does it come from Contact Center AI Platform (CCAI Platform) service?
CCAI Platform provides company_id and company_secret (both found in your admin portal under Settings > developer) to the host app server.
End-user signed in to host app. When the end user starts using CCAI Platform, CCAI Platform asks to the host app to sign the payload. Host app signs the payload using company_secret and generates signed JWT.
CCAI Platform starts authenticating the end user with signed JWT provided from the host app. POST /auth/end_user
CCAI Platform verifies signed JWT and issues the auth token for the end user. If the end_user of an identifier does not exist in CCAI Platform DB, create it. If the device of device_token does not exist, create it.
How do we generate a push token for CCAI Platform if the user is not logged in?
Push tokens aren't required for user authentication.
- Can CCAI Platform consume my company's generated tokens for authentication rather than using the service callback to authenticate?
Yes, you can use your own authentication system, you're encouraged to do so! The end user identification should be in the payload. How this works is the end user authenticates and this is recognized on your server. Then your server sends this info to CCAI Platform. If your server doesn't know who the end user is, we'll think it's anonymous and show it as such (i.e. "Web user" vs. customer's actual name)
- Is it possible to run initialize chat client as a standalone Activity?
Currently, it is not possible to run initialize chat client as a standalone activity.
iOS/Android Integration FAQs
- How do I set up on iOS without using cocoapods?
Within the iOS SDK the file you'll need to install without cocoapods is within the zip file (called ManualInstallationGuide.md). Web SDK Integration FAQs
- If there's a way to bring the CCAI Platform chat bubble icon forward to the front of my page so it isn't being covered up by other elements of my webpage?
If implemented, the web SDK styling might have a lower z-index than your other elements that are covering it, or they may have the same z index but coded after these other items, making it hide behind it. General Dev FAQ
What are the requirements?
What is the limit to the size or time length of a video?
CRMs like Zendesk has a video size limitation that caps at 20MB. If the video is larger than this, the end user is alerted that their file is too big.
API and Data FAQ
API FAQs
Q: How long will my company's data be available via the API?
A: APIs can be accessed historically with no time limit.
Q: What is the interval in which I can access current information?
A: Our APIs can be accessed in real-time as the data is compiled at the time it's called.
Q: What is the recommended interval to poll data?
A: Since the APIs are GETs , best practice is to poll every 7 mins or 15 minutes.
Q: What is the rate limit?
A: Up to 10 calls per second.
Data FAQs
Q: Is SLA of the call or chat available or does that need to be calculated based on the metrics in the response?
A: SLA is not in the response. It is something that will need to be identified and calculated.
Q: Can we report on the number of times, or the duration of time, that a specific agent puts a caller on hold?
A: In the participants
object of the response there is an entry for
end_user
(the consumer) with a hold_duration value. That is the total
hold duration the end-user experienced while on the call.
Q: Can we distinguish between warm vs. cold transfers?
A: Not at this time.
Q: Why is the call duration at the top of the response different from
the call duration reported for the end_user
under participants
?
A: The current call_duration
is represented as the difference of the
call connected_at
value and finished_at
value (not a value that
currently represents the actual handle duration). Handle Duration can be
obtained from the handle_durations
object of the response. The sum of
call_duration
in each of those response objects plus the
acw_duration
would represent the total handle time of the call.