The gcp:contactcenterinsights/analysisRule:AnalysisRule resource, part of the Pulumi GCP provider, defines project-wide analysis rules that automatically run annotators on conversations matching specified filters. This guide focuses on three capabilities: basic rule creation, conversation filtering with annotator selection, and summarization configuration.
Analysis rules reference existing issue models, phrase matchers, QA scorecards, and optionally conversation profiles. The examples are intentionally small. Combine them with your own Contact Center Insights resources and filtering logic.
Create a minimal analysis rule with location and name
Teams starting with Contact Center Insights often create a basic rule that applies to all conversations in a location.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const analysisRuleBasic = new gcp.contactcenterinsights.AnalysisRule("analysis_rule_basic", {
location: "us-central1",
displayName: "analysis-rule-display-name",
});
import pulumi
import pulumi_gcp as gcp
analysis_rule_basic = gcp.contactcenterinsights.AnalysisRule("analysis_rule_basic",
location="us-central1",
display_name="analysis-rule-display-name")
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/contactcenterinsights"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := contactcenterinsights.NewAnalysisRule(ctx, "analysis_rule_basic", &contactcenterinsights.AnalysisRuleArgs{
Location: pulumi.String("us-central1"),
DisplayName: pulumi.String("analysis-rule-display-name"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var analysisRuleBasic = new Gcp.ContactCenterInsights.AnalysisRule("analysis_rule_basic", new()
{
Location = "us-central1",
DisplayName = "analysis-rule-display-name",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.contactcenterinsights.AnalysisRule;
import com.pulumi.gcp.contactcenterinsights.AnalysisRuleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var analysisRuleBasic = new AnalysisRule("analysisRuleBasic", AnalysisRuleArgs.builder()
.location("us-central1")
.displayName("analysis-rule-display-name")
.build());
}
}
resources:
analysisRuleBasic:
type: gcp:contactcenterinsights:AnalysisRule
name: analysis_rule_basic
properties:
location: us-central1
displayName: analysis-rule-display-name
The location property specifies the GCP region where the rule operates. The displayName provides a human-readable identifier. Without a conversationFilter, this rule applies to all conversations; without an annotatorSelector, it uses the project’s default annotators.
Filter conversations and configure specific annotators
Production deployments typically target specific conversation subsets and control which analysis features run, reducing processing costs.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const analysisRuleFull = new gcp.contactcenterinsights.AnalysisRule("analysis_rule_full", {
location: "us-central1",
displayName: "analysis-rule-display-name",
conversationFilter: "agent_id = \"1\"",
annotatorSelector: {
runInterruptionAnnotator: false,
issueModels: ["projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id"],
phraseMatchers: ["projects/1111111111111/locations/us-central1/phraseMatchers/123"],
qaConfig: {
scorecardList: {
qaScorecardRevisions: ["projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id"],
},
},
runEntityAnnotator: false,
runIntentAnnotator: false,
runIssueModelAnnotator: false,
runPhraseMatcherAnnotator: false,
runQaAnnotator: false,
runSentimentAnnotator: false,
runSilenceAnnotator: true,
runSummarizationAnnotator: false,
summarizationConfig: {
summarizationModel: "BASELINE_MODEL",
},
},
analysisPercentage: 0.5,
active: true,
});
import pulumi
import pulumi_gcp as gcp
analysis_rule_full = gcp.contactcenterinsights.AnalysisRule("analysis_rule_full",
location="us-central1",
display_name="analysis-rule-display-name",
conversation_filter="agent_id = \"1\"",
annotator_selector={
"run_interruption_annotator": False,
"issue_models": ["projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id"],
"phrase_matchers": ["projects/1111111111111/locations/us-central1/phraseMatchers/123"],
"qa_config": {
"scorecard_list": {
"qa_scorecard_revisions": ["projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id"],
},
},
"run_entity_annotator": False,
"run_intent_annotator": False,
"run_issue_model_annotator": False,
"run_phrase_matcher_annotator": False,
"run_qa_annotator": False,
"run_sentiment_annotator": False,
"run_silence_annotator": True,
"run_summarization_annotator": False,
"summarization_config": {
"summarization_model": "BASELINE_MODEL",
},
},
analysis_percentage=0.5,
active=True)
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/contactcenterinsights"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := contactcenterinsights.NewAnalysisRule(ctx, "analysis_rule_full", &contactcenterinsights.AnalysisRuleArgs{
Location: pulumi.String("us-central1"),
DisplayName: pulumi.String("analysis-rule-display-name"),
ConversationFilter: pulumi.String("agent_id = \"1\""),
AnnotatorSelector: &contactcenterinsights.AnalysisRuleAnnotatorSelectorArgs{
RunInterruptionAnnotator: pulumi.Bool(false),
IssueModels: pulumi.StringArray{
pulumi.String("projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id"),
},
PhraseMatchers: pulumi.StringArray{
pulumi.String("projects/1111111111111/locations/us-central1/phraseMatchers/123"),
},
QaConfig: &contactcenterinsights.AnalysisRuleAnnotatorSelectorQaConfigArgs{
ScorecardList: &contactcenterinsights.AnalysisRuleAnnotatorSelectorQaConfigScorecardListArgs{
QaScorecardRevisions: pulumi.StringArray{
pulumi.String("projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id"),
},
},
},
RunEntityAnnotator: pulumi.Bool(false),
RunIntentAnnotator: pulumi.Bool(false),
RunIssueModelAnnotator: pulumi.Bool(false),
RunPhraseMatcherAnnotator: pulumi.Bool(false),
RunQaAnnotator: pulumi.Bool(false),
RunSentimentAnnotator: pulumi.Bool(false),
RunSilenceAnnotator: pulumi.Bool(true),
RunSummarizationAnnotator: pulumi.Bool(false),
SummarizationConfig: &contactcenterinsights.AnalysisRuleAnnotatorSelectorSummarizationConfigArgs{
SummarizationModel: pulumi.String("BASELINE_MODEL"),
},
},
AnalysisPercentage: pulumi.Float64(0.5),
Active: pulumi.Bool(true),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var analysisRuleFull = new Gcp.ContactCenterInsights.AnalysisRule("analysis_rule_full", new()
{
Location = "us-central1",
DisplayName = "analysis-rule-display-name",
ConversationFilter = "agent_id = \"1\"",
AnnotatorSelector = new Gcp.ContactCenterInsights.Inputs.AnalysisRuleAnnotatorSelectorArgs
{
RunInterruptionAnnotator = false,
IssueModels = new[]
{
"projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id",
},
PhraseMatchers = new[]
{
"projects/1111111111111/locations/us-central1/phraseMatchers/123",
},
QaConfig = new Gcp.ContactCenterInsights.Inputs.AnalysisRuleAnnotatorSelectorQaConfigArgs
{
ScorecardList = new Gcp.ContactCenterInsights.Inputs.AnalysisRuleAnnotatorSelectorQaConfigScorecardListArgs
{
QaScorecardRevisions = new[]
{
"projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id",
},
},
},
RunEntityAnnotator = false,
RunIntentAnnotator = false,
RunIssueModelAnnotator = false,
RunPhraseMatcherAnnotator = false,
RunQaAnnotator = false,
RunSentimentAnnotator = false,
RunSilenceAnnotator = true,
RunSummarizationAnnotator = false,
SummarizationConfig = new Gcp.ContactCenterInsights.Inputs.AnalysisRuleAnnotatorSelectorSummarizationConfigArgs
{
SummarizationModel = "BASELINE_MODEL",
},
},
AnalysisPercentage = 0.5,
Active = true,
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.contactcenterinsights.AnalysisRule;
import com.pulumi.gcp.contactcenterinsights.AnalysisRuleArgs;
import com.pulumi.gcp.contactcenterinsights.inputs.AnalysisRuleAnnotatorSelectorArgs;
import com.pulumi.gcp.contactcenterinsights.inputs.AnalysisRuleAnnotatorSelectorQaConfigArgs;
import com.pulumi.gcp.contactcenterinsights.inputs.AnalysisRuleAnnotatorSelectorQaConfigScorecardListArgs;
import com.pulumi.gcp.contactcenterinsights.inputs.AnalysisRuleAnnotatorSelectorSummarizationConfigArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var analysisRuleFull = new AnalysisRule("analysisRuleFull", AnalysisRuleArgs.builder()
.location("us-central1")
.displayName("analysis-rule-display-name")
.conversationFilter("agent_id = \"1\"")
.annotatorSelector(AnalysisRuleAnnotatorSelectorArgs.builder()
.runInterruptionAnnotator(false)
.issueModels("projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id")
.phraseMatchers("projects/1111111111111/locations/us-central1/phraseMatchers/123")
.qaConfig(AnalysisRuleAnnotatorSelectorQaConfigArgs.builder()
.scorecardList(AnalysisRuleAnnotatorSelectorQaConfigScorecardListArgs.builder()
.qaScorecardRevisions("projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id")
.build())
.build())
.runEntityAnnotator(false)
.runIntentAnnotator(false)
.runIssueModelAnnotator(false)
.runPhraseMatcherAnnotator(false)
.runQaAnnotator(false)
.runSentimentAnnotator(false)
.runSilenceAnnotator(true)
.runSummarizationAnnotator(false)
.summarizationConfig(AnalysisRuleAnnotatorSelectorSummarizationConfigArgs.builder()
.summarizationModel("BASELINE_MODEL")
.build())
.build())
.analysisPercentage(0.5)
.active(true)
.build());
}
}
resources:
analysisRuleFull:
type: gcp:contactcenterinsights:AnalysisRule
name: analysis_rule_full
properties:
location: us-central1
displayName: analysis-rule-display-name
conversationFilter: agent_id = "1"
annotatorSelector:
runInterruptionAnnotator: false
issueModels:
- projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id
phraseMatchers:
- projects/1111111111111/locations/us-central1/phraseMatchers/123
qaConfig:
scorecardList:
qaScorecardRevisions:
- projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id
runEntityAnnotator: false
runIntentAnnotator: false
runIssueModelAnnotator: false
runPhraseMatcherAnnotator: false
runQaAnnotator: false
runSentimentAnnotator: false
runSilenceAnnotator: true
runSummarizationAnnotator: false
summarizationConfig:
summarizationModel: BASELINE_MODEL
analysisPercentage: 0.5
active: true
The conversationFilter uses a query syntax to select conversations (here, filtering by agent_id). The annotatorSelector block controls which analysis features run: issueModels detect conversation topics, phraseMatchers find specific phrases, and qaConfig applies quality scorecards. The analysisPercentage samples 50% of matching conversations. Setting active to true enables the rule immediately.
Use conversation profiles for summarization
Organizations with custom summarization behavior can reference conversation profiles instead of baseline models.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const analysisRuleProfile = new gcp.contactcenterinsights.AnalysisRule("analysis_rule_profile", {
location: "us-central1",
displayName: "analysis-rule-display-name",
conversationFilter: "agent_id = \"1\"",
annotatorSelector: {
runInterruptionAnnotator: false,
issueModels: ["projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id"],
phraseMatchers: ["projects/1111111111111/locations/us-central1/phraseMatchers/123"],
qaConfig: {
scorecardList: {
qaScorecardRevisions: ["projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id"],
},
},
runEntityAnnotator: false,
runIntentAnnotator: false,
runIssueModelAnnotator: false,
runPhraseMatcherAnnotator: false,
runQaAnnotator: false,
runSentimentAnnotator: false,
runSilenceAnnotator: true,
runSummarizationAnnotator: false,
summarizationConfig: {
conversationProfile: "projects/1111111111111/locations/us-central1/conversationProfiles/some_conversation_profile",
},
},
analysisPercentage: 0.5,
active: true,
});
import pulumi
import pulumi_gcp as gcp
analysis_rule_profile = gcp.contactcenterinsights.AnalysisRule("analysis_rule_profile",
location="us-central1",
display_name="analysis-rule-display-name",
conversation_filter="agent_id = \"1\"",
annotator_selector={
"run_interruption_annotator": False,
"issue_models": ["projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id"],
"phrase_matchers": ["projects/1111111111111/locations/us-central1/phraseMatchers/123"],
"qa_config": {
"scorecard_list": {
"qa_scorecard_revisions": ["projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id"],
},
},
"run_entity_annotator": False,
"run_intent_annotator": False,
"run_issue_model_annotator": False,
"run_phrase_matcher_annotator": False,
"run_qa_annotator": False,
"run_sentiment_annotator": False,
"run_silence_annotator": True,
"run_summarization_annotator": False,
"summarization_config": {
"conversation_profile": "projects/1111111111111/locations/us-central1/conversationProfiles/some_conversation_profile",
},
},
analysis_percentage=0.5,
active=True)
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/contactcenterinsights"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := contactcenterinsights.NewAnalysisRule(ctx, "analysis_rule_profile", &contactcenterinsights.AnalysisRuleArgs{
Location: pulumi.String("us-central1"),
DisplayName: pulumi.String("analysis-rule-display-name"),
ConversationFilter: pulumi.String("agent_id = \"1\""),
AnnotatorSelector: &contactcenterinsights.AnalysisRuleAnnotatorSelectorArgs{
RunInterruptionAnnotator: pulumi.Bool(false),
IssueModels: pulumi.StringArray{
pulumi.String("projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id"),
},
PhraseMatchers: pulumi.StringArray{
pulumi.String("projects/1111111111111/locations/us-central1/phraseMatchers/123"),
},
QaConfig: &contactcenterinsights.AnalysisRuleAnnotatorSelectorQaConfigArgs{
ScorecardList: &contactcenterinsights.AnalysisRuleAnnotatorSelectorQaConfigScorecardListArgs{
QaScorecardRevisions: pulumi.StringArray{
pulumi.String("projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id"),
},
},
},
RunEntityAnnotator: pulumi.Bool(false),
RunIntentAnnotator: pulumi.Bool(false),
RunIssueModelAnnotator: pulumi.Bool(false),
RunPhraseMatcherAnnotator: pulumi.Bool(false),
RunQaAnnotator: pulumi.Bool(false),
RunSentimentAnnotator: pulumi.Bool(false),
RunSilenceAnnotator: pulumi.Bool(true),
RunSummarizationAnnotator: pulumi.Bool(false),
SummarizationConfig: &contactcenterinsights.AnalysisRuleAnnotatorSelectorSummarizationConfigArgs{
ConversationProfile: pulumi.String("projects/1111111111111/locations/us-central1/conversationProfiles/some_conversation_profile"),
},
},
AnalysisPercentage: pulumi.Float64(0.5),
Active: pulumi.Bool(true),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var analysisRuleProfile = new Gcp.ContactCenterInsights.AnalysisRule("analysis_rule_profile", new()
{
Location = "us-central1",
DisplayName = "analysis-rule-display-name",
ConversationFilter = "agent_id = \"1\"",
AnnotatorSelector = new Gcp.ContactCenterInsights.Inputs.AnalysisRuleAnnotatorSelectorArgs
{
RunInterruptionAnnotator = false,
IssueModels = new[]
{
"projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id",
},
PhraseMatchers = new[]
{
"projects/1111111111111/locations/us-central1/phraseMatchers/123",
},
QaConfig = new Gcp.ContactCenterInsights.Inputs.AnalysisRuleAnnotatorSelectorQaConfigArgs
{
ScorecardList = new Gcp.ContactCenterInsights.Inputs.AnalysisRuleAnnotatorSelectorQaConfigScorecardListArgs
{
QaScorecardRevisions = new[]
{
"projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id",
},
},
},
RunEntityAnnotator = false,
RunIntentAnnotator = false,
RunIssueModelAnnotator = false,
RunPhraseMatcherAnnotator = false,
RunQaAnnotator = false,
RunSentimentAnnotator = false,
RunSilenceAnnotator = true,
RunSummarizationAnnotator = false,
SummarizationConfig = new Gcp.ContactCenterInsights.Inputs.AnalysisRuleAnnotatorSelectorSummarizationConfigArgs
{
ConversationProfile = "projects/1111111111111/locations/us-central1/conversationProfiles/some_conversation_profile",
},
},
AnalysisPercentage = 0.5,
Active = true,
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.contactcenterinsights.AnalysisRule;
import com.pulumi.gcp.contactcenterinsights.AnalysisRuleArgs;
import com.pulumi.gcp.contactcenterinsights.inputs.AnalysisRuleAnnotatorSelectorArgs;
import com.pulumi.gcp.contactcenterinsights.inputs.AnalysisRuleAnnotatorSelectorQaConfigArgs;
import com.pulumi.gcp.contactcenterinsights.inputs.AnalysisRuleAnnotatorSelectorQaConfigScorecardListArgs;
import com.pulumi.gcp.contactcenterinsights.inputs.AnalysisRuleAnnotatorSelectorSummarizationConfigArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var analysisRuleProfile = new AnalysisRule("analysisRuleProfile", AnalysisRuleArgs.builder()
.location("us-central1")
.displayName("analysis-rule-display-name")
.conversationFilter("agent_id = \"1\"")
.annotatorSelector(AnalysisRuleAnnotatorSelectorArgs.builder()
.runInterruptionAnnotator(false)
.issueModels("projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id")
.phraseMatchers("projects/1111111111111/locations/us-central1/phraseMatchers/123")
.qaConfig(AnalysisRuleAnnotatorSelectorQaConfigArgs.builder()
.scorecardList(AnalysisRuleAnnotatorSelectorQaConfigScorecardListArgs.builder()
.qaScorecardRevisions("projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id")
.build())
.build())
.runEntityAnnotator(false)
.runIntentAnnotator(false)
.runIssueModelAnnotator(false)
.runPhraseMatcherAnnotator(false)
.runQaAnnotator(false)
.runSentimentAnnotator(false)
.runSilenceAnnotator(true)
.runSummarizationAnnotator(false)
.summarizationConfig(AnalysisRuleAnnotatorSelectorSummarizationConfigArgs.builder()
.conversationProfile("projects/1111111111111/locations/us-central1/conversationProfiles/some_conversation_profile")
.build())
.build())
.analysisPercentage(0.5)
.active(true)
.build());
}
}
resources:
analysisRuleProfile:
type: gcp:contactcenterinsights:AnalysisRule
name: analysis_rule_profile
properties:
location: us-central1
displayName: analysis-rule-display-name
conversationFilter: agent_id = "1"
annotatorSelector:
runInterruptionAnnotator: false
issueModels:
- projects/1111111111111/locations/us-central1/issueModels/some_issue_model_id
phraseMatchers:
- projects/1111111111111/locations/us-central1/phraseMatchers/123
qaConfig:
scorecardList:
qaScorecardRevisions:
- projects/1111111111111/locations/us-central1/qaScorecards/*/revisions/some_scorecard_revision_id
runEntityAnnotator: false
runIntentAnnotator: false
runIssueModelAnnotator: false
runPhraseMatcherAnnotator: false
runQaAnnotator: false
runSentimentAnnotator: false
runSilenceAnnotator: true
runSummarizationAnnotator: false
summarizationConfig:
conversationProfile: projects/1111111111111/locations/us-central1/conversationProfiles/some_conversation_profile
analysisPercentage: 0.5
active: true
The summarizationConfig block accepts either a summarizationModel (like “BASELINE_MODEL”) or a conversationProfile reference. Using conversationProfile applies custom summarization logic defined in that profile. This provides an alternative to the baseline model shown in the previous example.
Beyond these examples
These snippets focus on specific analysis rule features: conversation filtering and annotator selection, sampling and activation control, and summarization configuration. They’re intentionally minimal rather than full conversation analysis pipelines.
The examples reference pre-existing infrastructure such as issue models, phrase matchers, QA scorecards, and conversation profiles (for profile-based summarization). They focus on configuring the rule rather than provisioning the underlying analysis resources.
To keep things focused, common rule patterns are omitted, including:
- Individual annotator toggles (runEntityAnnotator, runIntentAnnotator, etc.)
- Multiple issue models or phrase matchers in a single rule
- Complex conversation filter expressions
- Runtime percentage vs analysis percentage tradeoffs
These omissions are intentional: the goal is to illustrate how each rule feature is wired, not provide drop-in analysis configurations. See the Contact Center Insights AnalysisRule resource reference for all available configuration options.
Let's configure GCP Contact Center Insights Analysis Rules
Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.
Try Pulumi Cloud for FREEFrequently Asked Questions
Rule Behavior & Filtering
conversationFilter applies the analysis rule to all conversations in the project.active to false to save the rule as a draft without applying it.conversationFilter with filter expressions like agent_id = "1". Refer to the GCP filtering documentation for syntax details.Annotator Configuration
annotatorSelector with boolean flags (like runInterruptionAnnotator, runSentimentAnnotator) and resource references (issueModels, phraseMatchers, qaConfig).summarizationConfig. Use summarizationModel for predefined models (like BASELINE_MODEL) or conversationProfile for custom conversation profile resource paths.Resource Management
location and project are immutable after creation.Using a different cloud?
Explore analytics guides for other cloud providers: