@subiz/widget-v4 4.1.197 → 4.1.199
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/assets/img/default_avatar.png +0 -0
- package/assets/img/default_logo.png +0 -0
- package/assets/img/default_logo.svg +5 -0
- package/assets/less/avatar.less +2 -2
- package/assets/less/message.less +5 -0
- package/assets/less/widget.less +1 -1
- package/assets/less/widget_header.less +2 -0
- package/compiled_src/bot.js +3 -18
- package/compiled_src/chatbox/Events.js +1 -0
- package/compiled_src/chatbox/Header.js +2 -2
- package/compiled_src/chatbox/QuickReplies.js +2 -1
- package/compiled_src/chatbox/Widget.js +2 -1
- package/compiled_src/lib.js +56 -27
- package/compiled_src/store/api.js +6 -10
- package/compiled_src/store/store.js +23 -18
- package/dist/{19b9941db90.278.js → 19c2dc9a6ec.278.js} +1 -1
- package/dist/19c2dc9a6ec.app.js +1 -0
- package/dist/{19b9941db90.chat.html → 19c2dc9a6ec.chat.html} +1 -1
- package/dist/19c2dc9a6ec.chat.js +1 -0
- package/dist/{19b9941db90.form.html → 19c2dc9a6ec.form.html} +1 -1
- package/dist/19c2dc9a6ec.form.js +1 -0
- package/dist/{19b9941db90.index.html → 19c2dc9a6ec.index.html} +1 -1
- package/dist/{19b9941db90.library.html → 19c2dc9a6ec.library.html} +1 -1
- package/dist/19c2dc9a6ec.library.js +1 -0
- package/dist/{19b9941db90.preview.html → 19c2dc9a6ec.preview.html} +1 -1
- package/dist/19c2dc9a6ec.preview.js +1 -0
- package/dist/19c2dc9a6ec.webview.js +1 -0
- package/dist/DEVHASH +1 -0
- package/dist/HASH +1 -1
- package/dist/assets/img/default_avatar.e449b04.png +0 -0
- package/dist/assets/img/default_logo.dd13a2b.svg +5 -0
- package/dist/screenshoot.js +106 -71
- package/package.json +8 -8
- package/src/bot.js +4 -14
- package/src/chatbox/Events.js +1 -1
- package/src/chatbox/Header.js +2 -2
- package/src/chatbox/QuickReplies.js +10 -10
- package/src/chatbox/Widget.js +2 -2
- package/src/lib.js +45 -20
- package/src/store/api.js +6 -6
- package/src/store/store.js +20 -13
- package/dist/19b9941db90.app.js +0 -1
- package/dist/19b9941db90.chat.js +0 -1
- package/dist/19b9941db90.form.js +0 -1
- package/dist/19b9941db90.library.js +0 -1
- package/dist/19b9941db90.preview.js +0 -1
- package/dist/19b9941db90.webview.js +0 -1
- package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
- package/dist/assets/img/rating--poor.2938a25.svg +0 -12
- /package/dist/{19b9941db90.127.js → 19c2dc9a6ec.127.js} +0 -0
- /package/dist/{19b9941db90.132.js → 19c2dc9a6ec.132.js} +0 -0
- /package/dist/{19b9941db90.185.js → 19c2dc9a6ec.185.js} +0 -0
- /package/dist/{19b9941db90.27.js → 19c2dc9a6ec.27.js} +0 -0
- /package/dist/{19b9941db90.339.js → 19c2dc9a6ec.339.js} +0 -0
- /package/dist/{19b9941db90.459.js → 19c2dc9a6ec.459.js} +0 -0
- /package/dist/{19b9941db90.490.js → 19c2dc9a6ec.490.js} +0 -0
- /package/dist/{19b9941db90.74.js → 19c2dc9a6ec.74.js} +0 -0
- /package/dist/{19b9941db90.997.js → 19c2dc9a6ec.997.js} +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="200" height="200" fill="#002662"/>
|
|
3
|
+
<path d="M93 35C93 30.5817 96.5817 27 101 27H131C160.271 27 184 50.7289 184 80V200H93V35Z" fill="white" fill-opacity="0.1"/>
|
|
4
|
+
<path d="M22 147C22 119.386 44.3858 97 72 97H115C124.941 97 133 105.059 133 115V200H22V147Z" fill="white" fill-opacity="0.2"/>
|
|
5
|
+
</svg>
|
package/assets/less/avatar.less
CHANGED
package/assets/less/message.less
CHANGED
package/assets/less/widget.less
CHANGED
package/compiled_src/bot.js
CHANGED
|
@@ -17,28 +17,13 @@ function _default(store) {
|
|
|
17
17
|
run = () => true;
|
|
18
18
|
let match = _index.default.checkRunConditions(bot.initiative_frequency, bot.conditions, store.matchLastBotRun(bot.id), store);
|
|
19
19
|
if (!match) return;
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
let welcomMessages = bot.welcome_messages;
|
|
21
|
+
if (_index.default.size(welcomMessages)) {
|
|
22
22
|
let {
|
|
23
23
|
error
|
|
24
|
-
} = await store.startLightConvo(bot.id, bot.
|
|
25
|
-
if (error) return console.error(error);
|
|
24
|
+
} = await store.startLightConvo(bot.id, bot.welcome_messages, common.getLocale(bot, _index.default.detectLang()), false);
|
|
26
25
|
store.logBotRun(bot.id);
|
|
27
|
-
return;
|
|
28
26
|
}
|
|
29
|
-
let {
|
|
30
|
-
error
|
|
31
|
-
} = await store.startConvo({
|
|
32
|
-
initial_by: bot.id,
|
|
33
|
-
locale: common.getLocale(bot, _index.default.detectLang()),
|
|
34
|
-
state: 'active',
|
|
35
|
-
members: [{
|
|
36
|
-
type: 'bot',
|
|
37
|
-
id: bot.id
|
|
38
|
-
}]
|
|
39
|
-
});
|
|
40
|
-
if (error) return console.error(error);
|
|
41
|
-
store.logBotRun(bot.id);
|
|
42
27
|
};
|
|
43
28
|
let triggers = _index.default.get(bot, 'triggers') || [];
|
|
44
29
|
for (let tr of triggers) {
|
|
@@ -213,6 +213,7 @@ class Events extends _common.Com {
|
|
|
213
213
|
class: "widget-body--events-container widget-body--events-container__error"
|
|
214
214
|
}, (0, _preact.h)("img", {
|
|
215
215
|
alt: "empty",
|
|
216
|
+
class: "widget_body_empty_img",
|
|
216
217
|
src: convoemptyimg
|
|
217
218
|
}), (0, _preact.h)("div", {
|
|
218
219
|
class: "widget_body__events__error_msg"
|
|
@@ -26,7 +26,7 @@ class Header extends _common.Com {
|
|
|
26
26
|
width: 38,
|
|
27
27
|
height: 38,
|
|
28
28
|
class: "avatar avatar__account",
|
|
29
|
-
src: this.props.store.replaceFileUrl(logoUrl) || require('../../assets/img/
|
|
29
|
+
src: this.props.store.replaceFileUrl(logoUrl) || require('../../assets/img/default_logo.svg')
|
|
30
30
|
});
|
|
31
31
|
});
|
|
32
32
|
}
|
|
@@ -40,7 +40,7 @@ class Header extends _common.Com {
|
|
|
40
40
|
height: 38,
|
|
41
41
|
alt: acc.name,
|
|
42
42
|
class: "avatar avatar__account",
|
|
43
|
-
src: this.props.store.replaceFileUrl(logo_url) || require('../../assets/img/
|
|
43
|
+
src: this.props.store.replaceFileUrl(logo_url) || require('../../assets/img/default_logo.svg')
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
render() {
|
|
@@ -40,7 +40,8 @@ class QuickReplies extends _common.Com {
|
|
|
40
40
|
}
|
|
41
41
|
let $replies = _index.default.map(quickreplies, r => (0, _preact.h)("div", {
|
|
42
42
|
class: "message_quick_reply",
|
|
43
|
-
onClick: e => this.props.onSelect(r)
|
|
43
|
+
onClick: e => this.props.onSelect(r),
|
|
44
|
+
title: r.title
|
|
44
45
|
}, r.title));
|
|
45
46
|
return (0, _preact.h)("div", {
|
|
46
47
|
class: "message_quick_replies"
|
|
@@ -117,7 +117,7 @@ class Widget extends _common.Com {
|
|
|
117
117
|
id: botid,
|
|
118
118
|
bot_version: oldconvo.bot_version
|
|
119
119
|
}],
|
|
120
|
-
initial_by:
|
|
120
|
+
initial_by: botid,
|
|
121
121
|
is_testing: oldconvo.is_testing,
|
|
122
122
|
greeting_message: greeting_msg
|
|
123
123
|
});
|
|
@@ -815,6 +815,7 @@ class Widget extends _common.Com {
|
|
|
815
815
|
}, (0, _preact.h)("div", {
|
|
816
816
|
class: "empty-container"
|
|
817
817
|
}, (0, _preact.h)("img", {
|
|
818
|
+
class: "widget_body_empty_img",
|
|
818
819
|
alt: "empty",
|
|
819
820
|
src: empty
|
|
820
821
|
}), (0, _preact.h)("div", {
|
package/compiled_src/lib.js
CHANGED
|
@@ -198,40 +198,69 @@ class Widget {
|
|
|
198
198
|
return impressiontoken;
|
|
199
199
|
}
|
|
200
200
|
async submitForm(formid, values) {
|
|
201
|
-
if (!formid || !
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
let is_lead = false;
|
|
208
|
-
values = _index.default.map(values, val => {
|
|
209
|
-
let key = val.key;
|
|
210
|
-
if (key === 'email') key = 'emails';
|
|
211
|
-
if (key === 'phone') key = 'phones';
|
|
212
|
-
is_lead = is_lead || key == 'emails' || key == 'phones';
|
|
213
|
-
_index.default.setUserAttr(user, {
|
|
214
|
-
key: key,
|
|
215
|
-
[val.type || 'text']: val.value
|
|
216
|
-
});
|
|
217
|
-
return {
|
|
218
|
-
key: key,
|
|
219
|
-
type: val.type || 'text',
|
|
220
|
-
value: _index.default.stringify(val.value)
|
|
201
|
+
if (!formid || !values) return;
|
|
202
|
+
if (_index.default.startsWith(formid, 'cp')) {
|
|
203
|
+
let storeuser = _index.default.cloneDeep(this.store.matchUser());
|
|
204
|
+
let user = {
|
|
205
|
+
id: storeuser.id,
|
|
206
|
+
account_id: storeuser.account_id
|
|
221
207
|
};
|
|
208
|
+
let is_lead = false;
|
|
209
|
+
values = _index.default.map(values, val => {
|
|
210
|
+
let key = val.key;
|
|
211
|
+
if (key === 'email') key = 'emails';
|
|
212
|
+
if (key === 'phone') key = 'phones';
|
|
213
|
+
is_lead = is_lead || key == 'emails' || key == 'phones';
|
|
214
|
+
_index.default.setUserAttr(user, {
|
|
215
|
+
key: key,
|
|
216
|
+
[val.type || 'text']: val.value
|
|
217
|
+
});
|
|
218
|
+
return {
|
|
219
|
+
key: key,
|
|
220
|
+
type: val.type || 'text',
|
|
221
|
+
value: _index.default.stringify(val.value)
|
|
222
|
+
};
|
|
223
|
+
});
|
|
224
|
+
if (is_lead) _index.default.setUserAttr(user, {
|
|
225
|
+
key: 'lead_source',
|
|
226
|
+
text: 'plugin.' + formid
|
|
227
|
+
});
|
|
228
|
+
let impressiontoken = await this.viewForm(formid);
|
|
229
|
+
this.store.setUserDiff(user);
|
|
230
|
+
return this.store.sendConversion(formid, values, impressiontoken);
|
|
231
|
+
}
|
|
232
|
+
values = _index.default.filter(values, field => {
|
|
233
|
+
return field.key && field.value;
|
|
222
234
|
});
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
text
|
|
235
|
+
let text = 'Khách điền form\n';
|
|
236
|
+
_index.default.map(values, field => {
|
|
237
|
+
text += '+ ' + field.key + ': ' + field.value + '\n';
|
|
238
|
+
});
|
|
239
|
+
return this.store.startConvo({
|
|
240
|
+
subject: 'Khách điền form',
|
|
241
|
+
touchpoint: {
|
|
242
|
+
channel: 'form',
|
|
243
|
+
source: window.location.hostname,
|
|
244
|
+
id: Date.now() + '_' + _index.default.randomString()
|
|
245
|
+
},
|
|
246
|
+
form_submission: {
|
|
247
|
+
id: formid,
|
|
248
|
+
values: values
|
|
249
|
+
},
|
|
250
|
+
message_sent: {
|
|
251
|
+
data: {
|
|
252
|
+
message: {
|
|
253
|
+
format: 'plaintext',
|
|
254
|
+
text: text
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
226
258
|
});
|
|
227
|
-
let impressiontoken = await this.viewForm(formid);
|
|
228
|
-
this.store.setUserDiff(user);
|
|
229
|
-
return this.store.sendConversion(formid, values, impressiontoken);
|
|
230
259
|
}
|
|
231
260
|
startConvo(req) {
|
|
232
261
|
req = _index.default.cloneDeep(req) || {};
|
|
233
262
|
if (req.welcome_message) {
|
|
234
|
-
return this.store.startLightConvo(req.bot_id, req.welcome_message, req.locale, req.is_testing, req.bot_version);
|
|
263
|
+
return this.store.startLightConvo(req.bot_id, [req.welcome_message], req.locale, req.is_testing, req.bot_version);
|
|
235
264
|
}
|
|
236
265
|
let members = req.members || [];
|
|
237
266
|
if (req.bot_id) {
|
|
@@ -49,16 +49,12 @@ class _default {
|
|
|
49
49
|
_defineProperty(this, "listConversations", _ => this.apireq.addQuery('user_id', this.uid).addQuery('integration_id', `${this.accid}.subizv4.subikon`).get(`/accounts/${this.accid}/conversations`));
|
|
50
50
|
_defineProperty(this, "listMessages", (cid, limit, start_id) => this.apireq.addQuery('limit', limit).addQuery('start_id', start_id).get(`/accounts/${this.accid}/conversations/${cid}/messages`));
|
|
51
51
|
_defineProperty(this, "ajax", ajax);
|
|
52
|
-
_defineProperty(this, "start", extraData => {
|
|
53
|
-
let data = {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
};
|
|
59
|
-
_index.default.each(extraData, (v, k) => {
|
|
60
|
-
data[k] = v;
|
|
61
|
-
});
|
|
52
|
+
_defineProperty(this, "start", (extraData, tpchannel, tpsource, tpid) => {
|
|
53
|
+
let data = Object.assign({}, extraData);
|
|
54
|
+
if (!data.touchpoint) data.touchpoint = {};
|
|
55
|
+
if (!data.touchpoint.channel) data.touchpoint.channel = 'subiz';
|
|
56
|
+
if (!data.touchpoint.source) data.touchpoint.source = 'web';
|
|
57
|
+
data.source = _index.default.get(document, 'location.href');
|
|
62
58
|
return this.apireq.post(`/accounts/${this.accid}/conversations`, data);
|
|
63
59
|
});
|
|
64
60
|
_defineProperty(this, "sendConvoEvent", (cid, ev) => this.apireq.addQuery('x-referer', _index.default.get(location, 'origin', '')).post(`/accounts/${this.accid}/conversations/${cid}/events`, ev));
|
|
@@ -744,7 +744,7 @@ class Store {
|
|
|
744
744
|
setting = _index.default.cloneDeep(setting) || {};
|
|
745
745
|
setting.account = Object.assign({}, setting.account, this.forceAcc);
|
|
746
746
|
if (!setting.account.logo_url) {
|
|
747
|
-
setting.account.logo_url = 'https://vcdn.subiz-cdn.com/
|
|
747
|
+
setting.account.logo_url = 'https://vcdn.subiz-cdn.com/widget-v4/public/assets/img/default_logo.dd13a2b.svg';
|
|
748
748
|
}
|
|
749
749
|
if (setting.user) {
|
|
750
750
|
setting.user.account_id = setting.account.id;
|
|
@@ -952,7 +952,7 @@ class Store {
|
|
|
952
952
|
delete this.lightConvos[id];
|
|
953
953
|
this.kv.put('light_convos', this.lightConvos);
|
|
954
954
|
}
|
|
955
|
-
startLightConvo(botid,
|
|
955
|
+
startLightConvo(botid, messages, locale, is_testing, botversion) {
|
|
956
956
|
let convoid = 'cslight' + botid + '_' + this.now();
|
|
957
957
|
let user = this.cache.match('user') || {};
|
|
958
958
|
let old = this.lightConvos[convoid];
|
|
@@ -960,26 +960,31 @@ class Store {
|
|
|
960
960
|
convo: old
|
|
961
961
|
};
|
|
962
962
|
let now = this.now();
|
|
963
|
-
let
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
963
|
+
let lastev = {};
|
|
964
|
+
let newevs = _index.default.map(messages, (message, idx) => {
|
|
965
|
+
let ev = {};
|
|
966
|
+
ev.created = now;
|
|
967
|
+
ev.event_time = now;
|
|
968
|
+
ev.id = 'evfake' + now + idx;
|
|
969
|
+
ev.type = 'message_sent';
|
|
970
|
+
ev.by = {
|
|
971
|
+
id: botid,
|
|
972
|
+
type: 'bot'
|
|
973
|
+
};
|
|
974
|
+
ev.data = {
|
|
975
|
+
message: message
|
|
976
|
+
};
|
|
977
|
+
ev.data.message.conversation_id = convoid;
|
|
978
|
+
lastev = ev;
|
|
979
|
+
return ev;
|
|
980
|
+
});
|
|
976
981
|
let newconvo = {
|
|
977
982
|
id: convoid,
|
|
978
983
|
locale: locale,
|
|
979
984
|
initial_by: botid,
|
|
980
985
|
created: now,
|
|
981
986
|
actived: now,
|
|
982
|
-
last_message_sent:
|
|
987
|
+
last_message_sent: lastev,
|
|
983
988
|
members: [{
|
|
984
989
|
type: 'user',
|
|
985
990
|
id: user.id
|
|
@@ -995,13 +1000,13 @@ class Store {
|
|
|
995
1000
|
source: 'web'
|
|
996
1001
|
},
|
|
997
1002
|
traffic_source: 'direct',
|
|
998
|
-
events:
|
|
1003
|
+
events: newevs,
|
|
999
1004
|
is_testing: is_testing,
|
|
1000
1005
|
bot_versio: botversion
|
|
1001
1006
|
};
|
|
1002
1007
|
this.lightConvos[convoid] = newconvo;
|
|
1003
1008
|
this.kv.put('light_convos', this.lightConvos);
|
|
1004
|
-
this.pubsub.publish('events',
|
|
1009
|
+
this.pubsub.publish('events', lastev);
|
|
1005
1010
|
return {
|
|
1006
1011
|
convo: newconvo
|
|
1007
1012
|
};
|