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
- 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 only or for all events. The following code sample configures Insights to only send a notification each time a conversation or an analysis is created.
Permissions required for this task
To perform this task, you must have the following permissions:
contactcenterinsights.settings.update
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:
curl (Linux, macOS, or Cloud Shell)
Save the request body in a file named request.json
,
and execute the following command:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://contactcenterinsights.googleapis.com/v1/projects/PROJECT_ID /locations/us-central1/settings?updateMask=pubsub_notification_settings"
PowerShell (Windows)
Save the request body in a file named request.json
,
and execute the following command:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://contactcenterinsights.googleapis.com/v1/projects/PROJECT_ID /locations/us-central1/settings?updateMask=pubsub_notification_settings" | Select-Object -Expand Content
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 " } }
To authenticate to Insights, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
To authenticate to Insights, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
To authenticate to Insights, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
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}"} |