@subiz/widget-v4 4.1.92 → 4.1.94
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/compiled_src/bot.js +1 -0
- package/compiled_src/chatbox/ChatButton.js +3 -1
- package/compiled_src/chatbox/Rating.js +17 -5
- package/compiled_src/chatbox/Widget.js +2 -2
- package/compiled_src/lib.js +3 -0
- package/compiled_src/store/api.js +3 -3
- package/compiled_src/store/store.js +7 -0
- package/dist/127.js +273 -0
- package/dist/132.js +2796 -0
- package/dist/185.js +1885 -0
- package/dist/1919d7c8739.127.js +1 -0
- package/dist/1919d7c8739.132.js +1 -0
- package/dist/1919d7c8739.185.js +1 -0
- package/dist/1919d7c8739.27.js +1 -0
- package/dist/1919d7c8739.278.js +1 -0
- package/dist/1919d7c8739.459.js +1 -0
- package/dist/1919d7c8739.490.js +1 -0
- package/dist/1919d7c8739.74.js +1 -0
- package/dist/1919d7c8739.997.js +1 -0
- package/dist/1919d7c8739.app.js +1 -0
- package/dist/1919d7c8739.index.html +57 -0
- package/dist/1919d7c8739.library.html +57 -0
- package/dist/1919d7c8739.library.js +1 -0
- package/dist/1919d7c8739.preview.html +759 -0
- package/dist/1919d7c8739.preview.js +1 -0
- package/dist/1919d7c8739.screenshoot.js +1 -0
- package/dist/1919d7c8739.webview.js +1 -0
- package/dist/27.js +107 -0
- package/dist/278.js +406 -0
- package/dist/459.js +107 -0
- package/dist/490.js +305 -0
- package/dist/74.js +372 -0
- package/dist/997.js +107 -0
- package/dist/HASH +1 -0
- package/dist/assets/img/Facebook.64607ec.png +0 -0
- package/dist/assets/img/Zalo.6845707.png +0 -0
- package/dist/assets/img/award1a.1a58e10.png +0 -0
- package/dist/assets/img/award3a.3b74423.png +0 -0
- package/dist/assets/img/award4a.ed6ccd4.png +0 -0
- package/dist/assets/img/award5.39eb7ae.png +0 -0
- package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
- package/dist/assets/img/caret.998eb8f.svg +1 -0
- package/dist/assets/img/convos_empty.2353007.svg +72 -0
- package/dist/assets/img/default.06e6ee0.jpg +0 -0
- package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
- package/dist/assets/img/done_gray.d7e8203.svg +4 -0
- package/dist/assets/img/done_green.b817fd4.svg +4 -0
- package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
- package/dist/assets/img/empty.29bed2d.svg +23 -0
- package/dist/assets/img/empty_1.0b98af0.svg +11 -0
- package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
- package/dist/assets/img/external-link.90577cc.svg +1 -0
- package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
- package/dist/assets/img/ghn.070f8e3.svg +17 -0
- package/dist/assets/img/ghtk.326eac1.svg +18 -0
- package/dist/assets/img/image_default.be0698b.png +0 -0
- package/dist/assets/img/info.ebce7ea.svg +1 -0
- package/dist/assets/img/loader.37000a7.svg +1 -0
- package/dist/assets/img/loading_static.a27f0ac.svg +10 -0
- package/dist/assets/img/main-service1.d536cc2.png +0 -0
- package/dist/assets/img/main-service2.9b99549.png +0 -0
- package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
- package/dist/assets/img/package.8d37d0f.svg +5 -0
- package/dist/assets/img/package_fade.763c001.svg +1 -0
- package/dist/assets/img/rating--average.1ea492c.svg +12 -0
- package/dist/assets/img/rating--great.e3d712e.svg +16 -0
- package/dist/assets/img/rating--poor.2938a25.svg +12 -0
- package/dist/assets/img/search.f9705ff.svg +1 -0
- package/dist/assets/img/send.6db52a9.svg +3 -0
- package/dist/assets/img/shop.f7dc7d8.svg +1 -0
- package/dist/assets/img/shop_faded.df7845a.svg +1 -0
- package/dist/assets/img/subiz-mono.877e9f5.svg +3 -0
- package/dist/assets/img/x.26fdfa3.svg +5 -0
- package/dist/malicious-app.js +15 -0
- package/dist/screenshoot.html +7 -0
- package/dist/screenshoot.js +10660 -0
- package/index.html +25 -1
- package/package.json +5 -5
- package/src/bot.js +2 -1
- package/src/chatbox/ChatButton.js +5 -1
- package/src/chatbox/Rating.js +17 -5
- package/src/chatbox/Widget.js +6 -2
- package/src/lib.js +4 -0
- package/src/store/api.js +23 -15
- package/src/store/store.js +10 -0
package/index.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!
|
|
1
|
+
<!doctype html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta name="description" content="Subiz preview" />
|
|
@@ -46,6 +46,30 @@
|
|
|
46
46
|
button.id = 'test2'
|
|
47
47
|
document.body.appendChild(button)
|
|
48
48
|
}, 2000)
|
|
49
|
+
|
|
50
|
+
setTimeout(function () {
|
|
51
|
+
// only run when url contain ?bot=greeting
|
|
52
|
+
var urlParams = new URLSearchParams(window.location.search)
|
|
53
|
+
const greeting = urlParams.get('bot')
|
|
54
|
+
if (greeting !== 'greeting') return
|
|
55
|
+
|
|
56
|
+
let botid = '<botid>' ////////////////////// replace your bot id here. eg: bbrtilgagvnoehvpzg
|
|
57
|
+
|
|
58
|
+
// dont allow other bots to run
|
|
59
|
+
subiz('shrinkWidget')
|
|
60
|
+
subiz('stopAutobot')
|
|
61
|
+
|
|
62
|
+
subiz('waitReady', function () {
|
|
63
|
+
let kk = subiz('startConvo', {
|
|
64
|
+
initial_by: botid,
|
|
65
|
+
state: 'active',
|
|
66
|
+
members: [{id: botid, type: 'bot'}],
|
|
67
|
+
}).then(function (out) {
|
|
68
|
+
if (!out || !out.convo || !out.convo.id) return
|
|
69
|
+
subiz('showWidget', 'chat', out.convo.id)
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
})
|
|
49
73
|
</script>
|
|
50
74
|
</body>
|
|
51
75
|
</html>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subiz/widget-v4",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.94",
|
|
4
4
|
"main": "./compiled_src/lib.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "npx webpack serve --config webpack.dev.js",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"@subiz/storage": "0.0.8",
|
|
15
15
|
"@subiz/wsclient": "^4.0.27",
|
|
16
16
|
"cookie_js": "1.4.2",
|
|
17
|
-
"core-js": "^3.
|
|
17
|
+
"core-js": "^3.38.1",
|
|
18
18
|
"css-loader": "5.2.7",
|
|
19
19
|
"file-loader": "^6.2.0",
|
|
20
20
|
"less": "^4.2.0",
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
"@babel/core": "^7.25.2",
|
|
27
27
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
28
28
|
"@babel/plugin-transform-react-jsx": "^7.25.2",
|
|
29
|
-
"@babel/preset-env": "^7.25.
|
|
29
|
+
"@babel/preset-env": "^7.25.4",
|
|
30
30
|
"babel-loader": "^9.1.3",
|
|
31
31
|
"babel-plugin-syntax-jsx": "^6.18.0",
|
|
32
32
|
"html-webpack-plugin": "^5.6.0",
|
|
33
|
-
"puppeteer": "^
|
|
34
|
-
"webpack": "^5.
|
|
33
|
+
"puppeteer": "^23.2.1",
|
|
34
|
+
"webpack": "^5.94.0",
|
|
35
35
|
"webpack-bundle-analyzer": "^4.10.2",
|
|
36
36
|
"webpack-cli": "^5.1.4",
|
|
37
37
|
"webpack-dev-server": "^5.0.4"
|
package/src/bot.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import sb from './util/index.js'
|
|
2
2
|
import * as common from './common.js'
|
|
3
3
|
|
|
4
|
-
export default function(store) {
|
|
4
|
+
export default function (store) {
|
|
5
|
+
if (!store.matchAutoStartBot()) return
|
|
5
6
|
let botM = store.matchBot()
|
|
6
7
|
if (Object.keys(botM).length === 0) return
|
|
7
8
|
sb.each(botM, (bot) => {
|
|
@@ -183,7 +183,11 @@ export default class ChatButton extends Com {
|
|
|
183
183
|
let account = this.props.store.matchAccount()
|
|
184
184
|
let accountSetting = this.props.plugin.chatbox
|
|
185
185
|
let byid = sb.get(this.state.previewEvent, 'by.display_id', sb.get(this.state.previewEvent, 'by.id'))
|
|
186
|
-
let agent = sb.cloneDeep(this.props.store.matchAgent(byid)) || {}
|
|
186
|
+
// let agent = sb.cloneDeep(this.props.store.matchAgent(byid)) || {}
|
|
187
|
+
// somehow store.matchAgent(id) return undefined so we try to backup with store.matchAgent('*')[id]
|
|
188
|
+
let agent = this.props.store.matchAgent(byid)
|
|
189
|
+
if (!agent) agent = this.props.store.matchAgent('*')[byid] || {}
|
|
190
|
+
agent = sb.cloneDeep(agent)
|
|
187
191
|
agent.fullname = agent.fullname || sb.get(account, 'name') || this.props.t('agent')
|
|
188
192
|
agent.avatar_url = agent.avatar_url || defaultAvatar
|
|
189
193
|
let position = sb.get(accountSetting, 'desktop_button.position') || 'right'
|
package/src/chatbox/Rating.js
CHANGED
|
@@ -5,6 +5,7 @@ import ReleaseAnimation from './releaseAnimation.js'
|
|
|
5
5
|
const POPUP_MAX_HEIGHT = 400
|
|
6
6
|
const POPUP_HARD_MAX_HEIGHT = 500
|
|
7
7
|
const POPUP_MIN_HEIGHT = 0
|
|
8
|
+
const RATING_EXPIRED_TIME = 15 * 60_000
|
|
8
9
|
|
|
9
10
|
import {Com} from '../common.js'
|
|
10
11
|
import {h, createRef} from 'preact'
|
|
@@ -112,16 +113,20 @@ export default class Rating extends Com {
|
|
|
112
113
|
shoudDisplay() {
|
|
113
114
|
if (!this.props.cid) return false
|
|
114
115
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
let requested
|
|
117
|
+
let rated
|
|
118
|
+
let ended
|
|
119
|
+
let lastMessageSentAt = 0
|
|
118
120
|
|
|
119
121
|
let user = this.props.store.matchUser()
|
|
120
122
|
// user must send message
|
|
121
123
|
let foundUser = false
|
|
122
124
|
sb.map(this.props.store.listEvents(this.props.cid), (ev) => {
|
|
123
125
|
if (!ev || !ev.by) return
|
|
124
|
-
if (ev.
|
|
126
|
+
if (ev.type === 'message_sent') {
|
|
127
|
+
if (sb.get(ev, 'by.type') === 'user') foundUser = true
|
|
128
|
+
if (ev.created > lastMessageSentAt) lastMessageSentAt = ev.created
|
|
129
|
+
}
|
|
125
130
|
if (ev.type === 'conversation_state_updated' && sb.get(ev, 'data.conversation.state') === 'ended') {
|
|
126
131
|
ended = ev
|
|
127
132
|
}
|
|
@@ -131,7 +136,14 @@ export default class Rating extends Com {
|
|
|
131
136
|
if (!foundUser) return false
|
|
132
137
|
if (rated) return false
|
|
133
138
|
let accountSetting = this.props.plugin.chatbox
|
|
134
|
-
|
|
139
|
+
let auto = accountSetting.auto_request_rating && ended
|
|
140
|
+
if (auto) {
|
|
141
|
+
if (lastMessageSentAt) {
|
|
142
|
+
auto = auto && Date.now() - lastMessageSentAt < RATING_EXPIRED_TIME
|
|
143
|
+
} else {
|
|
144
|
+
auto = false
|
|
145
|
+
}
|
|
146
|
+
}
|
|
135
147
|
return requested || auto
|
|
136
148
|
}
|
|
137
149
|
|
package/src/chatbox/Widget.js
CHANGED
|
@@ -636,7 +636,9 @@ export default class Widget extends Com {
|
|
|
636
636
|
|
|
637
637
|
var $convos = sb.map(convos, (convo) => {
|
|
638
638
|
let ags = sb.filter(convo.members, (m) => {
|
|
639
|
-
return (m.type === 'agent' || m.type === 'bot') && m.membership === 'active'
|
|
639
|
+
//return (m.type === 'agent' || m.type === 'bot') && m.membership === 'active'
|
|
640
|
+
// somehow bot send greeting but membership is observer
|
|
641
|
+
return m.type === 'agent' || m.type === 'bot'
|
|
640
642
|
})
|
|
641
643
|
let agentids = sb.map(ags, (m) => m.id)
|
|
642
644
|
agentids = agentids || sb.agentsOfConvo(convo)[0]
|
|
@@ -929,7 +931,9 @@ export default class Widget extends Com {
|
|
|
929
931
|
let agentM = this.props.store.matchAgent('*')
|
|
930
932
|
|
|
931
933
|
let ags = sb.filter(convo.members, (m) => {
|
|
932
|
-
return (m.type === 'agent' || m.type === 'bot') && m.membership === 'active'
|
|
934
|
+
//return (m.type === 'agent' || m.type === 'bot') && m.membership === 'active'
|
|
935
|
+
// somehow bot send greeting but membership is observer
|
|
936
|
+
return m.type === 'agent' || m.type === 'bot'
|
|
933
937
|
})
|
|
934
938
|
let agentids = sb.map(ags, (m) => m.id)
|
|
935
939
|
agentids = agentids || sb.agentsOfConvo(convo)[0]
|
package/src/lib.js
CHANGED
package/src/store/api.js
CHANGED
|
@@ -209,7 +209,10 @@ export default class {
|
|
|
209
209
|
return this.apireq.post(`/accounts/${this.accid}/conversations`, data)
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
sendConvoEvent = (cid, ev) =>
|
|
212
|
+
sendConvoEvent = (cid, ev) =>
|
|
213
|
+
this.apireq
|
|
214
|
+
.addQuery('x-referer', sb.get(location, 'origin', ''))
|
|
215
|
+
.post(`/accounts/${this.accid}/conversations/${cid}/events`, ev)
|
|
213
216
|
createPostback = (cid, p) => this.apireq.post(`/accounts/${this.accid}/conversations/${cid}/postbacks`, p)
|
|
214
217
|
markAsReceived = (cid, messageId) =>
|
|
215
218
|
this.apireq.post(`/accounts/${this.accid}/conversations/${cid}/messages/${messageId}/receive`)
|
|
@@ -219,23 +222,28 @@ export default class {
|
|
|
219
222
|
getConversation = (cid) => this.apireq.get(`/accounts/${this.accid}/conversations/${cid}`)
|
|
220
223
|
getLocaleContent = (locale) => this.apireq.get(`/accounts/${this.accid}/locales/${locale}`)
|
|
221
224
|
sendEvent = (data) =>
|
|
222
|
-
this.apireq
|
|
225
|
+
this.apireq
|
|
226
|
+
.addQuery('shorten', true)
|
|
227
|
+
.addQuery('x-referer', sb.get(location, 'origin', ''))
|
|
228
|
+
.post(`/accounts/${this.accid}/users/${this.uid}/events`, data)
|
|
223
229
|
|
|
224
230
|
submitForm = (form_id, page_url, device, data, user) =>
|
|
225
|
-
this.apireq
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
231
|
+
this.apireq
|
|
232
|
+
.addQuery('x-referer', sb.get(location, 'origin', ''))
|
|
233
|
+
.post(`/accounts/${this.accid}/users/${this.uid}/events`, {
|
|
234
|
+
by: {id: this.uid, device: device},
|
|
235
|
+
type: 'form_submitted',
|
|
236
|
+
data: {
|
|
237
|
+
user: user,
|
|
238
|
+
form_submission: {
|
|
239
|
+
user_id: this.uid,
|
|
240
|
+
form_id: form_id,
|
|
241
|
+
page_url: page_url,
|
|
242
|
+
submitted_at: sb.Date.now(),
|
|
243
|
+
values: data,
|
|
244
|
+
},
|
|
236
245
|
},
|
|
237
|
-
}
|
|
238
|
-
})
|
|
246
|
+
})
|
|
239
247
|
|
|
240
248
|
sendTyping = (cid) => this.apireq.post(`/accounts/${this.accid}/conversations/${cid}/typing`)
|
|
241
249
|
|
package/src/store/store.js
CHANGED
|
@@ -69,6 +69,16 @@ export default class Store {
|
|
|
69
69
|
})
|
|
70
70
|
window.addEventListener('beforeunload', () => this.api.sendLostFocus())
|
|
71
71
|
|
|
72
|
+
this.doNotStartBot = () => {
|
|
73
|
+
this._donotstartbot = true
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
this.autoStartBot = () => {
|
|
77
|
+
this._donotstartbot = false
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
this.matchAutoStartBot = () => !this._donotstartbot
|
|
81
|
+
|
|
72
82
|
// faster send rate when has focus
|
|
73
83
|
this._presenceInterval1 = sb.setInterval(() => {
|
|
74
84
|
if (this._die) return sb.clearInterval(this._presenceInterval1)
|