Common Issues
Symptom to cause to fix quick reference
Issue: Trigger Popup Appears When Should Be Suppressed
Symptom User dismissed help offer but it reappears immediately or on same screen.
Cause
- Config mismatch or stale SDK config snapshot
passiveTracker.onInteraction()not called on dismissal
Fix
- Verify backend flag
trigger.suppress_high_time_spentis enabled - Check
/v1/sdk/configreturns expected value - Validate
AI.getConfig().isFeatureEnabled("suppress_high_time_spent_trigger") - Ensure SDK refreshed config (wait interval or restart app)
Prevention
- SDK calls
passiveTracker.onInteraction()on dismissal automatically - Config refresh interval respected
Issue: Agent Responds with Previous Screen Context
Symptom User navigated to new screen but voice agent still references old screen.
Cause Screen transition event not emitted or wrong screen ID mapping.
Fix
- Add
AI.setKycStep(newScreenId)toonResume()of every screen - Verify screen ID matches registered schema (if using schemas)
- Check
/api/activityfor latestsession.screenvalue
Code Fix
class NewScreenActivity : AppCompatActivity() {
override fun onResume() {
super.onResume()
AI.setKycStep("correct_screen_id")
}
}Issue: Activity Payload Duplicated
Symptom Same datum appears in multiple locations in event payload.
Cause SDK or client sending duplicate field placement.
Fix
- Use one canonical field location per datum
- Remove redundant copies from
properties - Check
HttpBackendClientfor duplicate field injection
Prevention
- SDK updated to strip duplicates in routes/events.py
- Keep top-level fields canonical
Issue: No Trigger Activity
Symptom Events reach backend but no trigger evaluations logged.
Cause
autoTriggerEnabled = false- Passive evaluation disabled
- Backend trigger flags off
Fix
- Check
RuntimePolicy.triggerSettings.autoTriggerEnabled - Verify
passiveEvalEnabledand interval - Check backend flags:
trigger.v2_scoring,trigger.policy_engine - Verify events in
/api/activity
Issue: missing_screen_context on Session Start
Symptom Voice session starts but backend logs missing context error.
Cause No screen context available for session.
Fix
- Call
AI.setKycStep(screenId)beforeAI.startAssistant() - Ensure prior events include
screenorscreen_id - Check session has events with screen context
Issue: Voice Does Not Connect
Symptom
AI.startAssistant() returns connection error.
Cause
RECORD_AUDIOpermission denied- LiveKit credentials missing
- Backend dispatch failed
Fix
- Verify
RECORD_AUDIOin manifest and runtime permission - Check backend
.envhas LiveKit URL, key, secret - Verify
integration.livekit_dispatchflag enabled - Inspect
/api/activityforsession_startpayload
Permission Check
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO)
!= PackageManager.PERMISSION_GRANTED) {
// Request permission
}Issue: SDK Not Initialized Error
Symptom SDK method calls fail with not initialized error.
Cause
AI.init()not called- Called after process death
- Wrong initialization order
Fix
- Ensure
AI.init()inApplication.onCreate() - Check initialization before any SDK calls
- Verify no process death/recovery issues
Issue: Backend 401 Unauthorized
Symptom SDK HTTP calls return 401.
Cause
- Wrong
apiKey - Backend
KYCIS_API_KEYnot set - Header mismatch
Fix
- Verify
AI.init(apiKey = "correct-key") - Check backend
KYCIS_API_KEYenv var - Confirm
X-API-Keyheader matches
Issue: Events Not in Activity Stream
Symptom
SDK calls appear to succeed but no events in /api/activity.
Cause
- Wrong backend URL
- Network failure
- Session store cleared
Fix
- Verify
backendBaseUrlreachable from device - Check network logs for HTTP 200
- Remember: backend restart clears in-memory store