Enable Pub/Sub notifications for Conversational Insights events

Enabling Pub/Sub notifications lets you receive a notification each time a Insights event completes. You can configure Insights to send a notification for all events or only specified events. To learn more about the events that can trigger Pub/Sub notifications, see the reference documentation .

Prerequisites

  1. Follow the instructions to create a Pub/Sub topic and a pull subscription .

Enable Pub/Sub notifications

You can configure Insights to send a notification for specific events onlyor for all events. The following code sample configures Insights to only send a notification each time a conversation or an analysis is created.

REST

Before using any of the request data, make the following replacements:

  • PROJECT_ID : your Google Cloud project ID.
  • TOPIC_ID : the ID for the notification topic (for example, notify each time a conversation is created). Each notification topic should have a unique ID.

HTTP method and URL:

PATCH https://contactcenterinsights.googleapis.com/v1/projects/ PROJECT_ID 
/locations/us-central1/settings?updateMask=pubsub_notification_settings

Request JSON body:

{
  "pubsub_notification_settings": {
    "create-conversation": "projects/ PROJECT_ID 
/topics/ TOPIC_ID_1 
",
    "create-analysis": "projects/ PROJECT_ID 
/topics/ TOPIC_ID_2 
"
  },
}

To send your request, expand one of these options:

You should receive a JSON response similar to the following:

{
  "name": "projects/ PROJECT_ID 
/locations/us-central1/settings",
  "createTime": "2021-01-20T10:10:10.123000Z",
  "updateTime": "2021-01-20T11:11:11.456000Z",
  "pubsubNotificationSettings": {
    "create-conversation": "projects/ PROJECT_ID 
/topics/ TOPIC_ID_1 
",
    "create-analysis": "projects/ PROJECT_ID 
/topics/ TOPIC_ID_2 
"
  }
}

Python

To authenticate to Insights, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  from 
  
 google.api_core 
  
 import 
 protobuf_helpers 
 from 
  
 google.cloud 
  
 import 
  contact_center_insights_v1 
 
 def 
  
 enable_pubsub_notifications 
 ( 
 project_id 
 : 
 str 
 , 
 topic_create_conversation 
 : 
 str 
 , 
 topic_create_analysis 
 : 
 str 
 ) 
 - 
> None 
 : 
  
 """Enables Cloud Pub/Sub notifications for specified events. 
 Args: 
 project_id: 
 The project identifier. For example, 'my-project'. 
 topic_create_conversation: 
 The Cloud Pub/Sub topic to notify of conversation creation events. 
 Format is 'projects/{project_id}/topics/{topic_id}'. 
 For example, 'projects/my-project/topics/my-topic'. 
 topic_create_analysis: 
 The Cloud Pub/Sub topic to notify of analysis creation events. 
 Format is 'projects/{project_id}/topics/{topic_id}'. 
 For example, 'projects/my-project/topics/my-topic'. 
 Returns: 
 None. 
 """ 
 # Construct a settings resource. 
 settings 
 = 
  contact_center_insights_v1 
 
 . 
  Settings 
 
 () 
 settings 
 . 
 name 
 = 
 ( 
  contact_center_insights_v1 
 
 . 
  ContactCenterInsightsClient 
 
 . 
 settings_path 
 ( 
 project_id 
 , 
 "us-central1" 
 ) 
 ) 
 settings 
 . 
 pubsub_notification_settings 
 = 
 { 
 "create-conversation" 
 : 
 topic_create_conversation 
 , 
 "create-analysis" 
 : 
 topic_create_analysis 
 , 
 } 
 update_mask 
 = 
 protobuf_helpers 
 . 
 field_mask 
 ( 
 None 
 , 
 type 
 ( 
 settings 
 ) 
 . 
 pb 
 ( 
 settings 
 )) 
 # Call the Insights client to enable Pub/Sub notifications. 
 insights_client 
 = 
  contact_center_insights_v1 
 
 . 
  ContactCenterInsightsClient 
 
 () 
 insights_client 
 . 
  update_settings 
 
 ( 
 settings 
 = 
 settings 
 , 
 update_mask 
 = 
 update_mask 
 ) 
 print 
 ( 
 "Enabled Pub/Sub notifications" 
 ) 
 

Java

To authenticate to Insights, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  import 
  
 com.google.cloud.contactcenterinsights.v1. ContactCenterInsightsClient 
 
 ; 
 import 
  
 com.google.cloud.contactcenterinsights.v1. Settings 
 
 ; 
 import 
  
 com.google.cloud.contactcenterinsights.v1. SettingsName 
 
 ; 
 import 
  
 com.google.protobuf. FieldMask 
 
 ; 
 import 
  
 java.io.IOException 
 ; 
 public 
  
 class 
 EnablePubSubNotifications 
  
 { 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 IOException 
  
 { 
  
 // TODO(developer): Replace these variables before running the sample. 
  
 String 
  
 projectId 
  
 = 
  
 "my_project_id" 
 ; 
  
 String 
  
 topicCreateConversation 
  
 = 
  
 "projects/my_project_id/topics/my_topic_id" 
 ; 
  
 String 
  
 topicCreateAnalysis 
  
 = 
  
 "projects/my_project_id/topics/my_other_topic_id" 
 ; 
  
 enablePubSubNotifications 
 ( 
 projectId 
 , 
  
 topicCreateConversation 
 , 
  
 topicCreateAnalysis 
 ); 
  
 } 
  
 public 
  
 static 
  
 void 
  
 enablePubSubNotifications 
 ( 
  
 String 
  
 projectId 
 , 
  
 String 
  
 topicCreateConversation 
 , 
  
 String 
  
 topicCreateAnalysis 
 ) 
  
 throws 
  
 IOException 
  
 { 
  
 // Initialize client that will be used to send requests. This client only needs to be created 
  
 // once, and can be reused for multiple requests. After completing all of your requests, call 
  
 // the "close" method on the client to safely clean up any remaining background resources. 
  
 try 
  
 ( 
  ContactCenterInsightsClient 
 
  
 client 
  
 = 
  
  ContactCenterInsightsClient 
 
 . 
 create 
 ()) 
  
 { 
  
 // Construct a settings resource. 
  
  SettingsName 
 
  
 name 
  
 = 
  
  SettingsName 
 
 . 
 of 
 ( 
 projectId 
 , 
  
 "us-central1" 
 ); 
  
  Settings 
 
  
 settings 
  
 = 
  
  Settings 
 
 . 
 newBuilder 
 () 
  
 . 
 setName 
 ( 
 name 
 . 
  toString 
 
 ()) 
  
 . 
  putPubsubNotificationSettings 
 
 ( 
 "create-conversation" 
 , 
  
 topicCreateConversation 
 ) 
  
 . 
  putPubsubNotificationSettings 
 
 ( 
 "create-analysis" 
 , 
  
 topicCreateAnalysis 
 ) 
  
 . 
 build 
 (); 
  
 // Construct an update mask. 
  
  FieldMask 
 
  
 updateMask 
  
 = 
  
  FieldMask 
 
 . 
 newBuilder 
 (). 
  addPaths 
 
 ( 
 "pubsub_notification_settings" 
 ). 
 build 
 (); 
  
 // Call the Insights client to enable Pub/Sub notifications. 
  
  Settings 
 
  
 response 
  
 = 
  
 client 
 . 
 updateSettings 
 ( 
 settings 
 , 
  
 updateMask 
 ); 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
 "Enabled Pub/Sub notifications" 
 ); 
  
 } 
  
 } 
 } 
 

Node.js

To authenticate to Insights, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  /** 
 * TODO(developer): Uncomment these variables before running the sample. 
 */ 
 // const projectId = 'my_project_id'; 
 // const topicCreateConversation = 'projects/my_project_id/topics/my_topic_id'; 
 // const topicCreateAnalysis = 'projects/my_project_id/topics/my_other_topic_id'; 
 // Imports the Contact Center Insights client. 
 const 
  
 { 
  
 ContactCenterInsightsClient 
 , 
 } 
  
 = 
  
 require 
 ( 
 ' @google-cloud/contact-center-insights 
' 
 ); 
 // Instantiates a client. 
 const 
  
 client 
  
 = 
  
 new 
  
  ContactCenterInsightsClient 
 
 (); 
 async 
  
 function 
  
 enablePubSubNotifications 
 () 
  
 { 
  
 const 
  
 [ 
 settings 
 ] 
  
 = 
  
 await 
  
 client 
 . 
 updateSettings 
 ({ 
  
 settings 
 : 
  
 { 
  
 name 
 : 
  
 client 
 . 
  settingsPath 
 
 ( 
 projectId 
 , 
  
 'us-central1' 
 ), 
  
 pubsubNotificationSettings 
 : 
  
 { 
  
 'create-conversation' 
 : 
  
 topicCreateConversation 
 , 
  
 'create-analysis' 
 : 
  
 topicCreateAnalysis 
 , 
  
 }, 
  
 }, 
  
 updateMask 
 : 
  
 { 
  
 paths 
 : 
  
 [ 
 'pubsub_notification_settings' 
 ], 
  
 }, 
  
 }); 
  
 console 
 . 
 info 
 ( 
 `Enabled Pub/Sub notifications for 
 ${ 
 settings 
 . 
 name 
 } 
 ` 
 ); 
 } 
 enablePubSubNotifications 
 (); 
 

Content of the Pub/Sub message

The content of the Pub/Sub message depends on the event that triggers that Pub/Sub notification.

Trigger Message Data Message Attributes
create-analysis
Long-running operation whose response is an analysis {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}
create-conversation
Conversation {"conversation_name": "projects/{project}/locations/{location}/conversations/{conversation}"}
export-insights-data
Long-running operation whose response is empty {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}
ingest-conversations
Long-running operation whose response is empty {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}
update-conversation
Conversation {"conversation_name": "projects/{project}/locations/{location}/conversations/{conversation}"}
upload-conversation
Long-running operation whose response is empty {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}
Design a Mobile Site
View Site in Mobile | Classic
Share by: