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
|
||||
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
|
||||
public conversationId: number;
|
||||
|
||||
@ForeignKey(() => GuaribasInstance)
|
||||
@Column
|
||||
public instanceId: number;
|
||||
|
||||
|
||||
@ForeignKey(() => GuaribasSubject)
|
||||
@Column
|
||||
public startSubjectId: number;
|
||||
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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';
|
||||
|
||||
/**
|
||||
|
@ -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 {
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue