@telia-ace/conversational-hub-bot-provider 1.3.54 → 1.3.57
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-ZLVXep1Y.mjs → contact-method-B38jdJFB.mjs} +1 -1
- package/{contact-method-D9OmD693.js → contact-method-BVsnE2Mg.js} +1 -1
- package/{contact-method-list-BzAGHFFX.js → contact-method-list-DFpz_Bo3.js} +1 -1
- package/{contact-method-list-CbAeYLrS.mjs → contact-method-list-hOqDT0Ae.mjs} +1 -1
- package/index-CqXeCBbx.js +5 -0
- package/index-DlrDioqz.mjs +786 -0
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/markdown.d.ts +8 -0
- package/package.json +11 -11
- package/index-CGyJXK5J.mjs +0 -626
- package/index-DnKKEE-w.js +0 -1
|
@@ -6,7 +6,7 @@ import { useContainer as _, useDispatch as G, useConversation as I } from "@teli
|
|
|
6
6
|
import { FormBuilder as M } from "@telia-ace/widget-forms";
|
|
7
7
|
import { appendClassNames as O } from "@telia-ace/widget-utilities";
|
|
8
8
|
import { useState as V, useRef as q, useEffect as $, useCallback as H } from "react";
|
|
9
|
-
import { u as j } from "./index-
|
|
9
|
+
import { u as j } from "./index-DlrDioqz.mjs";
|
|
10
10
|
const et = ({
|
|
11
11
|
contactMethodId: a,
|
|
12
12
|
guideId: n,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("react/jsx-runtime"),R=require("@emotion/styled"),F=require("@telia-ace/knowledge-data-client"),$=require("@telia-ace/knowledge-widget-adapters"),v=require("@telia-ace/knowledge-widget-ui"),z=require("@telia-ace/widget-forms"),O=require("@telia-ace/widget-utilities"),l=require("react"),x=require("./index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("react/jsx-runtime"),R=require("@emotion/styled"),F=require("@telia-ace/knowledge-data-client"),$=require("@telia-ace/knowledge-widget-adapters"),v=require("@telia-ace/knowledge-widget-ui"),z=require("@telia-ace/widget-forms"),O=require("@telia-ace/widget-utilities"),l=require("react"),x=require("./index-CqXeCBbx.js"),U=({contactMethodId:s,guideId:n,groupId:b,className:T})=>{var h,q,k,S,j;const[e,u]=l.useState(),c=v.useContainer(),A=v.useDispatch(),f=l.useRef(!0),y=v.useConversation();l.useEffect(()=>{const{events:t}=c.get("$widget"),m=t.subscribe("conversational-hub-provider:form-submitted",async(i,o)=>{var D;if(((D=o.form.meta)==null?void 0:D.groupId)!==b||o.id!==(e==null?void 0:e.id))return;y&&(o.form.meta||(o.form.meta={}),o.form.meta.conversation=y);const p=await c.getAsync("contactMethods"),r={...e,body:{...e.body,form:o.form}},{errors:d,valid:g,errorTypes:_}=await p.validate(r);if(!g){const E=new z.FormBuilder(e.body.form);u(void 0),E.setValidationErrors(d),r.body={...r.body,form:E.get()},u({...r});return}const B=await p.submit(r);r.confirmation=B,u(r)}),a=t.subscribe("conversational-hub-provider:evaluate",async(i,o)=>{if(String(o.id)!==String(s))return;const r=await(await c.getAsync("contactMethods")).evaluate(e);let d={...e,body:{...e.body,form:r}};const g=x.updateForm(d,{submit:"Submit",errors:{},meta:{groupId:b}});d={...d,body:g},u(d)});return()=>{m(),a()}},[c,e,u,y]);const C=(t,m,a=null)=>{if(t["ui:component"]&&t["ui:component"]==="Date")return Object.assign(t,{"ui:bot":!0,"ui:entrance":m}),t;for(const i in t)if(typeof t[i]=="object"&&t[i]!==null){const o=C(t[i],m,t);if(o!==void 0)return o}},w=l.useCallback(async t=>{const a=await(await F.DataClient.getInstance(c)).fetch(F.DataType.ContactMethod,{contactMethodId:t,guideId:n},{noCache:!0,isBot:!0}),i=x.updateForm(a,{submit:"Submit",errors:{},meta:{groupId:b}});if(a.body=i,a.body.guideId=n,!f.current)return null;u(a)},[f]);return l.useEffect(()=>(w(s),()=>{f.current=!1}),[s,w]),e?(e.clientName==="ace.callback"&&((h=e.body)!=null&&h.entrance)&&C(e,(q=e.body)==null?void 0:q.entrance),N.jsx(W,{...e,body:{...e.body,form:e.body.form?{...e.body.form,data:(k=e.body.form)==null?void 0:k.data,layout:{...e.body.form.layout},meta:(S=e.body.form)==null?void 0:S.meta,schema:(j=e.body.form)==null?void 0:j.schema}:void 0,guideId:e.body.guideId},inline:!0,expanded:!0,dispatch:A,className:O.appendClassNames("humany-bot-contact-method",T)})):null},W=R($.ContactMethod)`
|
|
2
2
|
padding: ${s=>{var n;return(n=s.theme.sizes)==null?void 0:n.normal}} ${s=>{var n;return(n=s.theme.sizes)==null?void 0:n.medium}};
|
|
3
3
|
`;exports.default=U;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),u=require("@emotion/styled"),y=require("@telia-ace/knowledge-widget-adapters"),g=require("@telia-ace/knowledge-widget-ui"),l=require("react"),k=require("./contact-method-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),u=require("@emotion/styled"),y=require("@telia-ace/knowledge-widget-adapters"),g=require("@telia-ace/knowledge-widget-ui"),l=require("react"),k=require("./contact-method-BVsnE2Mg.js"),j=({actions:e,entryId:t,groupId:x})=>{const C=g.useDispatch(),d=g.useContainer(),[h,M]=l.useState([]),[c,b]=l.useState([]);return l.useEffect(()=>{d.getAsync("contactMethods").then(n=>{if(!n)return;const r=e.map(async i=>{var m;if(!((m=i.data)!=null&&m.clientName))return null;const s=await n.handleAdapters(i.data);return{...s,...i.data,description:i.data.description?i.data.description:s.description,onClick:(p,o)=>{if(typeof s.onClick=="function"&&s.onClick(p,o),!p.defaultPrevented)if(o.inline&&!o.expanded)b([...c,o.id]);else{const{events:f}=d.get("$widget");f.dispatch("conversational-hub-provider:open-contact-method",{entryId:t,contactMethod:o,actionKey:i.actionKey}),f.dispatch("tracking:contact-method-list-item-clicked",o)}}}});Promise.all(r).then(i=>{M(i.filter(s=>!!s))})})},[e,d,t,c]),h.length?a.jsx(S,{className:"humany-bot-contact-list",contactMethods:h,dispatch:C,itemRenderer:(n,r)=>(c.includes(n.id)||n.expanded)&&n.inline||n.clientName==="custom.link"?a.jsx(q,{contactMethodId:n.id,groupId:x,guideId:n.body.guideId}):a.jsx($,{...n,...r})}):null},S=u(y.ContactList)`
|
|
2
2
|
> ul > li {
|
|
3
3
|
a {
|
|
4
4
|
display: flex;
|
|
@@ -3,7 +3,7 @@ import l from "@emotion/styled";
|
|
|
3
3
|
import { ContactList as M, ContactMethod as b } from "@telia-ace/knowledge-widget-adapters";
|
|
4
4
|
import { useDispatch as $, useContainer as k } from "@telia-ace/knowledge-widget-ui";
|
|
5
5
|
import { useState as f, useEffect as E } from "react";
|
|
6
|
-
import S from "./contact-method-
|
|
6
|
+
import S from "./contact-method-B38jdJFB.mjs";
|
|
7
7
|
const P = ({ actions: t, entryId: e, groupId: y }) => {
|
|
8
8
|
const g = $(), d = k(), [m, x] = f([]), [c, C] = f([]);
|
|
9
9
|
return E(() => {
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";var ft=Object.defineProperty;var bt=(t,n,o)=>n in t?ft(t,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[n]=o;var T=(t,n,o)=>bt(t,typeof n!="symbol"?n+"":n,o);const P=require("@telia-ace/widget-conversation"),R=require("@telia-ace/widget-services"),A=require("@telia-ace/widget-utilities"),D=require("@telia-ace/widget-forms"),yt=require("@webprovisions/platform");class vt{constructor(n){T(this,"enabled",!0);T(this,"botProviderGlobalStateKey","bot-provider-global-state");T(this,"botProviderLocalStateKey","bot-provider-local-state");T(this,"botProviderEntriesKey","bot-provider-entries");T(this,"botProviderMetaStateKey","bot-provider-conversation-meta");this.container=n}getKey(n){let o;switch(n){case"localState":o=this.botProviderLocalStateKey;break;case"globalState":o=this.botProviderGlobalStateKey;break;case"entries":o=this.botProviderEntriesKey;break;case"meta":o=this.botProviderMetaStateKey;break}return o}async read(n){const o=this.getKey(n);if(!(!this.enabled||!o))return R.readStorage(this.container,o)}async write(n,o){const e=this.getKey(o);if(!this.enabled||!e)return;(await R.createStorageWriter(this.container,e,R.StorageCategory.Necessary))(n)}}var M=(t=>(t.ContactMethod="ace-conversational-hub-contact-method",t.ContactList="ace-conversational-hub-contact-list",t))(M||{});const St=t=>{if(t){const{type:n,content:o}=t;if(n&&o)return{type:n,content:o}}},wt=({isUser:t,items:n=[],meta:o={}})=>{const e=A.uuid();return{id:e,isUser:t,items:n.map(f=>({id:f.id||A.uuid(),isUser:t,groupId:e,message:f.message||[]})),meta:o}},$t=({id:t,title:n,defaultIcon:o,exits:[e],exitType:i,confirmationText:f,expandFormAutomatically:c,form:v,description:d},s={})=>{const{adapter:a}=e||{},{clientName:h="",settings:S={},customClientName:b=""}=a,{validation:m}=s,g={id:t.toString(),title:n,description:d,symbol:St(o),clientName:h==="custom.adapter"?b:h,expanded:!0,inline:!0,body:{}};if(h.indexOf("phone")>-1||h.indexOf("freetext")>-1){const{displayTextBeforeClick:y,textBeforeClick:L}=S;y==="true"&&(g.expanded=!1,g.title=L),h.indexOf("phone.text")>-1?g.body.phoneNumber=S.phoneNumber:g.body.freetext=S.freetext}return(h.indexOf("chat.popup")>-1||h.indexOf("link")>-1||h==="custom.adapter"&&i==="custom")&&(g.body=S,g.body.confirmationFallback=f),h.indexOf("ace")>-1&&(g.body=S),v&&v.hasValueComponents&&(m?g.body.form=D.FormBuilder.fromLegacyForm(t.toString(),v,m).get():g.body.form=D.FormBuilder.fromLegacyForm(t.toString(),v).get(),c||(g.expanded=g.inline=!1),g.body=ct(g,{submit:"Submit"})),s.guideId&&(g.body.guideId=s.guideId),g},Ct=t=>{const{localState:n}=t;return t.tags.includes("category")&&t.tags.includes("contact")?P.ConversationMessageListItemType.ItemList:t.tags.includes("suggestion")?P.ConversationMessageListItemType.LinkList:(n==null?void 0:n.$type)==="Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching"?M.ContactList:P.ConversationMessageListItemType.ButtonList},ct=(t,{submit:n,errors:o,meta:e})=>{var i;if((i=t==null?void 0:t.body)!=null&&i.form){const{body:f}=t,c=new D.FormBuilder(f.form);return f.form.layout.submit||c.createComponent(D.submitButton(n,"submit")),o&&c.setValidationErrors(o),e&&c.setMeta(e),{...f,form:c.get()}}return(t==null?void 0:t.body)||{}},It=async(t,n,o)=>{(await(await t.getAsync("dataClient")).getClient()).parameters.set(n,o)},N=({messageId:t,message:n,group:o})=>({id:t,message:n,groupId:o.id,isUser:o.isUser}),Et=async(t,n,o)=>{const e=(s,a,h,S={actions:[],entryId:a.id,groupId:h})=>{const b=[];return S.actions=a.content.items.map(m=>{var y;const g={label:m.title,actionKey:m.actionKey,symbol:m.symbol?m.symbol:void 0,description:m.description||void 0};if(m.data){const L=a.actions[m.actionKey];s===M.ContactList?(b.push(m.data.id),g.data=$t(m.data,{guideId:(y=L==null?void 0:L.guideId)==null?void 0:y.toString()})):g.data=m.data}return g}),s===M.ContactList&&(S.contactMethodIds=b),S},i=async(s,a,h=[],S)=>{var m,g;const b=A.uuid();switch(s.type!=="List"&&s.tags.includes("guide")&&((g=(m=s.content.hints)==null?void 0:m[0])!=null&&g.id)&&await It(t,"LastGuideId",s.content.hints[0].id),s.type){case"List":{if(!s.content)return[];const{items:y,html:L}=s.content,_=[];let E={actions:[],entryId:s.id,groupId:a.id};if((y==null?void 0:y.length)>0){const O=Ct(s);if(E=e(O,s,a.id,E),h.length){const x=h.find(K=>K.tags.includes("paging"));x!=null&&x.content&&(a.meta.paging={actions:x.actions,items:x.content.items,localState:x.localState},x.content.items.forEach(K=>{E.actions.push({label:K.title,actionKey:K.actionKey,data:{groupId:S?S.id:a.id}})}))}_.unshift(N({messageId:b,message:[O,E],group:a}))}return L&&_.unshift(N({messageId:b,message:[P.ConversationMessageListItemType.HTML,{body:L}],group:a})),_}case"Text":{const y=[];if(y.push(N({messageId:b,message:[P.ConversationMessageListItemType.HTML,{body:s.content.html}],group:a})),h.length){const L=h.find(E=>{var O;return E.type==="List"&&((O=E.localState)==null?void 0:O.$type)==="Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching"}),_=h.find(E=>E.tags.includes("contact")&&E.type==="Contact");if(_&&y.push(N({messageId:b,message:[M.ContactMethod,{contactMethodId:_.content.id,groupId:a.id,guideId:_.content.guideId}],group:a})),L){const E=e(M.ContactList,L,a.id);y.push(N({messageId:b,message:[P.ConversationMessageListItemType.Separator,void 0],group:a})),y.push(N({messageId:b,message:[M.ContactList,E],group:a}))}}return y}case"Contact":return[N({messageId:b,message:[M.ContactMethod,{contactMethodId:s.content.id,groupId:a.id,guideId:s.content.guideId}],group:a})];case"Error":return[N({messageId:b,message:[P.ConversationMessageListItemType.HTML,{body:s.content.message||"Something went wrong."}],group:a})];default:return[]}},f=new Map([["Text",1],["List",2],["Contact",3]]),c=[],v=n.sort((s,a)=>{const S=f.get(s.type)||20,b=f.get(a.type)||20;return S-b}).filter(s=>!s.relation).reduce((s,a)=>s.concat(a),[]),d=s=>typeof s.actions.selector<"u";for(const s of v){const a=n.filter(b=>b.relation===s.id&&!d(b)),h=wt({isUser:!1});(await i(s,h,a,o)).forEach(b=>{h.items.push(b)}),h.items.length&&c.push(h)}return c};class Lt{constructor(n,o,e,i){T(this,"globalState");T(this,"localState");T(this,"clientId");T(this,"entries");this.endpoint=n,this.events=o,this.store=e,this.container=i,this.clientId=A.uuid(),this.entries=[]}async fetchGuide(n){const o={command:{guide:{id:n}},globalState:this.globalState,clientId:this.clientId};return await this.postEnvelope(o)}async postEnvelope(n,o){try{const e=await fetch(this.endpoint,this.getHttpOptions(n));if(!e.ok)throw e;const i=await e.json();return this.handleResponse(i,o)}catch(e){process.env.NODE_ENV!=="production"&&console.warn("Something went wrong when posting the envelope.");let i="Something went wrong";return(e.message==="Failed to fetch"||e.message==="NetworkError when attempting to fetch resource.")&&(i="Lost connection... Please try again."),this.events.dispatch("tracking:http-client-error",{message:i,error:e}),this.handleResponse({entries:[{id:A.uuid(),type:"Error",timestamp:new Date().toISOString(),content:{message:i},actions:{},tags:[]}]})}}async handleResponse(n,o){this.entries=this.entries.concat(n.entries),this.store.write(this.entries,"entries");const e=n.entries.find(f=>f.type==="Widget");return e&&this.events.dispatch("provider:widget-entry",e.content),n.globalState&&(this.globalState=n.globalState,this.store.write(n.globalState,"globalState")),this.localState=n.entries.reduce((f,c)=>c.localState?c.localState:f,void 0),this.store.write(this.localState,"localState"),await Et(this.container,n.entries,o)}getHttpOptions(n){const o={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"}};return n.funnel=this.container.get("$widget").name,n.localState=n.localState||this.localState,Object.assign({},o,{body:JSON.stringify(n),credentials:"same-origin"})}}const lt=/^(?:https?:|mailto:|tel:)/i,ot=["_blank","_self","_parent","_top"],xt=/\uE000(\d+)\uE001/g,st="",kt=/[\uE000-\uE002]/g,q="A-Za-z0-9_\\u00C0-\\u024F",dt=/^ {0,3}(`{3,}|~{3,})/,gt=/^ {0,3}(#{1,6})[ \t]+(.*?)(?:[ \t]+#+)?[ \t]*$/,z=/^ {0,3}([-*_])(?:[ \t]*\1){2,}[ \t]*$/,F=/^ {0,3}> ?/,U=/^( *)([-*+]|\d{1,9}[.)])(?:[ \t]+(.*))?$/,_t=/^ *\|? *:?-+:? *(?:\| *:?-+:? *)*\|? *$/,V=t=>t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),it=(t,n)=>{const o=new RegExp(`(?:^|\\s)${n}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s"'=<>\`]+))`,"i").exec(t);return o?o[1]??o[2]??o[3]:void 0},G=t=>t.length-t.trimStart().length,rt=t=>/\d/.test(t),at=t=>t.replace(/\*\*\*(?=\S)(.*?\S)\*\*\*/g,"<strong><em>$1</em></strong>").replace(/\*\*(?=\S)(.*?\S)\*\*/g,"<strong>$1</strong>").replace(new RegExp(`(^|[^${q}])__(?=\\S)(.*?\\S)__(?![${q}])`,"g"),"$1<strong>$2</strong>").replace(/~~(?=\S)(.*?\S)~~/g,"<del>$1</del>").replace(/\*(?=\S)(.*?\S)\*/g,"<em>$1</em>").replace(new RegExp(`(^|[^${q}])_(?=\\S)(.*?\\S)_(?![${q}])`,"g"),"$1<em>$2</em>"),J=(t,n)=>at(t.replace(/(`+)(.+?)\1(?!`)/g,(o,e,i)=>n.store(`<code>${i.trim()}</code>`)).replace(/\\([\\`*_{}[\]()#+\-.!|~])/g,(o,e)=>n.store(e)).replace(/<((?:https?:|mailto:)\S+?)>/gi,(o,e)=>n.link(e,e)).replace(/!?\[([^\]\n]+)\]\(\s*([^\s)]+)(?:\s+".*?")?\s*\)/g,(o,e,i)=>lt.test(i)?n.link(i,at(e)):e)),ut=(t,n)=>t[n].includes("|")&&n+1<t.length&&t[n+1].includes("|")&&_t.test(t[n+1]),ht=(t,n)=>dt.test(t[n])||gt.test(t[n])||z.test(t[n])||F.test(t[n])||U.test(t[n])||ut(t,n),W=t=>t.replace(/\\\|/g,st).trim().replace(/^\||\|$/g,"").split("|").map(n=>n.split(st).join("\\|").trim()),Tt=(t,n,o)=>{const e=W(t[n]),i=W(t[n+1]).map(s=>s.startsWith(":")&&s.endsWith(":")?"center":s.endsWith(":")?"right":s.startsWith(":")?"left":""),f=(s,a)=>`<tr>${e.map((h,S)=>{const b=i[S]?` style="text-align: ${i[S]}"`:"";return`<${a}${b}>${J(s[S]??"",o)}</${a}>`}).join("")}</tr>`,c=[];let v=n+2;for(;v<t.length&&t[v].trim()&&t[v].includes("|");)c.push(f(W(t[v]),"td")),v++;const d=c.length?`<tbody>${c.join("")}</tbody>`:"";return[`<table><thead>${f(e,"th")}</thead>${d}</table>`,v]},Mt=(t,n,o)=>{const e=U.exec(t[n]),i=e[1].length,f=rt(e[2]),c=[];let v=0;const d=m=>{const g=U.exec(m);return g&&g[1].length<=i+1&&rt(g[2])===f&&!z.test(m)?g:null};let s=n;for(;s<t.length;){const m=t[s],g=d(m);if(g){const y=g[3]??"";v=y?m.length-y.length:g[1].length+g[2].length+1,c.push([y])}else if(m.trim())if(G(m)>i+1)c[c.length-1].push(m.slice(Math.min(G(m),v)));else{if(ht(t,s))break;c[c.length-1].push(m.trimStart())}else{let y=s+1;for(;y<t.length&&!t[y].trim();)y++;if(y>=t.length||G(t[y])<=i+1&&!d(t[y]))break;c[c.length-1].push("")}s++}const a=f?"ol":"ul",h=parseInt(e[2],10),S=f&&h!==1?` start="${h}"`:"",b=c.map(m=>`<li>${Q(m,o).replace(/^<p>([\s\S]*?)<\/p>/,"$1")}</li>`).join("");return[`<${a}${S}>${b}</${a}>`,s]},Q=(t,n)=>{const o=[];let e=0;for(;e<t.length;){const i=t[e];if(!i.trim()){e++;continue}const f=dt.exec(i);if(f){const d=[];for(e++;e<t.length&&!t[e].trimStart().startsWith(f[1]);)d.push(t[e]),e++;e++,o.push(`<pre><code>${d.join(`
|
|
2
|
+
`)}</code></pre>`);continue}const c=gt.exec(i);if(c){const d=Math.min(c[1].length+2,6);o.push(`<h${d}>${J(c[2],n)}</h${d}>`),e++;continue}if(z.test(i)){o.push("<hr>"),e++;continue}if(F.test(i)){const d=[];for(;e<t.length&&F.test(t[e]);)d.push(t[e].replace(F,"")),e++;o.push(`<blockquote>${Q(d,n)}</blockquote>`);continue}if(ut(t,e)){const[d,s]=Tt(t,e,n);o.push(d),e=s;continue}if(U.test(i)){const[d,s]=Mt(t,e,n);o.push(d),e=s;continue}const v=[i.trim()];for(e++;e<t.length&&t[e].trim()&&!ht(t,e);)v.push(t[e].trim()),e++;o.push(`<p>${J(v.join(`
|
|
3
|
+
`),n).replace(/\n/g,"<br>")}</p>`)}return o.join("")},Pt=(t,n={})=>{const o=n.linkTarget&&ot.includes(n.linkTarget)?n.linkTarget:"_blank",e=[],i={store:d=>`${e.push(d)-1}`,link:(d,s,a=o)=>i.store(`<a href="${d}" target="${a}" rel="noopener noreferrer">${s}</a>`)},f=t.replace(kt,"").replace(/\r\n?/g,`
|
|
4
|
+
`).replace(/<a\s([^>]*)>([\s\S]*?)<\/a\s*>/gi,(d,s,a)=>{var m;const h=(m=it(s,"href"))==null?void 0:m.trim().replace(/&/g,"&"),S=it(s,"target"),b=V(a);return!h||!lt.test(h)?i.store(b):i.link(V(h),b,S&&ot.includes(S)?S:o)}),c=V(f).split(`
|
|
5
|
+
`).map(d=>d.replace(/^\t+/,s=>" ".repeat(s.length)));let v=Q(c,i);for(;v.includes("");)v=v.replace(xt,(d,s)=>e[+s]);return v},Ot="@telia-ace/conversational-hub-bot-provider",At="0.0.16",H={name:Ot,version:At},Nt=async t=>{var Z,X,Y,tt,et;const n="chub-plugin",o=t.get("$widget"),e=(et=(tt=(Y=(X=(Z=o==null?void 0:o.container)==null?void 0:Z.get("$settings"))==null?void 0:X.components)==null?void 0:Y.conversation)==null?void 0:tt.properties)==null?void 0:et.conversationalHubPluginSettings;let i,f,c,v=(e==null?void 0:e.connectionAttempts)??5,d,s,a;A.Logger.info((H==null?void 0:H.name)+" version: "+(H==null?void 0:H.version)),P.registerCustomMessageComponent(t,M.ContactMethod,Promise.resolve().then(()=>require("./contact-method-BVsnE2Mg.js"))),P.registerCustomMessageComponent(t,M.ContactList,Promise.resolve().then(()=>require("./contact-method-list-DFpz_Bo3.js")));const h=await R.createStorageWriter(t,"conversational-hub-session",R.StorageCategory.Necessary),S=(u,l)=>{const{knowledgeBotEndpoint:r}=l.properties();if(r)return`${r}/conversations`;const{data:p}=u.get("$settings");if(!p||!p.projection)throw new Error("Missing Knowledge Bot endpoint");return`${p.projection}/conversations`},b=u=>{var l;if(u.target instanceof HTMLButtonElement){const r=u.target;if((l=r.getAttribute("class"))!=null&&l.includes("dialog-option-cx")){const p=r.getAttribute("value");O(p),i.user.print(p.replace(/</g,"<").replace(/>/g,">"))}}};(await P.ConversationPlatform.getInstance(t)).registerProvider(n,(u,l)=>{i=u,f=i.controller,c=i.createAgent({name:e==null?void 0:e.botName,avatar:e==null?void 0:e.avatar}),a=S(t,l);const{events:r}=t.get("$widget"),p=new vt(t);s=new Lt(a,r,p,t),_();const[w]=t.get("widgetDOMElements");w.querySelectorAll(".humany-bot-contact-method").forEach(C=>{var $;($=C.closest(".humany-conversation-entry"))==null||$.remove()}),w.removeEventListener("click",b),w.addEventListener("click",b);const I=()=>f.providers.includes(n);l.actions.create("submit",C=>{const{events:$}=t.get("$widget");$.dispatch("conversational-hub-provider:form-submitted",C)}),l.actions.create("evaluate",C=>{const{events:$}=t.get("$widget");$.dispatch("conversational-hub-provider:evaluate",C)}),l.actions.watch("conversation.action",(C,$)=>(I()&&E(C),$(C))),l.actions.watch("conversation.user-submit",(C,$)=>{if(!I())return $(C);O(C.text),i.user.print(C.text.replace(/</g,"<").replace(/>/g,">"))}),o.events.subscribe("conversational-hub-provider:fetch-guide",async(C,$)=>{if(!($!=null&&$.guideId))return;const B=await s.fetchGuide(parseInt($.guideId));B&&g(B)})});async function g(u){u.forEach(l=>{const r=l.items.map(p=>p.message);l.writer=c.print(r)})}const y=sessionStorage.getItem(`humany_${L(o.implementation.tenant+o.implementation.name+o.name)}`);function L(u){let l=0;if(u.length===0)return l.toString();for(let r=0;r<u.length;r++){const p=u.charCodeAt(r);l=(l<<5)-l+p,l=l&l}return l.toString()}async function _(u=!0){const l=await R.readStorage(t,"conversational-hub-session"),r=t.get("dialogflowSettings");if(r!=null&&r.silentStart)delete r.silentStart,o.events.dispatch("conversational-hub-provider:started",{});else if(l!=null&&l.sessionId&&u)d=l==null?void 0:l.sessionId;else if(e!=null&&e.welcomeMessage){if(!(y!=null&&y.length?JSON.parse(y):{})["conversation-conversation"]){const w=e.welcomeMessage.replaceAll("$lt;","<").replaceAll("$gt;",">");c.print(w)}}else{const p={extension:e.extension};r!=null&&r.initCommand&&(p.input={type:"event",language:e.language,content:{name:r.initCommand,parameters:r.initParameters||{}}}),await x(e.baseUrl+"/initialize",JSON.stringify(p),u)}}async function E(u){await x(`${e.baseUrl}/input/${d}`,`{"type":"button_click","language":"${e.language}","content":{"button_text":"${u.label}","value":"${u.actionKey}"}}`)}async function O(u){const l={text:u};if(!d){const r={extension:e.extension},p=t.get("dialogflowSettings");p!=null&&p.initCommand&&(r.input={type:"event",language:e.language,content:{name:p.initCommand,parameters:p.initParameters||{}}}),await x(e.baseUrl+"/initialize",JSON.stringify(r),!1)}await x(`${e.baseUrl}/input/${d}`,`{"type":"text","language":"${e.language}","content":${JSON.stringify(l)}}`)}async function x(u,l,r=!0){var C,$,B,nt;const p=i.loading();let w,I;try{w=await fetch(u,{method:"POST",body:l}),I=await(w==null?void 0:w.json())}catch(j){j instanceof SyntaxError?A.Logger.error("Incorrect JSON format.",j):A.Logger.error("Network error: check connection or baseUrl.",j),p(),c.print(e.errorMessage||"An error occurred");return}if(!(w!=null&&w.ok)){if(A.Logger.error(`HTTP ${w==null?void 0:w.status}.`,JSON.stringify(I)),p(),!!((C=I==null?void 0:I.errors)!=null&&C.filter(k=>k.code==="1003").length)&&v>0){v--,await new Promise(pt=>setTimeout(pt,500)),await _(!1);const k=JSON.parse(l);($=k==null?void 0:k.content)!=null&&$.text?await O(k.content.text):(B=k==null?void 0:k.content)!=null&&B.action&&await E((nt=k==null?void 0:k.content)==null?void 0:nt.action)}else c.print(e.errorMessage||"An error occurred");return}p(),v=(e==null?void 0:e.connectionAttempts)??5,I!=null&&I.action_payload&&K(I.action_payload),d=I==null?void 0:I.session_id,h({sessionId:d}),r&&mt(I)}async function K(u){var w;const l=(w=u==null?void 0:u.transfer_parameters)==null?void 0:w.contactGuide,r=i.loading(),p=await s.fetchGuide(parseInt(l));r(),p&&g(p)}function mt(u){var l;u==null||u.agent_response.forEach(r=>{c.print(e!=null&&e.markdown&&r.type==="text"?Pt(r.payload.text,{linkTarget:e==null?void 0:e.linkTarget}):r.payload.text)}),(l=u==null?void 0:u.prompt)!=null&&l.items&&c.print(["button-list",{actions:u.prompt.items.map(r=>{let p;return r.type==="button"&&(p={actionKey:r.value,label:r.text}),r.type==="link"&&(p={actionKey:r.value,label:r.text,data:{href:r.url,target:(e==null?void 0:e.linkTarget)??"_blank"}}),p})}])}},Kt=yt.createConfigurationApi(t=>{t.createCommand("dialogflow",n=>o=>{const e={initCommand:o.initCommand};o.initParameters&&(e.initParameters=o.initParameters),o.silentStart&&(e.silentStart=o.silentStart),n.container.register("dialogflowSettings",e)})});exports.ConversationalHubPlugin=Nt;exports.dialogflowConfigurationApi=Kt;exports.updateForm=ct;
|