Skip to content

Commit

Permalink
fix(customer-satisfaction.gbapp): Fix rate and suggestion text store.
Browse files Browse the repository at this point in the history
  • Loading branch information
rodrigorodriguez committed Dec 7, 2020
1 parent 073d118 commit 55bb46d
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 25 deletions.
8 changes: 7 additions & 1 deletion DATABASE-CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,10 @@ GO

ALTER TABLE dbo.GuaribasUser ADD
hearOnDialog nvarchar(64) NULL
GO
GO


ALTER TABLE dbo.GuaribasConversation ADD
instanceId int,
feedback nvarchar(512) NULL
GO
9 changes: 9 additions & 0 deletions packages/analytics.gblib/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ export class GuaribasConversation extends Model<GuaribasConversation> {
@Column
public conversationId: number;

@ForeignKey(() => GuaribasInstance)
@Column
public instanceId: number;


@ForeignKey(() => GuaribasSubject)
@Column
public startSubjectId: number;
Expand All @@ -87,6 +92,10 @@ export class GuaribasConversation extends Model<GuaribasConversation> {
@Column
public rate: number;

@Column(DataType.STRING(512))
@Column
public feedback: string;

@Column
@CreatedAt
public createdAt: Date;
Expand Down
26 changes: 19 additions & 7 deletions packages/analytics.gblib/services/AnalyticsService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@

import { GuaribasUser } from '../../security.gbapp/models';
import { GuaribasConversation, GuaribasConversationMessage } from '../models';
import { GBServer } from '../../../src/app';
import { AzureText } from 'pragmatismo-io-framework';

/**
* Base services for Bot Analytics.
Expand All @@ -48,22 +50,32 @@ export class AnalyticsService {
const conversation = new GuaribasConversation();
conversation.startedBy = user;
conversation.startedByUserId = user.userId;
conversation.instanceId = user.instanceId;

return await conversation.save();
}

public async updateConversationRate(
instanceId: number,
conversationId: number,
rate: number
): Promise<GuaribasConversation> {
public async updateConversationSuggestion(instanceId: number, conversationId: string, feedback: string, locale: string): Promise<number> {

const minBoot = GBServer.globals.minBoot as any;
const rate = await AzureText.getSentiment(
minBoot.instance.textAnalyticsKey ? minBoot.instance.textAnalyticsKey : minBoot.instance.textAnalyticsKey,
minBoot.instance.textAnalyticsEndpoint ? minBoot.instance.textAnalyticsEndpoint : minBoot.instance.textAnalyticsEndpoint,
locale,
feedback
);

const options = { where: { } };

options.where = { conversationId: conversationId, instanceId: instanceId };
const item = await GuaribasConversation.findOne(options);

item.feedback = feedback;
item.rate = rate;
item.rateDate = new Date();
return item.save();
await item.save();

return rate;

}


Expand Down
11 changes: 9 additions & 2 deletions packages/core.gbapp/services/GBConversationalService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -579,8 +579,15 @@ export class GBConversationalService {
return false;
}

text = text.toLowerCase().replace('who\'s', 'who is');
text = text.toLowerCase().replace('what\'s', 'what is');
text = text.toLowerCase();
text = text.replace('who\'s', 'who is');
text = text.replace('what\'s', 'what is');
text = text.replace('?', ' ');
text = text.replace('!', ' ');
text = text.replace('.', ' ');
text = text.replace('/', ' ');
text = text.replace('\\', ' ');
text = text.replace('\r\n', ' ');

const model = new LuisRecognizer({
applicationId: min.instance.nlpAppId,
Expand Down
19 changes: 5 additions & 14 deletions packages/customer-satisfaction.gbapp/dialogs/FeedbackDialog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,9 @@
import { BotAdapter } from 'botbuilder';
import { WaterfallDialog } from 'botbuilder-dialogs';
import { GBMinInstance, IGBDialog } from 'botlib';
import { AzureText } from 'pragmatismo-io-framework';
import { CSService } from '../services/CSService';
import { Messages } from '../strings';
import { SecService } from '../../security.gbapp/services/SecService';
import { GBServer } from '../../../src/app';
import { AnalyticsService } from '../../analytics.gblib/services/AnalyticsService';

/**
Expand Down Expand Up @@ -138,22 +136,15 @@ export class FeedbackDialog extends IGBDialog {
return await min.conversationalService.prompt(min, step, Messages[locale].what_about_service);
},
async step => {
const minBoot = GBServer.globals.minBoot as any;
const fixedLocale = 'en-US';
const user = await min.userProfile.get(step.context, {});

const rate = await AzureText.getSentiment(
minBoot.instance.textAnalyticsKey ? minBoot.instance.textAnalyticsKey : minBoot.instance.textAnalyticsKey,
minBoot.instance.textAnalyticsEndpoint ? minBoot.instance.textAnalyticsEndpoint : minBoot.instance.textAnalyticsEndpoint,
user.systemUser.locale,
step.result
);

// Updates values to perform Bot Analytics.

// const analytics = new AnalyticsService();
// analytics.updateConversationRate(min.instance.instanceId, user.conversation, rate);

const fixedLocale = 'en-US';
const analytics = new AnalyticsService();
const rate = await analytics.updateConversationSuggestion(
min.instance.instanceId, user.conversation.conversationId, step.result, user.systemUser.locale);

if (rate > 0.5) {
await min.conversationalService.sendText(min, step, Messages[fixedLocale].glad_you_liked);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ export class QualityDialog extends IGBDialog {
// Updates values to perform Bot Analytics.

const analytics = new AnalyticsService();
analytics.updateConversationRate(min.instance.instanceId, user.conversation, score);
analytics.updateConversationSuggestion(
min.instance.instanceId, user.conversation,step.result, user.systemUser.locale);

// Goes to the ask loop.

Expand Down

0 comments on commit 55bb46d

Please sign in to comment.