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 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


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.