Skip to content

Commit

Permalink
samples: create topic model (#49)
Browse files Browse the repository at this point in the history
* samples: create topic model

* 🦉 Updates from OwlBot

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* use async

* 🦉 Updates from OwlBot

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* use filter

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
  • Loading branch information
TrucHLe and gcf-owl-bot[bot] authored Sep 20, 2021
1 parent fed96eb commit ab4b34d
Show file tree
Hide file tree
Showing 2 changed files with 145 additions and 0 deletions.
56 changes: 56 additions & 0 deletions contact-center-insights/createIssueModel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// Copyright 2021 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

'use strict';

function main(projectId) {
// [START contactcenterinsights_create_issue_model]
/**
* TODO(developer): Uncomment this variable before running the sample.
*/
// const projectId = 'my_project_id';

// Imports the Contact Center Insights client.
const {
ContactCenterInsightsClient,
} = require('@google-cloud/contact-center-insights');

// Instantiates a client.
const client = new ContactCenterInsightsClient();

async function createIssueModel() {
const [operation] = await client.createIssueModel({
parent: client.locationPath(projectId, 'us-central1'),
issueModel: {
displayName: 'my-model',
inputDataConfig: {
filter: 'medium="CHAT"',
},
},
});

// Wait for the operation to complete.
const [issueModel] = await operation.promise();
console.info(`Created ${issueModel.name}`);
}
createIssueModel();
// [END contactcenterinsights_create_issue_model]
}

process.on('unhandledRejection', err => {
console.error(err.message);
process.exitCode = 1;
});
main(...process.argv.slice(2));
89 changes: 89 additions & 0 deletions contact-center-insights/test/createIssueModel.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
// Copyright 2021 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

'use strict';

const {assert} = require('chai');
const {after, before, describe, it} = require('mocha');
const cp = require('child_process');
const execSync = cmd => cp.execSync(cmd, {encoding: 'utf-8'});

const {
ContactCenterInsightsClient,
} = require('@google-cloud/contact-center-insights');
const client = new ContactCenterInsightsClient();

describe('CreateIssueModel', () => {
const minConversationCount = 10000;
const pageSize = 1000;
let projectId;
let conversationCount;
let issueModelName;

before(async () => {
projectId = await client.getProjectId();

// Check if the project has the minimum number of conversations required to create an issue model.
// See https://cloud.google.com/contact-center/insights/docs/topic-model.
conversationCount = 0;
let pageToken = '';
let listResponse;
while (conversationCount < minConversationCount) {
if (pageToken) {
[listResponse] = await client.listConversations({
parent: client.locationPath(projectId, 'us-central1'),
pageSize: pageSize,
pageToken: pageToken,
});
} else {
[listResponse] = await client.listConversations({
parent: client.locationPath(projectId, 'us-central1'),
pageSize: pageSize,
});
}

if (!listResponse.conversations) {
break;
}
conversationCount += listResponse.conversations.length;

if (!listResponse.nextPageToken) {
break;
}
pageToken = listResponse.nextPageToken;
}
});

after(async () => {
if (conversationCount >= minConversationCount) {
client.deleteIssueModel({
name: issueModelName,
});
}
});

it('should create an issue model', async () => {
if (conversationCount >= minConversationCount) {
const stdout = execSync(`node ./createIssueModel.js ${projectId}`);
issueModelName = stdout.slice(8);
assert.match(
stdout,
new RegExp(
'Created projects/[0-9]+/locations/us-central1/issueModels/[0-9]+'
)
);
}
});
});

0 comments on commit ab4b34d

Please sign in to comment.