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 multiple annotators, and profile-based summarization.
Analysis rules reference existing issue models, phrase matchers, QA scorecards, and optionally conversation profiles. The examples are intentionally small. Combine them with your own filters and annotator configurations.
Create a minimal analysis rule with location and name
Most deployments start by creating a basic rule that applies to all conversations in a location, establishing the foundation before adding filters or annotators.
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 where the rule operates. The displayName provides a human-readable identifier. Without conversationFilter or annotatorSelector, the rule uses default behavior and applies to all conversations.
Filter conversations and configure multiple annotators
Production rules typically target specific conversations and run multiple analysis types like issue detection, phrase matching, and quality scoring.
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 property uses a query syntax to select conversations (here, filtering by agent_id). The annotatorSelector block enables specific analysis types: issueModels for issue detection, phraseMatchers for phrase matching, and qaConfig for quality assurance scoring. The analysisPercentage property controls sampling (0.5 means 50% of matching conversations). The active property determines whether the rule runs immediately or stays in draft mode.
Use conversation profiles for summarization
Some workflows use conversation profiles to configure summarization instead of selecting a baseline model directly, allowing centralized configuration across multiple rules.
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 references a conversationProfile instead of specifying a summarizationModel. This delegates summarization behavior to the profile’s configuration. The rest of the annotatorSelector configuration works identically to the previous example.
Beyond these examples
These snippets focus on specific analysis rule features: conversation filtering and annotator selection, issue detection and phrase matching, and QA scoring and summarization. They’re intentionally minimal rather than full 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.)
- Analysis sampling strategies (analysisPercentage tuning)
- Rule activation lifecycle (active property management)
- Filter syntax for complex conversation queries
These omissions are intentional: the goal is to illustrate how each rule feature is wired, not provide drop-in analysis modules. 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 & Scope
conversationFilter with filter expressions like agent_id = "1". An empty filter applies the rule to all conversations.Configuration & Lifecycle
active to true to apply the rule to conversations, or false to save it as an inactive draft.location and project cannot be changed after creation.location and displayName, as shown in the basic example.Annotators & Analysis
run*Annotator flag in annotatorSelector.summarizationConfig. Use summarizationModel (e.g., BASELINE_MODEL) for model-based summarization, or conversationProfile to reference an existing conversation profile.Using a different cloud?
Explore analytics guides for other cloud providers: