Loader

Call Statistics of {{selectedAgent.agentName}}

Showing stats {{selectedDashboardDatesString}}

{{allDashboardStats.inbound || 0}}

Inbound


{{allDashboardStats.outbound || 0}}

Outbound


{{ formatDuration(allDashboardStats.minutes, true) }}

Total Duration

{{allDashboardStats.averageCallTime || 0}}

Average Call Time

Call Volume
62% Revenue Growth
2022
$32.5k
2021
$41.2k
Coming Soon
{{selectedAgentTemplate.design.greeting_message.length || 0}} characters
TTS
{{selectedAgentTemplate.settings.voice.vendor === 'google' ? selectedAgentTemplate.settings.voice.name : (selectedAgentTemplate.settings.voice.name.includes('-') ? selectedAgentTemplate.settings.voice.name.split('-')[0] : selectedAgentTemplate.settings.voice.name.split(' ')[0]) || "Select"}} {{selectedAgentTemplate.settings.voice.vendor}}
STT
{{selectedAgentTemplate.settings.raw.recognizer.language || "en"}} {{selectedAgentTemplate.settings.raw.recognizer.vendor}}
Personality
{{selectedAgentTemplate.metadata.personality && selectedAgentTemplate.metadata.personality.trim() ? 'Configured' : 'Not set'}}
Skills
{{$index + 1}}. {{skill.name}}
Default Active Disabled Inbound Outbound Bi-Directional
Click to edit
Click to edit
Click to edit
Created using {{getAgentTemplateName()[selectedAgentTemplate.metadata.templateId] || 'Custom'}} Template This is a Custom Skill This is a Advanced Skill created using Skill Template This skill is a clone of the {{skill.skillNameBeforeCloning}} skill originally developed in Agent - {{skill.originalSkillAgentName}}
Version Commit Message User Updated At Revert
{{version.version_number}} {{ version.commit_message }} {{ version.commit_message | limitTo: 50 }}... Load more {{ version.commit_message }} {{version.metadata && version.metadata.user ? version.metadata.user : 'N/A'}} {{version.updated_at | date: 'yyyy-MM-dd hh:mm a'}}
Pending Invites
Email Name Status Sent Date Action
{{invite.email}} {{invite.firstName}} {{invite.lastName}} Pending Accepted Rejected {{invite.createdAt | date: 'yyyy-MM-dd hh:mm a'}} Already {{invite.status}}
Active Team Members
Email Rights Updated At Action
Dashboard Call History Agents Campaigns Directory Calendar Test Harness
{{user.email}} {{user.updated_at | date: 'yyyy-MM-dd hh:mm a'}}
Webchat
    Chat with {{selectedAgentTemplate.agentName ? selectedAgentTemplate.agentName : 'Agent'}}
    Call History
    Showing logs {{selectedLogsString}}
    Hide Webcalls
    {{key}}: {{value}}
    From To Campaign Direction Duration Status Terminated By Time CampaignID ContactID
    {{call.data.from}} {{call.data.to}} {{getCampaignNameFromID(call.campaignId)}} {{call.data.direction}} {{ call.data && call.data.actualDuration ? formatDurationInMinutes(call.data.actualDuration) : formatDuration(call.data.callDuration) }} {{call.data.callStatus}} {{call.data.callStatus}} {{call.data.callStatus}} {{call.data.callStatus}} {{getTerminationLabel(call.data.termination)}} {{call.created_at | date:'yyyy-MM-dd hh:mm a'}} {{call.campaignId}} {{call.contactId}}
    No Logs Found
    Showing {{currentLogPage}} of {{totalPages}} pages ({{totalRecords}} records found!)
    Directory
    Campaigns
    Campaign Name Contacts Updated At Actions
    Execute Edit Delete
    {{cam.metadata.name}} {{cam.updated_at | date:'yyyy-MM-dd hh:mm a'}}
    Enable this feature to allow new users to register on the platform.
    Enable this feature to connect web calls to beta instance of the platform.
    Name Email Phone Type Bot Limit Minutes Allowed Versions Role Balance Reminder Updated At Actions
    {{user.firstName || ''}} {{user.lastName || ''}} {{user.email || ""}} {{user.phone || ""}} {{getAdminUserTypeLabel(user)}} {{user.botLimit || 1}} {{user.subscription.minutes || 20 | number:2}} {{user.allowedVersions || 20}} Admin User {{user.updated_at | date: 'yyyy-MM-dd hh:mm a'}}
    Top-up billing

    Add minutes when you need them

    Your rate and minimum top-up come from the Dialgood billing API for this account.

    Balance
    {{getBalanceMinutes() | number:2}}
    minutes
    Rate
    {{getCurrentRateCentsPerMinute()}}c
    per minute
    Choose top-up amount

    Minimum top-up is {{getMinimumTopUpDollars() | number:2}} {{getCurrencyCode()}}.

    {{billingState.config.currency | uppercase}}
    $ {{getCurrencyCode()}}
    Selected amount
    ${{getSelectedTopUpAmountDollars() | number:2}}
    Estimated minutes
    {{getEstimatedMinutes() | number:0}}
    Current balance
    {{getBalanceMinutes() | number:2}} min
    {{billingState.topUpError}}
    Payment successful
    Top-up received

    Looking up your invoice details now.

    Your balance has been refreshed from the API.

    ${{billingState.latestInvoice.amountUsd | number:2}} paid
    Minutes added: {{billingState.latestInvoice.minutesAdded || 0}}
    New balance: {{billingState.latestInvoice.newBalanceMinutes || getBalanceMinutes()}} minutes
    {{billingState.latestInvoiceError || 'Your payment succeeded, but the invoice is not available yet. Your updated balance is shown below.'}}
    Checkout canceled
    No charge was made

    You can adjust the amount and try the top-up again whenever you're ready.

    Account snapshot
    Balance minutes {{getBalanceMinutes() | number:2}}
    Seconds remaining {{getBalanceSeconds() | number:0}}
    Approx. hours remaining {{getFormattedBalanceHours()}}
    Billing mode {{billingState.summary.planName}}
    Status {{billingState.summary.status}}
    {{billingState.summaryError}}
    Billing history

    Top-up invoices and Stripe receipts for this account.

    {{billingState.historyError}}
    Date Amount Status Minutes Added New Balance Document
    {{invoice.date}} ${{invoice.amountUsd | number:2}} {{invoice.status}} {{invoice.minutesAdded || 0}} {{invoice.newBalanceMinutes || 0}} {{getBillingPrimaryLabel(invoice)}} Unavailable
    No billing history yet.
    Loading billing details...
    Billing is unavailable

    This account does not currently expose top-up billing from the API.

    Name TimeZone Updated At Actions
    {{resource.name}} {{resource.timeZone}} {{resource.updated_at | formatTimestampForSorting}}
    User Profile
    {{userData.role ? 'Admin' : 'User'}}
    API Integrations
    Test Runs
    Review recent runs, inspect outcomes, and rerun or clone working setups. {{selectedRunIds.length}} selected
    Test Status Context Token Cost Evaluation Created Actions
    {{run.title}}
    {{getRunDisplayStatus(run)}}
    {{getRunStatusDetail(run)}}
    v{{run.agent.version}} Scenario {{run.compareMeta.role === 'candidate' ? 'Candidate' : 'Baseline'}} Saved Test
    Persisted transcript{{run.conversationIds.length > 1 ? 's' : ''}} ({{run.conversationIds.length}}) Ad-hoc ({{run.adhocTranscript.turnCount}} turns)
    {{formatRunTokenCost(run)}}
    {{run.stats.totalTokens}} tokens
    {{run.evaluation.summary.overallScore}}%
    N/A
    {{run.savedTestMeta.name}}
    {{formatDate(run.createdAt)}}
    No test runs found. Create your first run to get started.
    Showing {{currentRunPage}} of {{totalRunPages}} pages ({{totalRunRecords}} records found!)
    Reflections
    Review generated diagnoses, queue new reflections, and turn prompt recommendations into versioned skill edits.
    Showing {{selectedRunIds.length > 0 ? 'selected runs' : 'visible runs'}}.
    Every min
    Queue progress: {{reflectionQueueState.completed}}/{{reflectionQueueState.total}} · {{reflectionQueueState.failed}} failed
    Newest First
    {{testingReflections.length}}
    Loading reflections...
    No reflections yet for this run.
    {{reflection.status || 'COMPLETED'}} {{reflection.trigger || 'MANUAL'}}
    {{reflection.verdict || 'NEEDS_HUMAN_REVIEW'}} {{getReflectionRootCause(reflection)}} {{formatReflectionConfidence(reflection.confidence)}}
    {{getReflectionPreview(getReflectionNextBestAction(reflection), 130)}}
    {{getReflectionPreview(reflection.diagnosis, 150)}}
    {{getReflectionRunLabel(reflection)}} {{formatDate(getReflectionTimestamp(reflection))}}
    Created {{formatDate(reflection.createdAt || reflection.created_at)}} · Updated {{formatDate(reflection.updatedAt || reflection.updated_at || getReflectionTimestamp(reflection))}}
    Reflection Detail
    {{getReflectionRunLabel(selectedTestingReflection)}} · updated {{formatDate(selectedTestingReflection.updatedAt || selectedTestingReflection.updated_at || getReflectionTimestamp(selectedTestingReflection))}}
    Select a reflection to inspect its diagnosis, evidence, and proposed fix.
    {{selectedTestingReflection.status || 'COMPLETED'}} {{selectedTestingReflection.trigger || 'MANUAL'}} {{selectedTestingReflection.verdict || 'NEEDS_HUMAN_REVIEW'}} {{getReflectionRootCause(selectedTestingReflection)}} {{formatReflectionConfidence(selectedTestingReflection.confidence)}} confidence
    Diagnosis
    {{selectedTestingReflection.diagnosis || 'No diagnosis provided.'}}
    Recommendation
    {{getReflectionNextBestAction(selectedTestingReflection) || 'No recommendation provided.'}}
    Fix Proposal
    Type {{getReflectionFix(selectedTestingReflection).type}}
    Target {{getReflectionFix(selectedTestingReflection).target}}
    {{getReflectionFix(selectedTestingReflection).recommendation}}
    {{getReflectionFix(selectedTestingReflection).rationale}}
    {{getReflectionFix(selectedTestingReflection).patch}}
    Rejected Alternatives
    • {{formatReflectionEvidenceItem(alternative)}}
    Evidence
    Failed rubric items
    • {{formatReflectionEvidenceItem(item)}}
    Step indexes
    {{formatReflectionEvidenceItem(quote)}}

    {{formatReflectionToolCall(toolCall)}}
    Suggested Tests
    {{suggestedTest.title || suggestedTest.name || 'Suggested test'}}
    {{suggestedTest.type || 'SCENARIO'}}
    {{suggestedTest.scenario}}
    • {{item}}
    Error
    {{selectedTestingReflection.error.message || selectedTestingReflection.error}}

    {{selectedTestingReflection.error.stack}}

    {{formatReflectionDebug(selectedTestingReflection)}}
    Create Tests
    {{getScenarioCreateHeader()}}
    Create Run Review Run
    Pick an input. Check and launch.
    Setup Review
    Input
    Existing transcript
    Scenario
    Custom transcript
    Saved tests
    Ready
    {{getCreateRunSelectionCount()}} {{getCreateRunSelectionLabel()}}
    Version
    {{newRun.baselineVersion || 'latest'}} vs {{newRun.candidateVersion || 'latest'}}
    {{newRun.agentVersion || 'latest'}}
    Transcripts
    {{transcriptPagination.totalRecords}} available
    From To Status Time Actions
    {{transcript.data.from}} {{transcript.data.to}} {{transcript.data.callStatus}} {{transcript.created_at | date:'yyyy-MM-dd hh:mm a'}}
    No transcripts found
    Page {{transcriptPagination.currentPage}} of {{transcriptPagination.totalPages}}
    Preview
    Loading transcript

    Select a transcript.

    Conversation {{createRunTranscriptPreview.transcript.conversationId}}
    {{message.role === 'user' ? 'User' : 'Assistant'}}
    {{message.content}}
    Inputs
    {{newRun.selectedTranscripts.length}}
    Nothing added yet.
    {{transcript.label}}
    {{transcript.turnCount}} turns
    Custom Transcript
    Based on: {{currentAdhocTranscript.sourceConversationId}}

    Start with a user turn.

    Inputs
    {{newRun.selectedTranscripts.length}}
    Nothing added.
    {{transcript.label}}
    {{transcript.turnCount}} turns
    AI scenario batch
    Generate five drafts to review before running.
    Max turns
    {{scenarioSpecDraft.maxTurns || 6}} caller turns
    Minimum prompts for a reliable test
    {{scenarioRecoveryPrompt}}
    Tone
    Difficulty
    Behaviors
    {{constraint}}
    Using conversation
    {{scenarioConfig.transcriptReference.conversationId}}
    Draft generated from {{scenarioDraftState.generatedFromConversationId}}.
    {{warning}}
    Choose Conversation
    {{transcript.data.from}}
    {{transcript.created_at | date:'yyyy-MM-dd hh:mm a'}}
    No transcripts found
    Live Preview
    {{getScenarioSuiteCount()}} in suite
    Intent
    {{scenarioSpecDraft.text}}
    Caller setup

    {{scenarioConfig.scenarioV2.context.persona}}

    Conversation flow
    {{turn.speaker || turn.role}}
    {{turn.text || turn.content}}
    Assertions
    {{assertion.type}}
    {{assertion.description}}
    Describe the behavior and the test will appear here.
    Conversation Preview
    {{createRunTranscriptPreview.transcript.conversationId}}
    {{message.role === 'user' ? 'User' : 'Assistant'}}
    {{message.content}}
    {{isScenarioBatchMode() ? 'Scenario Drafts' : 'Test Suite'}}
    Add the base test, expand coverage with variants, then run the suite.
    Review, tweak, select, then create the batch.
    {{getScenarioSuiteCount()}} tests ready {{getSelectedScenarioSuiteCount()}} of {{getScenarioSuiteCount()}} selected
    {{warning}}
    Generates impatient, vague, and interrupt-heavy variants from the same spec.
    {{getScenarioSuiteCount()}} scenario drafts ready
    {{getSelectedScenarioSuiteCount()}} selected. Review drafts before creating the batch.
    {{scenario.variantType === 'base' ? 'Base test' : scenario.variantType}} {{scenario.legacyScenario.maxTurns || scenario.scenarioV2.maxTurns || 6}} turns {{scenario.metadata.journeyTag}} {{scenario.metadata.personaType}}
    Recent Suites
    {{suite.name}}
    {{suite.scenarioCount}} tests
    Saved Tests
    {{savedTest.name}}
    {{savedTest.journeyTag || 'general'}} · {{savedTest.type}}
    Baseline {{savedTest.baselineVersion || 'latest'}} Critical {{savedTest.personaType}}
    Most recent result: {{savedTest.lastResult}} No run yet
    No saved tests yet. Save a transcript or scenario first.
    Summary
    Existing transcript Scenario Custom transcript Regression
    Name
    {{newRun.title || 'Untitled run'}}
    Version
    {{newRun.agentVersion || 'latest'}}
    Input source
    {{newRun.entryPoint === 'custom' ? 'Custom transcript' : 'Existing transcripts'}}
    Selected inputs
    {{newRun.selectedTranscripts.length}} transcripts
    Included items
    {{transcript.label}}
    Baseline
    {{newRun.baselineVersion || 'latest'}}
    Candidate
    {{newRun.candidateVersion || 'latest'}}
    Selected tests
    {{newRun.selectedSavedTestIds.length}} saved tests
    {{savedTest.name}}
    What happens next
    We’ll start comparison runs for the saved tests you selected.
    We’ll run every test in your scenario suite against the selected version.
    We’ll start one run against the selected version using the inputs you chose.
    Final Checks
    Step 1 of 2 Step 2 of 2
    Saved Tests
    Keep your reusable golden, ad-hoc, and scenario tests in one place.
    {{savedTests.length}} saved tests {{coverageSummary.criticalTests}} critical {{coverageSummary.scenarioTests}} scenario
    Name Type Journey Baseline Priority Readiness Last tested Actions
    {{savedTest.name}}
    Persona: {{savedTest.personaType}}
    {{savedTest.type}} {{savedTest.journeyTag || 'general'}} {{savedTest.baselineVersion || 'latest'}} {{savedTest.priority || 'normal'}} {{getSavedTestReadiness(savedTest)}} {{savedTest.lastTestedAt ? (savedTest.lastTestedAt | date:'yyyy-MM-dd hh:mm a') : 'Never'}}
    No saved tests yet. Create one from a run or current setup.
    Coverage
    A quick view of how much reusable coverage exists for this agent.
    Saved tests

    {{coverageSummary.savedTests}}

    Critical tests

    {{coverageSummary.criticalTests}}

    Scenario tests

    {{coverageSummary.scenarioTests}}

    Latest version status {{coverageSummary.latestVersionStatus}}
    Coverage by type
    {{type}} {{count}}
    No saved tests yet.
    Coverage by journey
    {{journey}} {{count}}
    No journey coverage yet.
    Persona coverage
    {{persona}}: {{count}}
    Add scenario tests with personas to build non-transcript end-to-end coverage.
    Loading...
    Loading test results
    Fetching run details and evaluation...
    {{selectedTestRunConversations.length}} conversations
    {{getRunDisplayStatus(selectedTestRun)}} v{{selectedTestRun.agent.version}} {{formatDate(selectedTestRun.createdAt)}} {{selectedTestRun.savedTestMeta.name}} {{selectedTestRun.compareMeta.role === 'candidate' ? 'Candidate' : 'Baseline'}}
    Persona

    {{selectedTestRun.scenario.persona}}

    Script

    {{selectedTestRun.scenario.script}}

    Rubric
    • {{item}}
    Max Turns

    {{selectedTestRun.scenario.maxTurns}}

    • Conversation Started
    • S
      Synthetic User
      {{step.input.content}}
      Step {{step.index}} Generated based on scenario
    • Agent Response
      {{getGeneratedResponseText(step)}}
      {{step.toolCalls.length}} tool(s)
      {{step.metrics.latencyMs}}ms {{step.metrics.tokensIn + step.metrics.tokensOut}} tokens
      {{tool.toolName}}
      Trace Events
      {{getStepEvents(step).length}}
      {{event.label}} {{event.displayValue}}
      {{event.details}}
      agent
    • Conversation Completed
    Overall Score

    {{selectedTestRunEvaluation.summary.overallScore}}%

    {{selectedTestRunEvaluation.summary.verdict}}
    Reflections
    Loading reflections...
    No reflections yet
    {{reflection.verdict || 'REFLECTION'}} {{getReflectionRootCause(reflection) || 'UNKNOWN'}}
    {{getReflectionNextBestAction(reflection)}}
    {{formatReflectionConfidence(reflection.confidence)}} confidence {{formatDate(getReflectionTimestamp(reflection))}}
    {{selectedRunReflection.verdict}} {{getReflectionRootCause(selectedRunReflection) || 'UNKNOWN'}} {{formatReflectionConfidence(selectedRunReflection.confidence)}} confidence {{selectedRunReflection.status || 'COMPLETED'}}
    Diagnosis
    {{selectedRunReflection.diagnosis || 'No diagnosis provided.'}}
    Recommended Fix
    {{getReflectionFix(selectedRunReflection).type}} · {{getReflectionFix(selectedRunReflection).target}}
    {{getReflectionFix(selectedRunReflection).recommendation || getReflectionNextBestAction(selectedRunReflection) || 'No recommendation provided.'}}
    {{getReflectionFix(selectedRunReflection).rationale}}
    {{getReflectionFix(selectedRunReflection).patch}}
    Evidence
    • {{formatReflectionEvidenceItem(item)}}
    {{formatReflectionEvidenceItem(quote)}}

    {{formatReflectionToolCall(toolCall)}}
    Why not the obvious fix?
    • {{formatReflectionEvidenceItem(alternative)}}
    Suggested Tests
    {{suggestedTest.title || suggestedTest.name || 'Suggested test'}}
    {{suggestedTest.type || 'SCENARIO'}}
    {{suggestedTest.scenario}}
    • {{item}}

    {{formatReflectionDebug(selectedRunReflection)}}
    Statistics
    Conversations: {{selectedTestRun.stats.totalConversations}}
    Steps: {{selectedTestRun.stats.totalSteps}}
    Tokens: {{selectedTestRun.stats.totalTokens}}
    Duration: {{(selectedTestRun.stats.durationMs / 1000).toFixed(2)}}s
    Heuristics
    {{formatHeuristicName(heuristic.name)}} {{heuristic.score}}%
    Run Status
    {{selectedTestRun.status}}
    Agent: {{selectedTestRun.agent.agentId}}
    Version: {{selectedTestRun.agent.version}}
    Created: {{formatDate(selectedTestRun.createdAt)}}
    Scenario
    Persona:

    {{selectedTestRun.scenario.persona}}

    Script:

    {{selectedTestRun.scenario.script}}

    Rubric:
    • {{item}}
    Statistics
    Conversations: {{selectedTestRun.stats.totalConversations}}
    Steps: {{selectedTestRun.stats.totalSteps}}
    Tokens: {{selectedTestRun.stats.totalTokens}}
    Duration: {{(selectedTestRun.stats.durationMs / 1000).toFixed(2)}}s
    Evaluation

    {{selectedTestRunEvaluation.summary.overallScore}}%

    {{selectedTestRunEvaluation.summary.verdict}}
    Heuristics
    {{formatHeuristicName(heuristic.name)}} {{heuristic.score}}%

    Rubric Results
    {{rubricItem.rule}} {{rubricItem.notes}}
    {{getRubricStatusLabel(selectedTestRunEvaluation)}}
    Reflections
    Loading reflections...
    No reflections yet
    {{reflection.verdict || 'REFLECTION'}} {{getReflectionRootCause(reflection) || 'UNKNOWN'}}
    {{getReflectionNextBestAction(reflection)}}
    {{formatReflectionConfidence(reflection.confidence)}} confidence {{formatDate(getReflectionTimestamp(reflection))}}
    {{selectedRunReflection.verdict}} {{getReflectionRootCause(selectedRunReflection) || 'UNKNOWN'}} {{formatReflectionConfidence(selectedRunReflection.confidence)}} confidence {{selectedRunReflection.status || 'COMPLETED'}}
    Diagnosis
    {{selectedRunReflection.diagnosis || 'No diagnosis provided.'}}
    Recommended Fix
    {{getReflectionFix(selectedRunReflection).type}} · {{getReflectionFix(selectedRunReflection).target}}
    {{getReflectionFix(selectedRunReflection).recommendation || getReflectionNextBestAction(selectedRunReflection) || 'No recommendation provided.'}}
    {{getReflectionFix(selectedRunReflection).rationale}}
    {{getReflectionFix(selectedRunReflection).patch}}
    Evidence
    • {{formatReflectionEvidenceItem(item)}}
    {{formatReflectionEvidenceItem(quote)}}

    {{formatReflectionToolCall(toolCall)}}
    Why not the obvious fix?
    • {{formatReflectionEvidenceItem(alternative)}}
    Suggested Tests
    {{suggestedTest.title || suggestedTest.name || 'Suggested test'}}
    {{suggestedTest.type || 'SCENARIO'}}
    {{suggestedTest.scenario}}
    • {{item}}

    {{formatReflectionDebug(selectedRunReflection)}}

    {{stepComp.notes}}
    Issues:
    • {{issue}}

    Loading conversations...

    • {{conv.label || 'Conversation ' + ($parent.$index + 1)}} Started
    • {{step.input.content}}

      Step {{step.index}} Expected User Input
    • Expected
      {{step.originalOutput.content}}
      Original Agent Response
      agent
    • Generated
      {{getGeneratedResponseText(step)}}
      {{step.toolCalls.length}} tool(s)
      {{step.metrics.latencyMs}}ms {{step.metrics.tokensIn + step.metrics.tokensOut}} tokens
      {{tool.toolName}}
      Trace Events
      {{getStepEvents(step).length}}
      {{event.label}} {{event.displayValue}}
      {{event.details}}
      agent
    • Conversation Completed
    Skill Settings {{selectedSkill.name}}
    General
    LLM
    Commit
    • Upon committing, the agent will be upgraded to the new version v{{((selectedVersion.version_number || 0) + 1)}}.
    • You can have up to {{userData.allowedVersions}} versions. Older versions will be rolled over once this limit is reached.
    New Skill
    Note: Skills that are not active in the template are disabled.
    No Template skills found! Create a blank Skill instead.
    {{icons.description}}
    {{skill.name}}
    {{skill.context || ''}}