@tiledesk/tiledesk-tybot-connector 0.2.90 → 0.2.91-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -5,13 +5,6 @@
|
|
|
5
5
|
available on:
|
|
6
6
|
▶️ https://www.npmjs.com/package/@tiledesk/tiledesk-tybot-connector
|
|
7
7
|
|
|
8
|
-
# v0.2.90
|
|
9
|
-
- Added voice flow attributes: dnis, callId, ani
|
|
10
|
-
|
|
11
|
-
# v0.2.89
|
|
12
|
-
- Added convertToNumber to operations in setAttribute
|
|
13
|
-
- Added setAttributeV2 test
|
|
14
|
-
|
|
15
8
|
# v0.2.88
|
|
16
9
|
- Added DirContactUpdate (aka LeadUpdate). No test case added for LeadUpdate. Only testable with a validation test.
|
|
17
10
|
- Fixed: Attribute parameters userFullname & userEmail now are able to "bypass" the request.lead not correctly updating on the same conversation. If updated in the flow (through LeadUpdate action), they will maintain their own value through the current conversation flow.
|
|
@@ -435,6 +435,8 @@ class TiledeskChatbotUtil {
|
|
|
435
435
|
let fullName = message.senderFullname;
|
|
436
436
|
if (fullName.trim() === chatbot_name) {
|
|
437
437
|
fullName = "bot:" + fullName;
|
|
438
|
+
} else {
|
|
439
|
+
fullName = "user:" + fullName;
|
|
438
440
|
}
|
|
439
441
|
else {
|
|
440
442
|
fullName = "user:" + fullName;
|
|
@@ -443,7 +445,7 @@ class TiledeskChatbotUtil {
|
|
|
443
445
|
}
|
|
444
446
|
}
|
|
445
447
|
|
|
446
|
-
static transcriptJSON(transcript) {
|
|
448
|
+
static async transcriptJSON(transcript) {
|
|
447
449
|
const regexp = /(<.*>)/gm;
|
|
448
450
|
const parts = transcript.split(regexp);
|
|
449
451
|
// console.log("parts:", parts);
|
|
@@ -715,7 +717,7 @@ class TiledeskChatbotUtil {
|
|
|
715
717
|
const value_type = typeof value;
|
|
716
718
|
//if (projectId === "641864da99c1fb00131ba495") {console.log("641864da99c1fb00131ba495 > importing payload parameter:", key, "value:", value, "type:", value_type);}
|
|
717
719
|
//await chatbot.addParameter(key, String(value));
|
|
718
|
-
|
|
720
|
+
console.log("Adding from message.attributes:", key, "->", value);
|
|
719
721
|
await chatbot.addParameter(key, value);
|
|
720
722
|
}
|
|
721
723
|
}
|
|
@@ -723,17 +725,6 @@ class TiledeskChatbotUtil {
|
|
|
723
725
|
console.error("Error importing message payload in request variables:", err);
|
|
724
726
|
}
|
|
725
727
|
}
|
|
726
|
-
|
|
727
|
-
// voice-vxml attributes
|
|
728
|
-
if (message.attributes.dnis) {
|
|
729
|
-
await chatbot.addParameter("dnis", message.attributes.dnis);
|
|
730
|
-
}
|
|
731
|
-
if (message.attributes.callId) {
|
|
732
|
-
await chatbot.addParameter("callId", message.attributes.callId);
|
|
733
|
-
}
|
|
734
|
-
if (message.attributes.ani) {
|
|
735
|
-
await chatbot.addParameter("ani", message.attributes.ani);
|
|
736
|
-
}
|
|
737
728
|
}
|
|
738
729
|
|
|
739
730
|
const _bot = chatbot.bot; // aka FaqKB
|
package/package.json
CHANGED
|
@@ -3,6 +3,8 @@ const { TiledeskChatbot } = require("../../models/TiledeskChatbot");
|
|
|
3
3
|
const { Filler } = require("../Filler");
|
|
4
4
|
let https = require("https");
|
|
5
5
|
const { DirIntent } = require("./DirIntent");
|
|
6
|
+
const { TiledeskChatbotConst } = require("../../models/TiledeskChatbotConst");
|
|
7
|
+
const { TiledeskChatbotUtil } = require("../../models/TiledeskChatbotUtil");
|
|
6
8
|
require('dotenv').config();
|
|
7
9
|
|
|
8
10
|
class DirGptTask {
|
|
@@ -12,6 +14,7 @@ class DirGptTask {
|
|
|
12
14
|
throw new Error('context object is mandatory');
|
|
13
15
|
}
|
|
14
16
|
this.context = context;
|
|
17
|
+
this.chatbot = this.context.chatbot;
|
|
15
18
|
this.tdcache = this.context.tdcache;
|
|
16
19
|
this.requestId = this.context.requestId;
|
|
17
20
|
this.intentDir = new DirIntent(context);
|
|
@@ -47,6 +50,7 @@ class DirGptTask {
|
|
|
47
50
|
let falseIntent = action.falseIntent;
|
|
48
51
|
let trueIntentAttributes = action.trueIntentAttributes;
|
|
49
52
|
let falseIntentAttributes = action.falseIntentAttributes;
|
|
53
|
+
let transcript;
|
|
50
54
|
|
|
51
55
|
if (this.log) {
|
|
52
56
|
console.log("DirGptTask trueIntent", trueIntent)
|
|
@@ -62,6 +66,7 @@ class DirGptTask {
|
|
|
62
66
|
if (!action.question || action.question === '') {
|
|
63
67
|
console.error("Error: DirGptTask question attribute is mandatory. Executing condition false...")
|
|
64
68
|
if (falseIntent) {
|
|
69
|
+
await this.chatbot.addParameter("flowError", "GPT Error: question attribute is undefined");
|
|
65
70
|
await this.#executeCondition(false, trueIntent, trueIntentAttributes, falseIntent, falseIntentAttributes);
|
|
66
71
|
callback(true);
|
|
67
72
|
return;
|
|
@@ -92,6 +97,18 @@ class DirGptTask {
|
|
|
92
97
|
console.log("DirGptTask temperature: ", temperature);
|
|
93
98
|
}
|
|
94
99
|
|
|
100
|
+
if (action.history) {
|
|
101
|
+
let transcript_string = await TiledeskChatbot.getParameterStatic(
|
|
102
|
+
this.context.tdcache,
|
|
103
|
+
this.context.requestId,
|
|
104
|
+
TiledeskChatbotConst.REQ_TRANSCRIPT_KEY);
|
|
105
|
+
if (this.log) { console.log("DirGptTask transcript string: ", transcript_string) }
|
|
106
|
+
|
|
107
|
+
transcript = await TiledeskChatbotUtil.transcriptJSON(transcript_string);
|
|
108
|
+
if (this.log) { console.log("DirGptTask transcript: ", transcript) }
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
95
112
|
const server_base_url = process.env.API_ENDPOINT || process.env.API_URL;
|
|
96
113
|
const openai_url = process.env.OPENAI_ENDPOINT + "/chat/completions";
|
|
97
114
|
if (this.log) {
|
|
@@ -115,6 +132,7 @@ class DirGptTask {
|
|
|
115
132
|
console.error("DirGptTask gptkey is mandatory");
|
|
116
133
|
await this.#assignAttributes(action, answer);
|
|
117
134
|
if (falseIntent) {
|
|
135
|
+
await this.chatbot.addParameter("flowError", "GPT Error: gpt apikey is undefined");
|
|
118
136
|
await this.#executeCondition(false, trueIntent, trueIntentAttributes, falseIntent, falseIntentAttributes);
|
|
119
137
|
callback(true);
|
|
120
138
|
return;
|
|
@@ -134,22 +152,39 @@ class DirGptTask {
|
|
|
134
152
|
|
|
135
153
|
let json = {
|
|
136
154
|
model: action.model,
|
|
137
|
-
messages: [
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
155
|
+
messages: [],
|
|
156
|
+
// messages: [
|
|
157
|
+
// {
|
|
158
|
+
// role: "user",
|
|
159
|
+
// content: filled_question
|
|
160
|
+
// }
|
|
161
|
+
// ],
|
|
143
162
|
max_tokens: action.max_tokens,
|
|
144
|
-
temperature: action.temperature
|
|
163
|
+
temperature: action.temperature,
|
|
145
164
|
}
|
|
146
165
|
|
|
147
166
|
let message = { role: "", content: "" };
|
|
167
|
+
|
|
148
168
|
if (action.context) {
|
|
149
|
-
message
|
|
150
|
-
|
|
151
|
-
|
|
169
|
+
let message = {
|
|
170
|
+
role: "system",
|
|
171
|
+
content: filled_context
|
|
172
|
+
}
|
|
173
|
+
json.messages.push(message);
|
|
152
174
|
}
|
|
175
|
+
|
|
176
|
+
if (transcript) {
|
|
177
|
+
transcript.forEach(msg => {
|
|
178
|
+
if (!msg.content.startsWith('/')) {
|
|
179
|
+
let message = {
|
|
180
|
+
role: msg.role,
|
|
181
|
+
content: msg.content
|
|
182
|
+
}
|
|
183
|
+
json.messages.push(message)
|
|
184
|
+
}
|
|
185
|
+
})
|
|
186
|
+
}
|
|
187
|
+
|
|
153
188
|
if (this.log) { console.log("DirGptTask json: ", json) }
|
|
154
189
|
|
|
155
190
|
const HTTPREQUEST = {
|
|
@@ -167,10 +202,11 @@ class DirGptTask {
|
|
|
167
202
|
if (err) {
|
|
168
203
|
if (this.log) {
|
|
169
204
|
console.error("(httprequest) DirGptTask openai err:", err);
|
|
170
|
-
console.error("(httprequest) DirGptTask openai err:", err.response
|
|
205
|
+
console.error("(httprequest) DirGptTask openai err:", err.response?.data?.error?.message);
|
|
171
206
|
}
|
|
172
207
|
await this.#assignAttributes(action, answer);
|
|
173
208
|
if (falseIntent) {
|
|
209
|
+
await this.chatbot.addParameter("flowError", "GPT Error: " + err.response?.data?.error?.message);
|
|
174
210
|
await this.#executeCondition(false, trueIntent, trueIntentAttributes, falseIntent, falseIntentAttributes);
|
|
175
211
|
callback(true);
|
|
176
212
|
return;
|