fix(customer-satisfaction.gbapp): Fix rate and suggestion text store.
This commit is contained in:
parent
073d11833c
commit
55bb46d882
6 changed files with 51 additions and 25 deletions
|
@ -66,4 +66,10 @@ GO
|
||||||
|
|
||||||
ALTER TABLE dbo.GuaribasUser ADD
|
ALTER TABLE dbo.GuaribasUser ADD
|
||||||
hearOnDialog nvarchar(64) NULL
|
hearOnDialog nvarchar(64) NULL
|
||||||
GO
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE dbo.GuaribasConversation ADD
|
||||||
|
instanceId int,
|
||||||
|
feedback nvarchar(512) NULL
|
||||||
|
GO
|
||||||
|
|
|
@ -70,6 +70,11 @@ export class GuaribasConversation extends Model<GuaribasConversation> {
|
||||||
@Column
|
@Column
|
||||||
public conversationId: number;
|
public conversationId: number;
|
||||||
|
|
||||||
|
@ForeignKey(() => GuaribasInstance)
|
||||||
|
@Column
|
||||||
|
public instanceId: number;
|
||||||
|
|
||||||
|
|
||||||
@ForeignKey(() => GuaribasSubject)
|
@ForeignKey(() => GuaribasSubject)
|
||||||
@Column
|
@Column
|
||||||
public startSubjectId: number;
|
public startSubjectId: number;
|
||||||
|
@ -87,6 +92,10 @@ export class GuaribasConversation extends Model<GuaribasConversation> {
|
||||||
@Column
|
@Column
|
||||||
public rate: number;
|
public rate: number;
|
||||||
|
|
||||||
|
@Column(DataType.STRING(512))
|
||||||
|
@Column
|
||||||
|
public feedback: string;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@CreatedAt
|
@CreatedAt
|
||||||
public createdAt: Date;
|
public createdAt: Date;
|
||||||
|
|
|
@ -36,6 +36,8 @@
|
||||||
|
|
||||||
import { GuaribasUser } from '../../security.gbapp/models';
|
import { GuaribasUser } from '../../security.gbapp/models';
|
||||||
import { GuaribasConversation, GuaribasConversationMessage } from '../models';
|
import { GuaribasConversation, GuaribasConversationMessage } from '../models';
|
||||||
|
import { GBServer } from '../../../src/app';
|
||||||
|
import { AzureText } from 'pragmatismo-io-framework';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base services for Bot Analytics.
|
* Base services for Bot Analytics.
|
||||||
|
@ -48,22 +50,32 @@ export class AnalyticsService {
|
||||||
const conversation = new GuaribasConversation();
|
const conversation = new GuaribasConversation();
|
||||||
conversation.startedBy = user;
|
conversation.startedBy = user;
|
||||||
conversation.startedByUserId = user.userId;
|
conversation.startedByUserId = user.userId;
|
||||||
|
conversation.instanceId = user.instanceId;
|
||||||
|
|
||||||
return await conversation.save();
|
return await conversation.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async updateConversationRate(
|
public async updateConversationSuggestion(instanceId: number, conversationId: string, feedback: string, locale: string): Promise<number> {
|
||||||
instanceId: number,
|
|
||||||
conversationId: number,
|
const minBoot = GBServer.globals.minBoot as any;
|
||||||
rate: number
|
const rate = await AzureText.getSentiment(
|
||||||
): Promise<GuaribasConversation> {
|
minBoot.instance.textAnalyticsKey ? minBoot.instance.textAnalyticsKey : minBoot.instance.textAnalyticsKey,
|
||||||
|
minBoot.instance.textAnalyticsEndpoint ? minBoot.instance.textAnalyticsEndpoint : minBoot.instance.textAnalyticsEndpoint,
|
||||||
|
locale,
|
||||||
|
feedback
|
||||||
|
);
|
||||||
|
|
||||||
const options = { where: { } };
|
const options = { where: { } };
|
||||||
|
|
||||||
options.where = { conversationId: conversationId, instanceId: instanceId };
|
options.where = { conversationId: conversationId, instanceId: instanceId };
|
||||||
const item = await GuaribasConversation.findOne(options);
|
const item = await GuaribasConversation.findOne(options);
|
||||||
|
|
||||||
|
item.feedback = feedback;
|
||||||
item.rate = rate;
|
item.rate = rate;
|
||||||
item.rateDate = new Date();
|
item.rateDate = new Date();
|
||||||
return item.save();
|
await item.save();
|
||||||
|
|
||||||
|
return rate;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -579,8 +579,15 @@ export class GBConversationalService {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
text = text.toLowerCase().replace('who\'s', 'who is');
|
text = text.toLowerCase();
|
||||||
text = text.toLowerCase().replace('what\'s', 'what is');
|
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({
|
const model = new LuisRecognizer({
|
||||||
applicationId: min.instance.nlpAppId,
|
applicationId: min.instance.nlpAppId,
|
||||||
|
|
|
@ -39,11 +39,9 @@
|
||||||
import { BotAdapter } from 'botbuilder';
|
import { BotAdapter } from 'botbuilder';
|
||||||
import { WaterfallDialog } from 'botbuilder-dialogs';
|
import { WaterfallDialog } from 'botbuilder-dialogs';
|
||||||
import { GBMinInstance, IGBDialog } from 'botlib';
|
import { GBMinInstance, IGBDialog } from 'botlib';
|
||||||
import { AzureText } from 'pragmatismo-io-framework';
|
|
||||||
import { CSService } from '../services/CSService';
|
import { CSService } from '../services/CSService';
|
||||||
import { Messages } from '../strings';
|
import { Messages } from '../strings';
|
||||||
import { SecService } from '../../security.gbapp/services/SecService';
|
import { SecService } from '../../security.gbapp/services/SecService';
|
||||||
import { GBServer } from '../../../src/app';
|
|
||||||
import { AnalyticsService } from '../../analytics.gblib/services/AnalyticsService';
|
import { AnalyticsService } from '../../analytics.gblib/services/AnalyticsService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -138,22 +136,15 @@ export class FeedbackDialog extends IGBDialog {
|
||||||
return await min.conversationalService.prompt(min, step, Messages[locale].what_about_service);
|
return await min.conversationalService.prompt(min, step, Messages[locale].what_about_service);
|
||||||
},
|
},
|
||||||
async step => {
|
async step => {
|
||||||
const minBoot = GBServer.globals.minBoot as any;
|
const fixedLocale = 'en-US';
|
||||||
const user = await min.userProfile.get(step.context, {});
|
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.
|
// Updates values to perform Bot Analytics.
|
||||||
|
|
||||||
// const analytics = new AnalyticsService();
|
const analytics = new AnalyticsService();
|
||||||
// analytics.updateConversationRate(min.instance.instanceId, user.conversation, rate);
|
const rate = await analytics.updateConversationSuggestion(
|
||||||
|
min.instance.instanceId, user.conversation.conversationId, step.result, user.systemUser.locale);
|
||||||
const fixedLocale = 'en-US';
|
|
||||||
if (rate > 0.5) {
|
if (rate > 0.5) {
|
||||||
await min.conversationalService.sendText(min, step, Messages[fixedLocale].glad_you_liked);
|
await min.conversationalService.sendText(min, step, Messages[fixedLocale].glad_you_liked);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -84,7 +84,8 @@ export class QualityDialog extends IGBDialog {
|
||||||
// Updates values to perform Bot Analytics.
|
// Updates values to perform Bot Analytics.
|
||||||
|
|
||||||
const analytics = new AnalyticsService();
|
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.
|
// Goes to the ask loop.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue