@telia-ace/conversational-hub-bot-provider 0.0.13 → 0.0.15
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/contact-method-b1ac30ad.js +1 -0
- package/contact-method-cbd40131.mjs +12 -0
- package/index.js +1 -1
- package/index.mjs +400 -5
- package/package.json +1 -1
- package/ui/contact-method.d.ts +1 -7
- package/contact-method-429ef265.js +0 -644
- package/contact-method-ae387667.mjs +0 -2242
- package/index-373df3a5.js +0 -6
- package/index-482ea30a.js +0 -1214
- package/index-5c9c2abf.mjs +0 -883
- package/index-93f64633.mjs +0 -10694
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),n=require("@telia-ace/knowledge-widget-ui"),o=require("react"),r=()=>{const e=n.useContainer();return o.useEffect(()=>{console.log("container ",e,e.get("$widget"))},[e]),t.jsx("div",{children:"Hej"})};exports.default=r;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useContainer as e } from "@telia-ace/knowledge-widget-ui";
|
|
3
|
+
import { useEffect as r } from "react";
|
|
4
|
+
const s = () => {
|
|
5
|
+
const o = e();
|
|
6
|
+
return r(() => {
|
|
7
|
+
console.log("container ", o, o.get("$widget"));
|
|
8
|
+
}, [o]), /* @__PURE__ */ t("div", { children: "Hej" });
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
s as default
|
|
12
|
+
};
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";var B=Object.defineProperty;var D=(o,t,n)=>t in o?B(o,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[t]=n;var b=(o,t,n)=>(D(o,typeof t!="symbol"?t+"":t,n),n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("@telia-ace/widget-conversation"),M=require("@telia-ace/widget-services"),S=require("@telia-ace/widget-utilities");require("@telia-ace/widget-forms");class W{constructor(t){b(this,"enabled",!0);b(this,"botProviderGlobalStateKey","bot-provider-global-state");b(this,"botProviderLocalStateKey","bot-provider-local-state");b(this,"botProviderEntriesKey","bot-provider-entries");b(this,"botProviderMetaStateKey","bot-provider-conversation-meta");this.container=t}getKey(t){let n;switch(t){case"localState":n=this.botProviderLocalStateKey;break;case"globalState":n=this.botProviderGlobalStateKey;break;case"entries":n=this.botProviderEntriesKey;break;case"meta":n=this.botProviderMetaStateKey;break}return n}async read(t){const n=this.getKey(t);if(!(!this.enabled||!n))return M.readStorage(this.container,n)}async write(t,n){const e=this.getKey(n);if(!this.enabled||!e)return;(await M.createStorageWriter(this.container,e,M.StorageCategory.Necessary))(t)}}var N=(o=>(o.ContactMethod="ace-conversational-hub-contact-method",o))(N||{});const z=({isUser:o,items:t=[],meta:n={}})=>{const e=S.uuid();return{id:e,isUser:o,items:t.map(p=>({id:p.id||S.uuid(),isUser:o,groupId:e,message:p.message||[]})),meta:n}},Q=async(o,t,n)=>{(await(await o.getAsync("dataClient")).getClient()).parameters.set(t,n)},T=({messageId:o,message:t,group:n})=>({id:o,message:t,groupId:n.id,isUser:n.isUser}),X=async(o,t,n)=>{const e=async(i,u,w=[],x)=>{var j,$;const h=S.uuid();switch(i.type!=="List"&&i.tags.includes("guide")&&(($=(j=i.content.hints)==null?void 0:j[0])!=null&&$.id)&&await Q(o,"LastGuideId",i.content.hints[0].id),i.type){case"Text":{const C=[];if(C.push(T({messageId:h,message:[L.ConversationMessageListItemType.HTML,{body:i.content.html}],group:u})),w.length){w.find(y=>{var k;return y.type==="List"&&((k=y.localState)==null?void 0:k.$type)==="Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching"});const I=w.find(y=>y.tags.includes("contact")&&y.type==="Contact");I&&C.push(T({messageId:h,message:[N.ContactMethod,{contactMethodId:I.content.id,groupId:u.id,guideId:I.content.guideId}],group:u}))}return C}case"Contact":return[T({messageId:h,message:[N.ContactMethod,{contactMethodId:i.content.id,groupId:u.id,guideId:i.content.guideId}],group:u})];case"Error":return[T({messageId:h,message:[L.ConversationMessageListItemType.HTML,{body:i.content.message||"Something went wrong."}],group:u})];default:return[]}},c=new Map([["Text",1],["Contact",2]]),p=[],f=t.sort((i,u)=>{const x=c.get(i.type)||20,h=c.get(u.type)||20;return x-h}).filter(i=>!i.relation).reduce((i,u)=>i.concat(u),[]),P=i=>typeof i.actions.selector<"u";for(const i of f){const u=t.filter(h=>h.relation===i.id&&!P(h)),w=z({isUser:!1});(await e(i,w,u)).forEach(h=>{w.items.push(h)}),w.items.length&&p.push(w)}return p};class Y{constructor(t,n,e,c){b(this,"globalState");b(this,"localState");b(this,"clientId");b(this,"entries");this.endpoint=t,this.events=n,this.store=e,this.container=c,this.clientId=S.uuid(),this.entries=[]}async fetchGuide(t){const n={command:{guide:{id:t}},globalState:this.globalState,clientId:this.clientId};return await this.postEnvelope(n)}async postEnvelope(t,n){try{const e=await fetch(this.endpoint,this.getHttpOptions(t));if(!e.ok)throw e;const c=await e.json();return this.handleResponse(c,n)}catch(e){process.env.NODE_ENV!=="production"&&console.warn("Something went wrong when posting the envelope.");let c="Something went wrong";return(e.message==="Failed to fetch"||e.message==="NetworkError when attempting to fetch resource.")&&(c="Lost connection... Please try again."),this.handleResponse({entries:[{id:S.uuid(),type:"Error",timestamp:new Date().toISOString(),content:{message:c},actions:{},tags:[]}]})}}async handleResponse(t,n){this.entries=this.entries.concat(t.entries),this.store.write(this.entries,"entries");const e=t.entries.find(p=>p.type==="Widget");return e&&this.events.dispatch("provider:widget-entry",e.content),t.globalState&&(this.globalState=t.globalState,this.store.write(t.globalState,"globalState")),this.localState=t.entries.reduce((p,f)=>f.localState?f.localState:p,void 0),this.store.write(this.localState,"localState"),await X(this.container,t.entries)}getHttpOptions(t){const n={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"}};return t.funnel=this.container.get("$widget").name,t.localState=t.localState||this.localState,Object.assign({},n,{body:JSON.stringify(t),credentials:"same-origin"})}}const Z="@telia-ace/conversational-hub-bot-provider",F="0.0.15",tt="./index.js",et="./index.d.ts",nt={".":{import:"./index.mjs",require:"./index.js"}},ot={"@telia-ace/widget-conversation":"*","@webprovisions/platform":"^1.1.4","@telia-ace/knowledge-widget-core":"*","@telia-ace/widget-utilities":"*","@telia-ace/widget-services":"*","@telia-ace/widget-core":"*","@telia-ace/knowledge-data-client":"*","@telia-ace/knowledge-widget-adapters":"*","@telia-ace/knowledge-widget-ui":"*","@telia-ace/widget-forms":"*"},it={"@emotion/react":"11.11.1","@emotion/styled":"11.11.0",react:"18.2.0"},E={name:Z,version:F,main:tt,types:et,exports:nt,dependencies:ot,peerDependencies:it},st=async o=>{var G,H,A,_,U;const t="chub-plugin",n=o.get("$widget"),e=(U=(_=(A=(H=(G=n==null?void 0:n.container)==null?void 0:G.get("$settings"))==null?void 0:H.components)==null?void 0:A.conversation)==null?void 0:_.properties)==null?void 0:U.conversationalHubPluginSettings;let c,p,f,P=(e==null?void 0:e.connectionAttempts)??5,i,u,w;S.Logger.info((E==null?void 0:E.name)+" version: "+(E==null?void 0:E.version)),L.registerCustomMessageComponent(o,N.ContactMethod,Promise.resolve().then(()=>require("./contact-method-b1ac30ad.js")));const x=await M.createStorageWriter(o,"conversational-hub-session",M.StorageCategory.Necessary),h=(r,a)=>{const{knowledgeBotEndpoint:l}=a.properties();if(l)return`${l}/conversations`;const{data:d}=r.get("$settings");if(!d||!d.projection)throw new Error("Missing Knowledge Bot endpoint");return`${d.projection}/conversations`};(await L.ConversationPlatform.getInstance(o)).registerProvider(t,(r,a)=>{c=r,p=c.controller,f=c.createAgent({name:e==null?void 0:e.botName,avatar:e==null?void 0:e.avatar}),w=h(o,a);const{events:l}=o.get("$widget"),d=new W(o);u=new Y(w,l,d,o),$();const g=()=>p.providers.includes(t);window.controller=p,a.actions.create("submit",s=>{const{events:v}=o.get("$widget");v.dispatch("conversational-hub-provider:form-submitted",s)}),a.actions.watch("conversation.action",(s,v)=>(g()&&C(s),v(s))),a.actions.watch("conversation.user-submit",(s,v)=>{if(!g())return v(s);I(s.text),c.user.print(s.text.replace(/</g,"<").replace(/>/g,">"))})});async function $(r=!0){const a=await M.readStorage(o,"conversational-hub-session");a!=null&&a.sessionId?i=a==null?void 0:a.sessionId:await y(e.baseUrl+"/initialize",`{"extension": "${e.extension}"}`,r)}async function C(r){await y(`${e.baseUrl}/input/${i}`,`{"type":"button_click","language":"${e.language}","content":{"button_text":"${r.label}","value":"${r.actionKey}"}}`)}async function I(r){const a={text:r};await y(`${e.baseUrl}/input/${i}`,`{"type":"text","language":"${e.language}","content":${JSON.stringify(a)}}`)}async function y(r,a,l=!0){var v,K,V,q;const d=c.loading();let g,s;try{g=await fetch(r,{method:"POST",body:a}),s=await(g==null?void 0:g.json())}catch(O){O instanceof SyntaxError?S.Logger.error("Incorrect JSON format.",O):S.Logger.error("Network error: check connection or baseUrl.",O),d(),f.print(e.errorMessage);return}if(!(g!=null&&g.ok)){if(S.Logger.error(`HTTP ${g==null?void 0:g.status}.`,JSON.stringify(s)),d(),!!((v=s==null?void 0:s.errors)!=null&&v.filter(m=>m.code==="1003").length)&&P>0){P--,await new Promise(R=>setTimeout(R,500)),await $(!1);const m=JSON.parse(a);(K=m==null?void 0:m.content)!=null&&K.text?await I(m.content.text):(V=m==null?void 0:m.content)!=null&&V.action&&await C((q=m==null?void 0:m.content)==null?void 0:q.action)}else f.print(e.errorMessage);return}d(),P=(e==null?void 0:e.connectionAttempts)??5,s!=null&&s.action_payload&&k(s.action_payload),i=s==null?void 0:s.session_id,x({sessionId:i}),l&&J(s)}async function k(r){var g;const a=(g=r==null?void 0:r.transfer_parameters)==null?void 0:g.contactGuide,l=c.loading(),d=await u.fetchGuide(parseInt(a));if(l(),d){const s=d.concat(d);if(s.length){const v=s[0].items.map(K=>K.message);f.print(v)}}}function J(r){var a;r==null||r.agent_response.forEach(l=>{f.print(l.payload.text)}),(a=r==null?void 0:r.prompt)!=null&&a.items&&f.print(["button-list",{actions:r.prompt.items.map(l=>{let d;return l.type==="button"&&(d={actionKey:l.value,label:l.text}),l.type==="link"&&(d={actionKey:l.value,label:l.text,data:{href:l.url,target:(e==null?void 0:e.linkTarget)??"_blank"}}),d})}])}};exports.ConversationalHubPlugin=st;
|
package/index.mjs
CHANGED
|
@@ -1,7 +1,402 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import "
|
|
1
|
+
var q = Object.defineProperty;
|
|
2
|
+
var Q = (o, t, n) => t in o ? q(o, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : o[t] = n;
|
|
3
|
+
var b = (o, t, n) => (Q(o, typeof t != "symbol" ? t + "" : t, n), n);
|
|
4
|
+
import { ConversationMessageListItemType as J, registerCustomMessageComponent as X, ConversationPlatform as Y } from "@telia-ace/widget-conversation";
|
|
5
|
+
import { readStorage as R, createStorageWriter as B, StorageCategory as D } from "@telia-ace/widget-services";
|
|
6
|
+
import { uuid as $, Logger as N } from "@telia-ace/widget-utilities";
|
|
7
|
+
import "@telia-ace/widget-forms";
|
|
8
|
+
class Z {
|
|
9
|
+
constructor(t) {
|
|
10
|
+
b(this, "enabled", !0);
|
|
11
|
+
// set whether or not to store data
|
|
12
|
+
b(this, "botProviderGlobalStateKey", "bot-provider-global-state");
|
|
13
|
+
b(this, "botProviderLocalStateKey", "bot-provider-local-state");
|
|
14
|
+
b(this, "botProviderEntriesKey", "bot-provider-entries");
|
|
15
|
+
b(this, "botProviderMetaStateKey", "bot-provider-conversation-meta");
|
|
16
|
+
this.container = t;
|
|
17
|
+
}
|
|
18
|
+
getKey(t) {
|
|
19
|
+
let n;
|
|
20
|
+
switch (t) {
|
|
21
|
+
case "localState":
|
|
22
|
+
n = this.botProviderLocalStateKey;
|
|
23
|
+
break;
|
|
24
|
+
case "globalState":
|
|
25
|
+
n = this.botProviderGlobalStateKey;
|
|
26
|
+
break;
|
|
27
|
+
case "entries":
|
|
28
|
+
n = this.botProviderEntriesKey;
|
|
29
|
+
break;
|
|
30
|
+
case "meta":
|
|
31
|
+
n = this.botProviderMetaStateKey;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
return n;
|
|
35
|
+
}
|
|
36
|
+
async read(t) {
|
|
37
|
+
const n = this.getKey(t);
|
|
38
|
+
if (!(!this.enabled || !n))
|
|
39
|
+
return R(this.container, n);
|
|
40
|
+
}
|
|
41
|
+
async write(t, n) {
|
|
42
|
+
const e = this.getKey(n);
|
|
43
|
+
if (!this.enabled || !e)
|
|
44
|
+
return;
|
|
45
|
+
(await B(
|
|
46
|
+
this.container,
|
|
47
|
+
e,
|
|
48
|
+
D.Necessary
|
|
49
|
+
))(t);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
var T = /* @__PURE__ */ ((o) => (o.ContactMethod = "ace-conversational-hub-contact-method", o))(T || {});
|
|
53
|
+
const F = ({
|
|
54
|
+
isUser: o,
|
|
55
|
+
items: t = [],
|
|
56
|
+
meta: n = {}
|
|
57
|
+
}) => {
|
|
58
|
+
const e = $();
|
|
59
|
+
return {
|
|
60
|
+
id: e,
|
|
61
|
+
isUser: o,
|
|
62
|
+
items: t.map((p) => ({
|
|
63
|
+
id: p.id || $(),
|
|
64
|
+
isUser: o,
|
|
65
|
+
groupId: e,
|
|
66
|
+
message: p.message || []
|
|
67
|
+
})),
|
|
68
|
+
meta: n
|
|
69
|
+
};
|
|
70
|
+
}, tt = async (o, t, n) => {
|
|
71
|
+
(await (await o.getAsync("dataClient")).getClient()).parameters.set(t, n);
|
|
72
|
+
}, O = ({
|
|
73
|
+
messageId: o,
|
|
74
|
+
message: t,
|
|
75
|
+
group: n
|
|
76
|
+
}) => ({
|
|
77
|
+
id: o,
|
|
78
|
+
message: t,
|
|
79
|
+
groupId: n.id,
|
|
80
|
+
isUser: n.isUser
|
|
81
|
+
}), et = async (o, t, n) => {
|
|
82
|
+
const e = async (i, u, m = [], x) => {
|
|
83
|
+
var G, M;
|
|
84
|
+
const h = $();
|
|
85
|
+
switch (i.type !== "List" && i.tags.includes("guide") && ((M = (G = i.content.hints) == null ? void 0 : G[0]) != null && M.id) && await tt(
|
|
86
|
+
o,
|
|
87
|
+
"LastGuideId",
|
|
88
|
+
i.content.hints[0].id
|
|
89
|
+
), i.type) {
|
|
90
|
+
case "Text": {
|
|
91
|
+
const S = [];
|
|
92
|
+
if (S.push(
|
|
93
|
+
O({
|
|
94
|
+
messageId: h,
|
|
95
|
+
message: [
|
|
96
|
+
J.HTML,
|
|
97
|
+
{ body: i.content.html }
|
|
98
|
+
],
|
|
99
|
+
group: u
|
|
100
|
+
})
|
|
101
|
+
), m.length) {
|
|
102
|
+
m.find(
|
|
103
|
+
(y) => {
|
|
104
|
+
var P;
|
|
105
|
+
return y.type === "List" && ((P = y.localState) == null ? void 0 : P.$type) === "Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching";
|
|
106
|
+
}
|
|
107
|
+
);
|
|
108
|
+
const I = m.find(
|
|
109
|
+
(y) => y.tags.includes("contact") && y.type === "Contact"
|
|
110
|
+
);
|
|
111
|
+
I && S.push(
|
|
112
|
+
O({
|
|
113
|
+
messageId: h,
|
|
114
|
+
message: [
|
|
115
|
+
T.ContactMethod,
|
|
116
|
+
{
|
|
117
|
+
contactMethodId: I.content.id,
|
|
118
|
+
groupId: u.id,
|
|
119
|
+
guideId: I.content.guideId
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
group: u
|
|
123
|
+
})
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
return S;
|
|
127
|
+
}
|
|
128
|
+
case "Contact":
|
|
129
|
+
return [
|
|
130
|
+
O({
|
|
131
|
+
messageId: h,
|
|
132
|
+
message: [
|
|
133
|
+
T.ContactMethod,
|
|
134
|
+
{
|
|
135
|
+
contactMethodId: i.content.id,
|
|
136
|
+
groupId: u.id,
|
|
137
|
+
guideId: i.content.guideId
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
group: u
|
|
141
|
+
})
|
|
142
|
+
];
|
|
143
|
+
case "Error":
|
|
144
|
+
return [
|
|
145
|
+
O({
|
|
146
|
+
messageId: h,
|
|
147
|
+
message: [
|
|
148
|
+
J.HTML,
|
|
149
|
+
{
|
|
150
|
+
body: i.content.message || "Something went wrong."
|
|
151
|
+
}
|
|
152
|
+
],
|
|
153
|
+
group: u
|
|
154
|
+
})
|
|
155
|
+
];
|
|
156
|
+
default:
|
|
157
|
+
return [];
|
|
158
|
+
}
|
|
159
|
+
}, c = /* @__PURE__ */ new Map([
|
|
160
|
+
["Text", 1],
|
|
161
|
+
["Contact", 2]
|
|
162
|
+
]), p = [], w = t.sort((i, u) => {
|
|
163
|
+
const x = c.get(i.type) || 20, h = c.get(u.type) || 20;
|
|
164
|
+
return x - h;
|
|
165
|
+
}).filter((i) => !i.relation).reduce((i, u) => i.concat(u), []), E = (i) => typeof i.actions.selector < "u";
|
|
166
|
+
for (const i of w) {
|
|
167
|
+
const u = t.filter(
|
|
168
|
+
(h) => h.relation === i.id && !E(h)
|
|
169
|
+
), m = F({ isUser: !1 });
|
|
170
|
+
(await e(i, m, u)).forEach((h) => {
|
|
171
|
+
m.items.push(h);
|
|
172
|
+
}), m.items.length && p.push(m);
|
|
173
|
+
}
|
|
174
|
+
return p;
|
|
175
|
+
};
|
|
176
|
+
class nt {
|
|
177
|
+
constructor(t, n, e, c) {
|
|
178
|
+
b(this, "globalState");
|
|
179
|
+
b(this, "localState");
|
|
180
|
+
b(this, "clientId");
|
|
181
|
+
b(this, "entries");
|
|
182
|
+
this.endpoint = t, this.events = n, this.store = e, this.container = c, this.clientId = $(), this.entries = [];
|
|
183
|
+
}
|
|
184
|
+
async fetchGuide(t) {
|
|
185
|
+
const n = {
|
|
186
|
+
command: { guide: { id: t } },
|
|
187
|
+
globalState: this.globalState,
|
|
188
|
+
clientId: this.clientId
|
|
189
|
+
};
|
|
190
|
+
return await this.postEnvelope(n);
|
|
191
|
+
}
|
|
192
|
+
async postEnvelope(t, n) {
|
|
193
|
+
try {
|
|
194
|
+
const e = await fetch(
|
|
195
|
+
this.endpoint,
|
|
196
|
+
this.getHttpOptions(t)
|
|
197
|
+
);
|
|
198
|
+
if (!e.ok)
|
|
199
|
+
throw e;
|
|
200
|
+
const c = await e.json();
|
|
201
|
+
return this.handleResponse(c, n);
|
|
202
|
+
} catch (e) {
|
|
203
|
+
process.env.NODE_ENV !== "production" && console.warn("Something went wrong when posting the envelope.");
|
|
204
|
+
let c = "Something went wrong";
|
|
205
|
+
return (e.message === "Failed to fetch" || e.message === "NetworkError when attempting to fetch resource.") && (c = "Lost connection... Please try again."), this.handleResponse({
|
|
206
|
+
entries: [
|
|
207
|
+
{
|
|
208
|
+
id: $(),
|
|
209
|
+
type: "Error",
|
|
210
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
211
|
+
content: {
|
|
212
|
+
message: c
|
|
213
|
+
},
|
|
214
|
+
actions: {},
|
|
215
|
+
tags: []
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async handleResponse(t, n) {
|
|
222
|
+
this.entries = this.entries.concat(t.entries), this.store.write(this.entries, "entries");
|
|
223
|
+
const e = t.entries.find((p) => p.type === "Widget");
|
|
224
|
+
return e && this.events.dispatch("provider:widget-entry", e.content), t.globalState && (this.globalState = t.globalState, this.store.write(t.globalState, "globalState")), this.localState = t.entries.reduce(
|
|
225
|
+
(p, w) => w.localState ? w.localState : p,
|
|
226
|
+
void 0
|
|
227
|
+
), this.store.write(this.localState, "localState"), await et(
|
|
228
|
+
this.container,
|
|
229
|
+
t.entries
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
getHttpOptions(t) {
|
|
233
|
+
const n = {
|
|
234
|
+
method: "POST",
|
|
235
|
+
headers: {
|
|
236
|
+
Accept: "application/json",
|
|
237
|
+
"Content-Type": "application/json"
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
return t.funnel = this.container.get("$widget").name, t.localState = t.localState || this.localState, Object.assign({}, n, {
|
|
241
|
+
body: JSON.stringify(t),
|
|
242
|
+
credentials: "same-origin"
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const ot = "@telia-ace/conversational-hub-bot-provider", it = "0.0.15", st = "./index.js", at = "./index.d.ts", rt = {
|
|
247
|
+
".": {
|
|
248
|
+
import: "./index.mjs",
|
|
249
|
+
require: "./index.js"
|
|
250
|
+
}
|
|
251
|
+
}, ct = {
|
|
252
|
+
"@telia-ace/widget-conversation": "*",
|
|
253
|
+
"@webprovisions/platform": "^1.1.4",
|
|
254
|
+
"@telia-ace/knowledge-widget-core": "*",
|
|
255
|
+
"@telia-ace/widget-utilities": "*",
|
|
256
|
+
"@telia-ace/widget-services": "*",
|
|
257
|
+
"@telia-ace/widget-core": "*",
|
|
258
|
+
"@telia-ace/knowledge-data-client": "*",
|
|
259
|
+
"@telia-ace/knowledge-widget-adapters": "*",
|
|
260
|
+
"@telia-ace/knowledge-widget-ui": "*",
|
|
261
|
+
"@telia-ace/widget-forms": "*"
|
|
262
|
+
}, lt = {
|
|
263
|
+
"@emotion/react": "11.11.1",
|
|
264
|
+
"@emotion/styled": "11.11.0",
|
|
265
|
+
react: "18.2.0"
|
|
266
|
+
}, C = {
|
|
267
|
+
name: ot,
|
|
268
|
+
version: it,
|
|
269
|
+
main: st,
|
|
270
|
+
types: at,
|
|
271
|
+
exports: rt,
|
|
272
|
+
dependencies: ct,
|
|
273
|
+
peerDependencies: lt
|
|
274
|
+
}, mt = async (o) => {
|
|
275
|
+
var j, H, L, A, _;
|
|
276
|
+
const t = "chub-plugin", n = o.get("$widget"), e = (_ = (A = (L = (H = (j = n == null ? void 0 : n.container) == null ? void 0 : j.get("$settings")) == null ? void 0 : H.components) == null ? void 0 : L.conversation) == null ? void 0 : A.properties) == null ? void 0 : _.conversationalHubPluginSettings;
|
|
277
|
+
let c, p, w, E = (e == null ? void 0 : e.connectionAttempts) ?? 5, i, u, m;
|
|
278
|
+
N.info((C == null ? void 0 : C.name) + " version: " + (C == null ? void 0 : C.version)), X(
|
|
279
|
+
o,
|
|
280
|
+
T.ContactMethod,
|
|
281
|
+
import("./contact-method-cbd40131.mjs")
|
|
282
|
+
);
|
|
283
|
+
const x = await B(
|
|
284
|
+
o,
|
|
285
|
+
"conversational-hub-session",
|
|
286
|
+
D.Necessary
|
|
287
|
+
), h = (a, r) => {
|
|
288
|
+
const { knowledgeBotEndpoint: l } = r.properties();
|
|
289
|
+
if (l)
|
|
290
|
+
return `${l}/conversations`;
|
|
291
|
+
const { data: d } = a.get("$settings");
|
|
292
|
+
if (!d || !d.projection)
|
|
293
|
+
throw new Error("Missing Knowledge Bot endpoint");
|
|
294
|
+
return `${d.projection}/conversations`;
|
|
295
|
+
};
|
|
296
|
+
(await Y.getInstance(
|
|
297
|
+
o
|
|
298
|
+
)).registerProvider(t, (a, r) => {
|
|
299
|
+
c = a, p = c.controller, w = c.createAgent({
|
|
300
|
+
name: e == null ? void 0 : e.botName,
|
|
301
|
+
avatar: e == null ? void 0 : e.avatar
|
|
302
|
+
}), m = h(o, r);
|
|
303
|
+
const { events: l } = o.get("$widget"), d = new Z(o);
|
|
304
|
+
u = new nt(m, l, d, o), M();
|
|
305
|
+
const g = () => p.providers.includes(t);
|
|
306
|
+
window.controller = p, r.actions.create("submit", (s) => {
|
|
307
|
+
const { events: v } = o.get("$widget");
|
|
308
|
+
v.dispatch("conversational-hub-provider:form-submitted", s);
|
|
309
|
+
}), r.actions.watch("conversation.action", (s, v) => (g() && S(s), v(s))), r.actions.watch("conversation.user-submit", (s, v) => {
|
|
310
|
+
if (!g())
|
|
311
|
+
return v(s);
|
|
312
|
+
I(s.text), c.user.print(
|
|
313
|
+
s.text.replace(/</g, "<").replace(/>/g, ">")
|
|
314
|
+
);
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
async function M(a = !0) {
|
|
318
|
+
const r = await R(
|
|
319
|
+
o,
|
|
320
|
+
"conversational-hub-session"
|
|
321
|
+
);
|
|
322
|
+
r != null && r.sessionId ? i = r == null ? void 0 : r.sessionId : await y(
|
|
323
|
+
e.baseUrl + "/initialize",
|
|
324
|
+
`{"extension": "${e.extension}"}`,
|
|
325
|
+
a
|
|
326
|
+
);
|
|
327
|
+
}
|
|
328
|
+
async function S(a) {
|
|
329
|
+
await y(
|
|
330
|
+
`${e.baseUrl}/input/${i}`,
|
|
331
|
+
`{"type":"button_click","language":"${e.language}","content":{"button_text":"${a.label}","value":"${a.actionKey}"}}`
|
|
332
|
+
);
|
|
333
|
+
}
|
|
334
|
+
async function I(a) {
|
|
335
|
+
const r = { text: a };
|
|
336
|
+
await y(
|
|
337
|
+
`${e.baseUrl}/input/${i}`,
|
|
338
|
+
`{"type":"text","language":"${e.language}","content":${JSON.stringify(r)}}`
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
async function y(a, r, l = !0) {
|
|
342
|
+
var v, k, V, U;
|
|
343
|
+
const d = c.loading();
|
|
344
|
+
let g, s;
|
|
345
|
+
try {
|
|
346
|
+
g = await fetch(a, {
|
|
347
|
+
method: "POST",
|
|
348
|
+
body: r
|
|
349
|
+
}), s = await (g == null ? void 0 : g.json());
|
|
350
|
+
} catch (K) {
|
|
351
|
+
K instanceof SyntaxError ? N.error("Incorrect JSON format.", K) : N.error("Network error: check connection or baseUrl.", K), d(), w.print(e.errorMessage);
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
if (!(g != null && g.ok)) {
|
|
355
|
+
if (N.error(`HTTP ${g == null ? void 0 : g.status}.`, JSON.stringify(s)), d(), !!((v = s == null ? void 0 : s.errors) != null && v.filter(
|
|
356
|
+
(f) => f.code === "1003"
|
|
357
|
+
).length) && E > 0) {
|
|
358
|
+
E--, await new Promise((W) => setTimeout(W, 500)), await M(!1);
|
|
359
|
+
const f = JSON.parse(r);
|
|
360
|
+
(k = f == null ? void 0 : f.content) != null && k.text ? await I(f.content.text) : (V = f == null ? void 0 : f.content) != null && V.action && await S((U = f == null ? void 0 : f.content) == null ? void 0 : U.action);
|
|
361
|
+
} else
|
|
362
|
+
w.print(e.errorMessage);
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
d(), E = (e == null ? void 0 : e.connectionAttempts) ?? 5, s != null && s.action_payload && P(s.action_payload), i = s == null ? void 0 : s.session_id, x({ sessionId: i }), l && z(s);
|
|
366
|
+
}
|
|
367
|
+
async function P(a) {
|
|
368
|
+
var g;
|
|
369
|
+
const r = (g = a == null ? void 0 : a.transfer_parameters) == null ? void 0 : g.contactGuide, l = c.loading(), d = await u.fetchGuide(parseInt(r));
|
|
370
|
+
if (l(), d) {
|
|
371
|
+
const s = d.concat(d);
|
|
372
|
+
if (s.length) {
|
|
373
|
+
const v = s[0].items.map((k) => k.message);
|
|
374
|
+
w.print(v);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
function z(a) {
|
|
379
|
+
var r;
|
|
380
|
+
a == null || a.agent_response.forEach((l) => {
|
|
381
|
+
w.print(l.payload.text);
|
|
382
|
+
}), (r = a == null ? void 0 : a.prompt) != null && r.items && w.print([
|
|
383
|
+
"button-list",
|
|
384
|
+
{
|
|
385
|
+
actions: a.prompt.items.map((l) => {
|
|
386
|
+
let d;
|
|
387
|
+
return l.type === "button" && (d = { actionKey: l.value, label: l.text }), l.type === "link" && (d = {
|
|
388
|
+
actionKey: l.value,
|
|
389
|
+
label: l.text,
|
|
390
|
+
data: {
|
|
391
|
+
href: l.url,
|
|
392
|
+
target: (e == null ? void 0 : e.linkTarget) ?? "_blank"
|
|
393
|
+
}
|
|
394
|
+
}), d;
|
|
395
|
+
})
|
|
396
|
+
}
|
|
397
|
+
]);
|
|
398
|
+
}
|
|
399
|
+
};
|
|
5
400
|
export {
|
|
6
|
-
|
|
401
|
+
mt as ConversationalHubPlugin
|
|
7
402
|
};
|
package/package.json
CHANGED
package/ui/contact-method.d.ts
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
3
|
-
contactMethodId: string;
|
|
4
|
-
groupId: string;
|
|
5
|
-
guideId?: string;
|
|
6
|
-
className?: string;
|
|
7
|
-
};
|
|
8
|
-
declare const ContactMethod: React.FC<Props>;
|
|
2
|
+
declare const ContactMethod: React.FC<any>;
|
|
9
3
|
export default ContactMethod;
|