@telia-ace/conversational-hub-bot-provider 0.0.5 → 0.0.6
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/index.js +1 -1
- package/index.mjs +3 -3
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1092,4 +1092,4 @@ Valid keys: `+JSON.stringify(Object.keys(x),null," "));var A=me(M,U,j,I,D+"."+U
|
|
|
1092
1092
|
min-width: 100px;
|
|
1093
1093
|
`;class Du{constructor(e){k(this,"cache",new Map);k(this,"subscriptions",[]);this.controller=e;const{events:n}=e.container.get("$widget"),r=n.subscribe("data-client:fetched",(i,s)=>{s.type==="contact-method"&&this.cache.set(s.response.id,s.response)});this.subscriptions.push(r)}getConversationLogs(){return this.controller.messages.reduce((n,r)=>{const i=nn(r),{key:s,content:o,type:a,sender:l,timestamp:u}=i.content,c=this.parseEntry(o,a,l,u);return c&&n.push(c),n},[])}parseEntry(e,n,r,i){const s=u=>{let c=[],d=[],f;if(Array.isArray(u)){const[g,v]=u;f=v}else f=u;return this.createMessageContent(f).length&&(d=[...d,this.createMessageContent(f)]),c=[...c,...this.createMessageOptions(f)],{messagesAsList:d,options:c}};let o=[],a=[];if(Array.isArray(e.items)){const{items:u}=e;u.forEach(c=>{const d=s(c);o=[...o,...d.options],a=[...a,...d.messagesAsList]})}else{const u=s(e);o=[...o,...u.options],a=[...a,...u.messagesAsList]}return{options:o,message:a.length?a.join(`
|
|
1094
1094
|
`):void 0,source:this.createMessageSource(n),alias:this.createAlias(n,r),timestamp:i}}createMessageSource(e){return e}createAlias(e,n){return e===tn.System?"system":(n==null?void 0:n.name)||"Me"}handleContactMethod(e){if(!this.cache.has(e))return;const n=this.cache.get(e);let r="";return r=this.appendText(r,`${n.clientName}:`),r=this.appendText(r,n.title),n.description&&(r=this.appendText(r,n.title)),r}getDetails(e,n=!0){if(!e)return"";const{header:r,title:i,label:s,description:o,text:a,html:l,body:u,contactMethodId:c}=e;let d="";if(c){const f=this.handleContactMethod(c.toString());f&&(d=this.appendText(d,f,n))}return r&&(d=this.appendText(d,r,n)),i&&(d=this.appendText(d,i,n)),o&&(d=this.appendText(d,o,n)),a&&(d=this.appendText(d,a,n)),s&&(d=this.appendText(d,s,n)),l&&(d=this.appendText(d,l,n)),u&&typeof u=="string"&&(d=this.appendText(d,u,n)),d}createMessageContent(e){let n="";return n=this.getDetails(e),n}createMessageOptions(e){let n=[],r=[];return Array.isArray(e==null?void 0:e.actions)?r=e.actions:typeof(e==null?void 0:e.actions)=="object"&&(r=Object.entries(e.actions).map(([i,s])=>({actionKey:i,label:s}))),r.length&&(n=r.map(i=>this.getDetails(i,!1))),n}appendText(e,n,r=!0){return r&&e.length?`${e}
|
|
1095
|
-
${n}`:e.length?`${e} ${n}`:n}dispose(){this.subscriptions.forEach(e=>{e()})}}class zn{constructor(e,n){k(this,"id");k(this,"name");k(this,"avatar");k(this,"print",(e,n)=>{const r={name:this.name,avatar:this.avatar,id:this.id},i=nn(e,n);return this.provider.createEntry(i.key,i.content,tn.Agent,r,i.timestamp)});k(this,"typing",()=>this.provider.setTypingState({name:this.name,avatar:this.avatar}));this.provider=e,this.id=n.id||Xe(),this.name=n.name,this.avatar=n.avatar}update(e){var i;const{name:n,avatar:r}=e;r===null?this.avatar=void 0:r&&(this.avatar=r),n===null?this.name=void 0:n&&(this.name=n),(i=this.provider.controller)==null||i.events.dispatch("conversation:agent-updated",{agent:this})}}class Nr{constructor(e,n,r){k(this,"subscriptions",[]);k(this,"options");k(this,"user");this.name=e,this.container=n,this.controller=r,this.user=r==null?void 0:r.user,this.options={silent:!1}}static create(e,n,r){return new Nr(e,n,r)}createAgent(e={}){var n;if(this.controller){const r=this.controller.getAgentById(e.id),i=r?new zn(this,{...r,...e}):new zn(this,e);return r||(n=this.controller)==null||n.events.dispatch("conversation:agent-created",{agent:i}),i}}print(e){var n;return(n=this.controller)==null?void 0:n.print(e)}setTypingState(e,n){var r;return(r=this.controller)==null?void 0:r.setTypingState(e,n)}loading(){return this.controller?this.controller.loader():()=>()=>{}}createEntry(e,n,r,i,s){var o;return(o=this.controller)==null?void 0:o.createEntry(e,n,r,i,s)}dispose(){var e;process.env.NODE_ENV!=="production"&&console.log(`conversation-provider: dispose (${this.name})`),(e=this.controller)==null||e.disposeProvider(this),this.controller=null,this.subscriptions.forEach(n=>n())}isRehydrated(){var e;return((e=this.controller)==null?void 0:e.isRehydrated())||Promise.resolve(!1)}getHistory(){var e;return((e=this.controller)==null?void 0:e.getHistory())||[]}complete(){var e;(e=this.controller)==null||e.onCompleteProvider()}setOptions(e={silent:!1}){this.options=e}onUnreadMessage(e){var n;if(this.controller){const r=(n=this.controller)==null?void 0:n.onUnreadMessage(e);return this.subscriptions.push(r),()=>{r()}}}onMounted(e){var n;if(this.controller){const r=(n=this.controller)==null?void 0:n.events.subscribe("conversation:component-mount-changed",e);return this.subscriptions.push(r),e({},this.controller.getComponentMountedState()),()=>{r()}}}}const Hs=t=>`conversation-${t}`;class Mu{constructor(){k(this,"_locking",Promise.resolve());k(this,"_locks",0)}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const n=new Promise(i=>e=()=>{this._locks-=1,i()}),r=this._locking.then(()=>e);return this._locking=this._locking.then(()=>n),r}}class Iu{constructor(e,n,r){k(this,"sessionStorageKey");k(this,"locker",new Mu);k(this,"initialStoredAgents",[]);this.container=e,this.conversation=n,this.enabled=r,this.sessionStorageKey=Hs(n.id),n.onStarted(async()=>{if(n.messages.length>0)return;const{agents:i}=await this.read(),s=[];i&&i.forEach(a=>{const l=n.providerIndex(a.providerName),u=l>-1?n.registeredProviders[l]:n.createProvider(a.providerName),c=new zn(u,{name:a.name,avatar:a.avatar,id:a.id});s.push(c)});const{messages:o}=await this.read();o.forEach(a=>{switch(a.type){case"agent":{const l=s.find(u=>{var c;return u.id===((c=a.sender)==null?void 0:c.id)});l&&l.print(a.content.items||a.content,{key:a.key});return}case"user":{n.user.print(a.content.items||a.content,{key:a.key});return}case"system":default:n.print(a.content.items||a.content)}})}),n.onMessageCreated(async(i,s)=>{this.write(s.message,"messages")}),n.events.subscribe("conversation:agent-created",async(i,s)=>{const o={id:s.agent.id,name:s.agent.name,avatar:s.agent.avatar,providerName:s.agent.provider.name};await this.write(o,"agents")}),n.events.subscribe("conversation:agent-updated",async(i,s)=>{const{agents:o}=await this.read();await this.write([...o.map(a=>a.id===s.agent.id?{...a,name:s.agent.name,avatar:s.agent.avatar}:a)],"agents","update")})}setInitialData(e){this.initialStoredAgents=e.agents}async isRehydrated(){const{messages:e}=await this.read();return e.length>0}getStoredAgent(e){if(this.enabled)return this.initialStoredAgents.find(n=>n.id===e)}async write(e,n,r="add"){if(!this.enabled)return;const i=await this.locker.lock();return Ut(this.container,this.sessionStorageKey,he.Necessary).then(async s=>{if(r==="add"){const o=await this.read();if(n==="messages"&&o.messages.findIndex(l=>l.key===e.key)>-1){i();return}const a={...o};return n==="messages"?a.messages=[...a.messages,e]:n==="agents"&&(a.agents=[...a.agents,e]),s({...o,...a}).then(()=>{i()})}if(r==="update"&&n==="agents"){const o=await this.read();return s({...o,agents:e}).then(()=>{i()})}return s(e).then(()=>{i()})})}async read(){return Le(this.container,this.sessionStorageKey).then(e=>e||{messages:[],agents:[]})}}class Vu{constructor(e){k(this,"print",(e,n)=>{const r=nn(e,n);return this.controller.createEntry(r.key,r.content,tn.User,void 0,r.timestamp)});this.controller=e}}const Bn=async(t,e,n)=>{const r=await t.getAsync("conversation"),i=await t.getAsync("components"),s=r.controllers.find(o=>o.conversation.id===e);if(s){const o=[...s.conversation.providers];o.forEach(l=>{s.conversation.setProviderOptions(l,{silent:!0})}),s.conversation.queueProviders(o),s.conversation.setProviders([n]);const a=i.components().ofType("conversation");i.write({key:"setConversationProvider",attributes:{properties:{providers:[n]}},target:a,provider:"localStorage"})}};class Hu{constructor(e){this.writer=e}update(e){const n=this.getNormalizedSettings(e);this.writer(n)}remove(){this.writer(null)}getNormalizedSettings(e){return typeof e=="string"?{body:e}:e.length>-1&&typeof e=="object"?{items:e}:e}}var tn=(t=>(t.User="user",t.Agent="agent",t.System="system",t))(tn||{});const nn=(t,e)=>{let n,r=(e==null?void 0:e.key)||Xe(),i=Date.now();if(Array.isArray(t)&&t.length>-1)typeof t[0]=="string"?n={items:[t]}:n={items:t};else if(typeof t=="string")n={body:t};else if(t=t||{},t.type)n={...t};else{if(n={body:t.body,actions:t.actions,title:t.title},t.key&&(r=t.key),t.timestamp&&(i=t.timestamp),typeof t.form=="function"){const s=Me.create(r);t.form(s);const o=s.get();n.form=o}t.timestamp===null&&(i=null)}return{content:n,key:r,timestamp:i}},Ai=(t,e)=>{if(!e)return;const n=JSON.stringify(e),r=t.findIndex(i=>n===JSON.stringify(i));if(r>-1)return t.splice(r,1)};class zu{constructor(e,n,r){k(this,"formHandlers",{});k(this,"user",new Vu(this));k(this,"events");k(this,"providers",[]);k(this,"active",!1);k(this,"queuedProviders",[]);k(this,"registeredProviders",[]);k(this,"loaders",0);k(this,"componentMounted",!1);k(this,"store");k(this,"messages",[]);k(this,"typingActors",[]);k(this,"conversationHistory");k(this,"print",e=>{const n=nn(e);return this.createEntry(n.key,n.content,"system",void 0,n.timestamp)});this.container=e,this.id=n;const i=e.get("$widget");this.events=i.events.createChild(this),this.store=new Iu(e,this,r.rehydrate),this.conversationHistory=new Du(this)}setInitialStorage(e){this.store.setInitialData(e)}setProviders(e){const n=[],r=[];this.providers.reduce((i,s)=>(e.indexOf(s)===-1&&i.push(s),i),[]).forEach(i=>{const s=this.providers.indexOf(i);s>-1&&(n.push(i),this.providers.splice(s,1))}),e.forEach(i=>{this.providers.indexOf(i)===-1&&(r.push(i),this.providers.push(i))}),(r.length||n.length)&&this.events.dispatch("conversation:providers-changed",{added:r,removed:n})}createProvider(e){const n=this.providerIndex(e);if(n>-1)return this.registeredProviders[n];const r=Nr.create(e,this.container,this);return this.registeredProviders.push(r),r}providerIndex(e){return this.registeredProviders.findIndex(n=>n.name===e)}getAgentById(e){if(e)return this.store.getStoredAgent(e)}dispose(){this.conversationHistory.dispose(),this.registeredProviders.forEach(e=>e.dispose()),this.messages=[],this.events.dispatch("conversation:controller-disposed",this),this.active=!1}onDispose(e){return this.events.subscribe("conversation:controller-disposed",e)}onStarted(e){return this.events.subscribe("conversation:started",e)}onMessageCreated(e){return this.events.subscribe("conversation:message-created",e)}isRehydrated(){return this.store.isRehydrated()}disposeProvider(e){const n=this.providerIndex(e.name);n>-1&&this.registeredProviders.splice(n,1),this.events.dispatch("conversation:providers-changed",{removed:[e.name]}),this.registeredProviders.length||this.dispose()}onProvidersChange(e){return this.events.subscribe("conversation:providers-changed",e)}setComponentMountedState(e){this.componentMounted!==e&&(this.componentMounted=e,e&&(this.events.dispatch("conversation:unread-message",!1),this.events.dispatch("conversation:started",!0),this.active=!0),this.events.dispatch("conversation:component-mount-changed",e))}setProviderOptions(e,n){const r=this.providerIndex(e);r>-1&&this.registeredProviders[r].setOptions(n)}changeProvider(e){this.registeredProviders.find(r=>r.name===e)&&Bn(this.container,this.id,e)}queueProviders(e){this.queuedProviders=e}onCompleteProvider(){const e=this.queuedProviders.pop();e&&Bn(this.container,this.id,e)}getComponentMountedState(){return this.componentMounted}onUnreadMessage(e){return this.events.subscribe("conversation:unread-message",e)}createEntry(e,n,r,i,s){const o={key:e,content:n,type:r,sender:i||null,timestamp:s||s===null?s:Date.now()};this.messages.push(o),o.type==="agent"&&Ai(this.typingActors,i);const a=new Hu(l=>{if(l!==null){const{timestamp:u=void 0,...c}=l;o.content=c,u&&(o.timestamp=u)}else{const u=this.messages.indexOf(o);o.content=null,u>-1&&this.messages.splice(u,1)}this.events.dispatch("conversation:message-updated",{message:o}),this.update()});return this.events.dispatch("conversation:message-created",{message:o}),this.update(),this.componentMounted||this.events.dispatch("conversation:unread-message",!0),a}update(){this.events.dispatch("conversation:updated",{messages:this.messages,loading:this.loaders>0,typingActors:this.typingActors})}getMessageStream(){return{messages:this.messages,loading:this.loaders>0,typingActors:this.typingActors}}setTypingState(e,n){return this.typingActors.indexOf(e)===-1&&(this.typingActors.push(e),this.update()),()=>{Ai(this.typingActors,e),this.update()}}loader(){this.loaders=this.loaders+1;let e=!1;return this.loaders===1&&this.update(),()=>{e||(e=!0,this.loaders=this.loaders-1,this.loaders===0&&this.update())}}submitForm(e,n){this.formHandlers[e]={...this.formHandlers[e],submit:n}}validateForm(e,n){this.formHandlers[e]={...this.formHandlers[e],validate:n}}getHistory(){return this.conversationHistory.getConversationLogs()}}const _i=t=>{const{implementation:e}=t.get("$widget"),r=(e.container.get("modals")||[]).map(i=>i.close());return Promise.all(r)},Bu=(t,e)=>{const n=t.split("_contact");return e.widgets.get(n[0])},$r=t=>{const e=t.get("$widget"),{name:n,implementation:r}=t.get("$widget"),i=n.indexOf("_contact")>-1?Bu(n,r):e,{data:s}=t.get("$settings"),{trigger:o}=i.container.get("$settings"),a=`${n.replace("_contact-method","").replace("_contact","")}_contact-method`,l=r.widgets.get(a);return l&&!o?{chatWidget:l,mainWidget:i,data:s}:{mainWidget:i,data:s}},Wu=t=>{const{chatWidget:e}=$r(t);return!!e},Li=(t,e,n)=>{const{mainWidget:r,data:i,chatWidget:s}=$r(t);return s?s.state==="activated"?s.invoke("open").then(()=>{s.container.getAsync("conversation").then(o=>{o.navigateToConversationIfActive(e.id).then(()=>_i(t))})}):s.activate().then(()=>{const{trigger:o}=s.container.get("$settings");return o.action="hide",s.invoke("setSettings",()=>({data:i,trigger:o,activate:!0})).then(()=>s.container.getAsync("components").then(a=>{const l=a.components().ofType("contact-method");a.write({key:"setContactMethodId",attributes:{properties:{id:e.id,guideId:e.guideId}},target:l,provider:"localStorage"});const u=a.components().ofType("conversation");a.write({key:"setConversationProvider",attributes:{properties:{providers:[e.clientName]}},target:u,provider:"localStorage"})}))}).then(()=>s.invoke("attach",{key:"contact-method",triggerDOMElement:n,withRenderState:"open"})).then(()=>(Ut(s.container,"activeStickyWidget",he.Necessary,{medium:pe.Local,scope:Wt.Implementation}).then(o=>o(s.name)),s.container.getAsync("conversation").then(o=>{o.setConversationEndedBehavior(zt.Deactivate)}).then(()=>_i(t)).then(()=>!1))):(r.container.getAsync("conversation").then(o=>o.navigateToConversationIfActive(e.id).then(()=>o.setConversationEndedBehavior(zt.Navigate))),!s)},Uu=(t,e,n="conversation")=>{const{mainWidget:r,chatWidget:i}=$r(t);return i?i.container.getAsync("router").then(s=>{s.navigate(n,{id:e.id})}):r.container.getAsync("conversation").then(s=>{var o;(o=s.setConversationEndedBehavior(zt.Navigate))==null||o.then(()=>{r.container.getAsync("router").then(a=>{r.container.getAsync("components").then(l=>{const u=l.components().ofType("conversation");l.write({key:"setConversationProvider",attributes:{properties:{providers:[e.clientName]}},target:u,provider:"localStorage"})}).then(()=>{a.navigate(n,{id:e.id})})})})})},st="conversations";var zt=(t=>(t.Deactivate="deactivate",t.Navigate="navigate",t.None="none",t))(zt||{});class Tr{constructor(e,n){k(this,"events");k(this,"controllers",[]);k(this,"providers",[]);k(this,"disposeProviders",{});k(this,"subscriptions",[]);k(this,"storageWriter",null);k(this,"router",null);k(this,"buttonQuery",null);k(this,"sessionInfo",null);this.container=e,this.components=n;const r=e.get("$widget");this.events=r.events.createChild(this)}initialize(){Ut(this.container,st,he.Necessary,{medium:pe.Local}).then(e=>this.storageWriter=e),Le(this.container,st,pe.Local).then(e=>{this.buttonQuery=this.components.components().ofType("conversation-return-button"),e&&(this.sessionInfo=e,e.id&&e.route&&this.writeToComponents({active:!0,alert:{show:!1}}))}),this.container.getAsync("router").then(e=>this.router=e),this.events.subscribe("conversation:ended",(e,n)=>{var r,i,s;switch((r=this.sessionInfo)==null?void 0:r.conversationEndedBehavior){case"deactivate":this.container.get("$widget").deactivate();break;case"navigate":const a=(i=this.router)==null?void 0:i.getInitialRoute();a&&((s=this.router)==null||s.navigate(a.name));break}this.writeToComponents({active:!1}),this.sessionInfo=null,this.storageWriter&&this.storageWriter()})}addSubscription(e){this.subscriptions.push(e)}static getInstance(e,n="conversation"){return ht(e)(()=>e.getAsync(n).then(r=>{let i=r;return i||Hi.getInstance(e).then(s=>(i=new Tr(e,s),i.initialize(),e.registerAsync(n,()=>i),i))}))}navigateToConversationIfActive(e){return Le(this.container,st,pe.Local).then(n=>{var r;if(n&&n.id===e&&n.route){const{name:i,params:s}=n.route;(r=this.router)==null||r.navigate(i,s)}})}setConversationEndedBehavior(e){return Le(this.container,st,pe.Local).then(n=>{let r=n;return r?r.conversationEndedBehavior=e:r={conversationEndedBehavior:e},this.sessionInfo=r,this.storageWriter&&this.storageWriter(this.sessionInfo)||Promise.resolve()})}async createController(e,n){const r=Hs(e),{agents:i}=await Le(this.container,r)||{agents:[]},s=this.controllers.findIndex(a=>a.conversation.id===e);let o;return s>-1?o=this.controllers[s].conversation:o=new zu(this.container,e,n),o.setInitialStorage({agents:i||[]}),o}registerProvider(e,n){const r={name:e,handler:n};this.providers.push(r),this.controllers.filter(i=>i.conversation.providers.indexOf(e)>-1).forEach(i=>{this.invokeHandler(r,i)})}registerController(e,n){const r=this.controllers.findIndex(s=>s.conversation.id===e.id);let i;if(r<0){i={conversation:e,component:n},this.controllers.push(i);const s=o=>{o&&this.providers.filter(a=>o.indexOf(a.name)>-1).forEach(a=>{this.invokeHandler(a,i)})};return this.subscriptions.push(e.onDispose((o,a)=>{const l=this.controllers.findIndex(u=>u.conversation===a);l>-1&&this.controllers.splice(l,1),this.components.components().ofType("conversation-return-button").select().writeProperties({active:!1}),this.events.dispatch("conversation:ended",{},{bubbles:!0})})),this.subscriptions.push(e.onProvidersChange((o,a)=>{const{added:l,removed:u=[]}=a;u.forEach(c=>{(this.disposeProviders[c]||[]).forEach(d=>{d()})}),s(l)})),this.subscriptions.push(e.onStarted((o,a)=>{var u,c;const l={id:e.id,route:(u=this.router)==null?void 0:u.getRouteData(),conversationEndedBehavior:(c=this.sessionInfo)==null?void 0:c.conversationEndedBehavior};this.sessionInfo=l,this.storageWriter&&this.storageWriter(l),this.writeToComponents({active:a})})),this.subscriptions.push(e.onUnreadMessage((o,a)=>{this.events.dispatch("conversation:unread-message",a),this.writeToComponents({alert:{show:a}})})),s(e.providers),!0}return i=this.controllers[r],!1}writeToComponents(e,n="conversationReturnButtonState"){this.buttonQuery&&this.components.write({key:"conversationReturnButtonState",attributes:{properties:e},target:this.buttonQuery,provider:"localStorage"})}invokeHandler(e,n){const r=e.handler(n.conversation.createProvider(e.name),n.component);r&&(this.disposeProviders[e.name]||(this.disposeProviders[e.name]=[]),this.disposeProviders[e.name].push(r))}getComponentRoute(){return Le(this.container,st,pe.Local).then(e=>e==null?void 0:e.route)}dispose(){Object.keys(this.disposeProviders).forEach(e=>{this.disposeProviders[e].forEach(n=>{n()})}),this.subscriptions.forEach(e=>{e()}),this.controllers=[],this.providers=[]}static async handleContactMethodClick(e,n,r,i){if(Wu(n)){e.preventDefault();let s=document.getElementById("humany-dynamic-anchor");s||(s=document.createElement("a"),s.setAttribute("href","#"),s.id="humany-dynamic-anchor",document.body.appendChild(s)),Li(n,r,s)}Li(n,r)}static async handleContactMethodSubmit(e,n){var r,i;return(i=(r=n==null?void 0:n.body.form.meta)==null?void 0:r.conversation)!=null&&i.id?Bn(e,n.body.form.meta.conversation.id,n.clientName):Uu(e,n)}}const Fu="@telia-ace/conversational-hub-bot-provider",qu="0.0.5",Yu="./index.js",Zu="./index.d.ts",Ku={".":{import:"./index.mjs",require:"./index.js"}},Gu={"@telia-ace/widget-conversation":"*","@webprovisions/platform":"^1.1.4","@emotion/react":"11.11.1","@telia-ace/knowledge-widget-core":"*","@telia-ace/widget-utilities":"*"},He={name:Fu,version:qu,main:Yu,types:Zu,exports:Ku,dependencies:Gu},Ju=async t=>{var f,p,g,v,y;const e=t.get("$widget");se.info((He==null?void 0:He.name)+" version: "+(He==null?void 0:He.version));const n=(y=(v=(g=(p=(f=e==null?void 0:e.container)==null?void 0:f.get("$settings"))==null?void 0:p.components)==null?void 0:g.conversation)==null?void 0:v.properties)==null?void 0:y.conversationalHubPluginSettings,r=await Tr.getInstance(t);let i,s,o=n!=null&&n.connectionAttempts?n.connectionAttempts:5;r.registerProvider("chub-plugin",(S,$)=>{i=S,s=i.createAgent({name:n==null?void 0:n.botName,avatar:n==null?void 0:n.avatar}),a(),$.actions.watch("conversation.action",(O,T)=>(l(O),T(O))),$.actions.watch("conversation.user-submit",(O,T)=>(u(O.text),T(O)))});async function a(S=!0){await c(n.baseUrl+"/initialize",`{"extension": "${n.extension}"}`,S)}async function l(S){await c(`${n.baseUrl}/input/${n.sessionId}`,`{"type":"button_click","language":"${n.language}","content":{"button_text":"${S.label}","value":"${S.actionKey}"}}`)}async function u(S){await c(`${n.baseUrl}/input/${n.sessionId}`,`{"type":"text","language":"${n.language}","content":{"text":"${S}"}}`)}async function c(S,$,O=!0){var P,_,z,W;const T=i.loading();let b,L;try{b=await fetch(S,{method:"POST",body:$}),L=await(b==null?void 0:b.json())}catch(F){F instanceof SyntaxError?se.error("Incorrect JSON format.",F):se.error("Network error: check connection or baseUrl.",F),T(),s.print(n.errorMessage);return}if(!(b!=null&&b.ok)){if(se.error(`HTTP ${b==null?void 0:b.status}.`,JSON.stringify(L)),T(),!!((P=L==null?void 0:L.errors)!=null&&P.filter(H=>H.code==="1003").length)&&o>0){o--,await new Promise(ne=>setTimeout(ne,500)),await a(!1);const H=JSON.parse($);(_=H==null?void 0:H.content)!=null&&_.text?await u(H.content.text):(z=H==null?void 0:H.content)!=null&&z.action&&await l((W=H==null?void 0:H.content)==null?void 0:W.action)}else s.print(n.errorMessage);return}T(),o=(n==null?void 0:n.connectionAttempts)??5,n.sessionId=L==null?void 0:L.session_id,O&&d(L)}function d(S){var $;S==null||S.agent_response.forEach(O=>{s.print(O.payload.text)}),($=S==null?void 0:S.prompt)!=null&&$.items&&s.print(["button-list",{actions:S.prompt.items.map(O=>{let T;return O.type==="button"&&(T={actionKey:O.value,label:O.text}),O.type==="link"&&(T={actionKey:O.value,label:O.text,data:{href:O.url,target:n!=null&&n.linkTarget?n.linkTarget:"_blank"}}),T})}])}};exports.ConversationalHubPlugin=Ju;
|
|
1095
|
+
${n}`:e.length?`${e} ${n}`:n}dispose(){this.subscriptions.forEach(e=>{e()})}}class zn{constructor(e,n){k(this,"id");k(this,"name");k(this,"avatar");k(this,"print",(e,n)=>{const r={name:this.name,avatar:this.avatar,id:this.id},i=nn(e,n);return this.provider.createEntry(i.key,i.content,tn.Agent,r,i.timestamp)});k(this,"typing",()=>this.provider.setTypingState({name:this.name,avatar:this.avatar}));this.provider=e,this.id=n.id||Xe(),this.name=n.name,this.avatar=n.avatar}update(e){var i;const{name:n,avatar:r}=e;r===null?this.avatar=void 0:r&&(this.avatar=r),n===null?this.name=void 0:n&&(this.name=n),(i=this.provider.controller)==null||i.events.dispatch("conversation:agent-updated",{agent:this})}}class Nr{constructor(e,n,r){k(this,"subscriptions",[]);k(this,"options");k(this,"user");this.name=e,this.container=n,this.controller=r,this.user=r==null?void 0:r.user,this.options={silent:!1}}static create(e,n,r){return new Nr(e,n,r)}createAgent(e={}){var n;if(this.controller){const r=this.controller.getAgentById(e.id),i=r?new zn(this,{...r,...e}):new zn(this,e);return r||(n=this.controller)==null||n.events.dispatch("conversation:agent-created",{agent:i}),i}}print(e){var n;return(n=this.controller)==null?void 0:n.print(e)}setTypingState(e,n){var r;return(r=this.controller)==null?void 0:r.setTypingState(e,n)}loading(){return this.controller?this.controller.loader():()=>()=>{}}createEntry(e,n,r,i,s){var o;return(o=this.controller)==null?void 0:o.createEntry(e,n,r,i,s)}dispose(){var e;process.env.NODE_ENV!=="production"&&console.log(`conversation-provider: dispose (${this.name})`),(e=this.controller)==null||e.disposeProvider(this),this.controller=null,this.subscriptions.forEach(n=>n())}isRehydrated(){var e;return((e=this.controller)==null?void 0:e.isRehydrated())||Promise.resolve(!1)}getHistory(){var e;return((e=this.controller)==null?void 0:e.getHistory())||[]}complete(){var e;(e=this.controller)==null||e.onCompleteProvider()}setOptions(e={silent:!1}){this.options=e}onUnreadMessage(e){var n;if(this.controller){const r=(n=this.controller)==null?void 0:n.onUnreadMessage(e);return this.subscriptions.push(r),()=>{r()}}}onMounted(e){var n;if(this.controller){const r=(n=this.controller)==null?void 0:n.events.subscribe("conversation:component-mount-changed",e);return this.subscriptions.push(r),e({},this.controller.getComponentMountedState()),()=>{r()}}}}const Hs=t=>`conversation-${t}`;class Mu{constructor(){k(this,"_locking",Promise.resolve());k(this,"_locks",0)}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const n=new Promise(i=>e=()=>{this._locks-=1,i()}),r=this._locking.then(()=>e);return this._locking=this._locking.then(()=>n),r}}class Iu{constructor(e,n,r){k(this,"sessionStorageKey");k(this,"locker",new Mu);k(this,"initialStoredAgents",[]);this.container=e,this.conversation=n,this.enabled=r,this.sessionStorageKey=Hs(n.id),n.onStarted(async()=>{if(n.messages.length>0)return;const{agents:i}=await this.read(),s=[];i&&i.forEach(a=>{const l=n.providerIndex(a.providerName),u=l>-1?n.registeredProviders[l]:n.createProvider(a.providerName),c=new zn(u,{name:a.name,avatar:a.avatar,id:a.id});s.push(c)});const{messages:o}=await this.read();o.forEach(a=>{switch(a.type){case"agent":{const l=s.find(u=>{var c;return u.id===((c=a.sender)==null?void 0:c.id)});l&&l.print(a.content.items||a.content,{key:a.key});return}case"user":{n.user.print(a.content.items||a.content,{key:a.key});return}case"system":default:n.print(a.content.items||a.content)}})}),n.onMessageCreated(async(i,s)=>{this.write(s.message,"messages")}),n.events.subscribe("conversation:agent-created",async(i,s)=>{const o={id:s.agent.id,name:s.agent.name,avatar:s.agent.avatar,providerName:s.agent.provider.name};await this.write(o,"agents")}),n.events.subscribe("conversation:agent-updated",async(i,s)=>{const{agents:o}=await this.read();await this.write([...o.map(a=>a.id===s.agent.id?{...a,name:s.agent.name,avatar:s.agent.avatar}:a)],"agents","update")})}setInitialData(e){this.initialStoredAgents=e.agents}async isRehydrated(){const{messages:e}=await this.read();return e.length>0}getStoredAgent(e){if(this.enabled)return this.initialStoredAgents.find(n=>n.id===e)}async write(e,n,r="add"){if(!this.enabled)return;const i=await this.locker.lock();return Ut(this.container,this.sessionStorageKey,he.Necessary).then(async s=>{if(r==="add"){const o=await this.read();if(n==="messages"&&o.messages.findIndex(l=>l.key===e.key)>-1){i();return}const a={...o};return n==="messages"?a.messages=[...a.messages,e]:n==="agents"&&(a.agents=[...a.agents,e]),s({...o,...a}).then(()=>{i()})}if(r==="update"&&n==="agents"){const o=await this.read();return s({...o,agents:e}).then(()=>{i()})}return s(e).then(()=>{i()})})}async read(){return Le(this.container,this.sessionStorageKey).then(e=>e||{messages:[],agents:[]})}}class Vu{constructor(e){k(this,"print",(e,n)=>{const r=nn(e,n);return this.controller.createEntry(r.key,r.content,tn.User,void 0,r.timestamp)});this.controller=e}}const Bn=async(t,e,n)=>{const r=await t.getAsync("conversation"),i=await t.getAsync("components"),s=r.controllers.find(o=>o.conversation.id===e);if(s){const o=[...s.conversation.providers];o.forEach(l=>{s.conversation.setProviderOptions(l,{silent:!0})}),s.conversation.queueProviders(o),s.conversation.setProviders([n]);const a=i.components().ofType("conversation");i.write({key:"setConversationProvider",attributes:{properties:{providers:[n]}},target:a,provider:"localStorage"})}};class Hu{constructor(e){this.writer=e}update(e){const n=this.getNormalizedSettings(e);this.writer(n)}remove(){this.writer(null)}getNormalizedSettings(e){return typeof e=="string"?{body:e}:e.length>-1&&typeof e=="object"?{items:e}:e}}var tn=(t=>(t.User="user",t.Agent="agent",t.System="system",t))(tn||{});const nn=(t,e)=>{let n,r=(e==null?void 0:e.key)||Xe(),i=Date.now();if(Array.isArray(t)&&t.length>-1)typeof t[0]=="string"?n={items:[t]}:n={items:t};else if(typeof t=="string")n={body:t};else if(t=t||{},t.type)n={...t};else{if(n={body:t.body,actions:t.actions,title:t.title},t.key&&(r=t.key),t.timestamp&&(i=t.timestamp),typeof t.form=="function"){const s=Me.create(r);t.form(s);const o=s.get();n.form=o}t.timestamp===null&&(i=null)}return{content:n,key:r,timestamp:i}},Ai=(t,e)=>{if(!e)return;const n=JSON.stringify(e),r=t.findIndex(i=>n===JSON.stringify(i));if(r>-1)return t.splice(r,1)};class zu{constructor(e,n,r){k(this,"formHandlers",{});k(this,"user",new Vu(this));k(this,"events");k(this,"providers",[]);k(this,"active",!1);k(this,"queuedProviders",[]);k(this,"registeredProviders",[]);k(this,"loaders",0);k(this,"componentMounted",!1);k(this,"store");k(this,"messages",[]);k(this,"typingActors",[]);k(this,"conversationHistory");k(this,"print",e=>{const n=nn(e);return this.createEntry(n.key,n.content,"system",void 0,n.timestamp)});this.container=e,this.id=n;const i=e.get("$widget");this.events=i.events.createChild(this),this.store=new Iu(e,this,r.rehydrate),this.conversationHistory=new Du(this)}setInitialStorage(e){this.store.setInitialData(e)}setProviders(e){const n=[],r=[];this.providers.reduce((i,s)=>(e.indexOf(s)===-1&&i.push(s),i),[]).forEach(i=>{const s=this.providers.indexOf(i);s>-1&&(n.push(i),this.providers.splice(s,1))}),e.forEach(i=>{this.providers.indexOf(i)===-1&&(r.push(i),this.providers.push(i))}),(r.length||n.length)&&this.events.dispatch("conversation:providers-changed",{added:r,removed:n})}createProvider(e){const n=this.providerIndex(e);if(n>-1)return this.registeredProviders[n];const r=Nr.create(e,this.container,this);return this.registeredProviders.push(r),r}providerIndex(e){return this.registeredProviders.findIndex(n=>n.name===e)}getAgentById(e){if(e)return this.store.getStoredAgent(e)}dispose(){this.conversationHistory.dispose(),this.registeredProviders.forEach(e=>e.dispose()),this.messages=[],this.events.dispatch("conversation:controller-disposed",this),this.active=!1}onDispose(e){return this.events.subscribe("conversation:controller-disposed",e)}onStarted(e){return this.events.subscribe("conversation:started",e)}onMessageCreated(e){return this.events.subscribe("conversation:message-created",e)}isRehydrated(){return this.store.isRehydrated()}disposeProvider(e){const n=this.providerIndex(e.name);n>-1&&this.registeredProviders.splice(n,1),this.events.dispatch("conversation:providers-changed",{removed:[e.name]}),this.registeredProviders.length||this.dispose()}onProvidersChange(e){return this.events.subscribe("conversation:providers-changed",e)}setComponentMountedState(e){this.componentMounted!==e&&(this.componentMounted=e,e&&(this.events.dispatch("conversation:unread-message",!1),this.events.dispatch("conversation:started",!0),this.active=!0),this.events.dispatch("conversation:component-mount-changed",e))}setProviderOptions(e,n){const r=this.providerIndex(e);r>-1&&this.registeredProviders[r].setOptions(n)}changeProvider(e){this.registeredProviders.find(r=>r.name===e)&&Bn(this.container,this.id,e)}queueProviders(e){this.queuedProviders=e}onCompleteProvider(){const e=this.queuedProviders.pop();e&&Bn(this.container,this.id,e)}getComponentMountedState(){return this.componentMounted}onUnreadMessage(e){return this.events.subscribe("conversation:unread-message",e)}createEntry(e,n,r,i,s){const o={key:e,content:n,type:r,sender:i||null,timestamp:s||s===null?s:Date.now()};this.messages.push(o),o.type==="agent"&&Ai(this.typingActors,i);const a=new Hu(l=>{if(l!==null){const{timestamp:u=void 0,...c}=l;o.content=c,u&&(o.timestamp=u)}else{const u=this.messages.indexOf(o);o.content=null,u>-1&&this.messages.splice(u,1)}this.events.dispatch("conversation:message-updated",{message:o}),this.update()});return this.events.dispatch("conversation:message-created",{message:o}),this.update(),this.componentMounted||this.events.dispatch("conversation:unread-message",!0),a}update(){this.events.dispatch("conversation:updated",{messages:this.messages,loading:this.loaders>0,typingActors:this.typingActors})}getMessageStream(){return{messages:this.messages,loading:this.loaders>0,typingActors:this.typingActors}}setTypingState(e,n){return this.typingActors.indexOf(e)===-1&&(this.typingActors.push(e),this.update()),()=>{Ai(this.typingActors,e),this.update()}}loader(){this.loaders=this.loaders+1;let e=!1;return this.loaders===1&&this.update(),()=>{e||(e=!0,this.loaders=this.loaders-1,this.loaders===0&&this.update())}}submitForm(e,n){this.formHandlers[e]={...this.formHandlers[e],submit:n}}validateForm(e,n){this.formHandlers[e]={...this.formHandlers[e],validate:n}}getHistory(){return this.conversationHistory.getConversationLogs()}}const _i=t=>{const{implementation:e}=t.get("$widget"),r=(e.container.get("modals")||[]).map(i=>i.close());return Promise.all(r)},Bu=(t,e)=>{const n=t.split("_contact");return e.widgets.get(n[0])},$r=t=>{const e=t.get("$widget"),{name:n,implementation:r}=t.get("$widget"),i=n.indexOf("_contact")>-1?Bu(n,r):e,{data:s}=t.get("$settings"),{trigger:o}=i.container.get("$settings"),a=`${n.replace("_contact-method","").replace("_contact","")}_contact-method`,l=r.widgets.get(a);return l&&!o?{chatWidget:l,mainWidget:i,data:s}:{mainWidget:i,data:s}},Wu=t=>{const{chatWidget:e}=$r(t);return!!e},Li=(t,e,n)=>{const{mainWidget:r,data:i,chatWidget:s}=$r(t);return s?s.state==="activated"?s.invoke("open").then(()=>{s.container.getAsync("conversation").then(o=>{o.navigateToConversationIfActive(e.id).then(()=>_i(t))})}):s.activate().then(()=>{const{trigger:o}=s.container.get("$settings");return o.action="hide",s.invoke("setSettings",()=>({data:i,trigger:o,activate:!0})).then(()=>s.container.getAsync("components").then(a=>{const l=a.components().ofType("contact-method");a.write({key:"setContactMethodId",attributes:{properties:{id:e.id,guideId:e.guideId}},target:l,provider:"localStorage"});const u=a.components().ofType("conversation");a.write({key:"setConversationProvider",attributes:{properties:{providers:[e.clientName]}},target:u,provider:"localStorage"})}))}).then(()=>s.invoke("attach",{key:"contact-method",triggerDOMElement:n,withRenderState:"open"})).then(()=>(Ut(s.container,"activeStickyWidget",he.Necessary,{medium:pe.Local,scope:Wt.Implementation}).then(o=>o(s.name)),s.container.getAsync("conversation").then(o=>{o.setConversationEndedBehavior(zt.Deactivate)}).then(()=>_i(t)).then(()=>!1))):(r.container.getAsync("conversation").then(o=>o.navigateToConversationIfActive(e.id).then(()=>o.setConversationEndedBehavior(zt.Navigate))),!s)},Uu=(t,e,n="conversation")=>{const{mainWidget:r,chatWidget:i}=$r(t);return i?i.container.getAsync("router").then(s=>{s.navigate(n,{id:e.id})}):r.container.getAsync("conversation").then(s=>{var o;(o=s.setConversationEndedBehavior(zt.Navigate))==null||o.then(()=>{r.container.getAsync("router").then(a=>{r.container.getAsync("components").then(l=>{const u=l.components().ofType("conversation");l.write({key:"setConversationProvider",attributes:{properties:{providers:[e.clientName]}},target:u,provider:"localStorage"})}).then(()=>{a.navigate(n,{id:e.id})})})})})},st="conversations";var zt=(t=>(t.Deactivate="deactivate",t.Navigate="navigate",t.None="none",t))(zt||{});class Tr{constructor(e,n){k(this,"events");k(this,"controllers",[]);k(this,"providers",[]);k(this,"disposeProviders",{});k(this,"subscriptions",[]);k(this,"storageWriter",null);k(this,"router",null);k(this,"buttonQuery",null);k(this,"sessionInfo",null);this.container=e,this.components=n;const r=e.get("$widget");this.events=r.events.createChild(this)}initialize(){Ut(this.container,st,he.Necessary,{medium:pe.Local}).then(e=>this.storageWriter=e),Le(this.container,st,pe.Local).then(e=>{this.buttonQuery=this.components.components().ofType("conversation-return-button"),e&&(this.sessionInfo=e,e.id&&e.route&&this.writeToComponents({active:!0,alert:{show:!1}}))}),this.container.getAsync("router").then(e=>this.router=e),this.events.subscribe("conversation:ended",(e,n)=>{var r,i,s;switch((r=this.sessionInfo)==null?void 0:r.conversationEndedBehavior){case"deactivate":this.container.get("$widget").deactivate();break;case"navigate":const a=(i=this.router)==null?void 0:i.getInitialRoute();a&&((s=this.router)==null||s.navigate(a.name));break}this.writeToComponents({active:!1}),this.sessionInfo=null,this.storageWriter&&this.storageWriter()})}addSubscription(e){this.subscriptions.push(e)}static getInstance(e,n="conversation"){return ht(e)(()=>e.getAsync(n).then(r=>{let i=r;return i||Hi.getInstance(e).then(s=>(i=new Tr(e,s),i.initialize(),e.registerAsync(n,()=>i),i))}))}navigateToConversationIfActive(e){return Le(this.container,st,pe.Local).then(n=>{var r;if(n&&n.id===e&&n.route){const{name:i,params:s}=n.route;(r=this.router)==null||r.navigate(i,s)}})}setConversationEndedBehavior(e){return Le(this.container,st,pe.Local).then(n=>{let r=n;return r?r.conversationEndedBehavior=e:r={conversationEndedBehavior:e},this.sessionInfo=r,this.storageWriter&&this.storageWriter(this.sessionInfo)||Promise.resolve()})}async createController(e,n){const r=Hs(e),{agents:i}=await Le(this.container,r)||{agents:[]},s=this.controllers.findIndex(a=>a.conversation.id===e);let o;return s>-1?o=this.controllers[s].conversation:o=new zu(this.container,e,n),o.setInitialStorage({agents:i||[]}),o}registerProvider(e,n){const r={name:e,handler:n};this.providers.push(r),this.controllers.filter(i=>i.conversation.providers.indexOf(e)>-1).forEach(i=>{this.invokeHandler(r,i)})}registerController(e,n){const r=this.controllers.findIndex(s=>s.conversation.id===e.id);let i;if(r<0){i={conversation:e,component:n},this.controllers.push(i);const s=o=>{o&&this.providers.filter(a=>o.indexOf(a.name)>-1).forEach(a=>{this.invokeHandler(a,i)})};return this.subscriptions.push(e.onDispose((o,a)=>{const l=this.controllers.findIndex(u=>u.conversation===a);l>-1&&this.controllers.splice(l,1),this.components.components().ofType("conversation-return-button").select().writeProperties({active:!1}),this.events.dispatch("conversation:ended",{},{bubbles:!0})})),this.subscriptions.push(e.onProvidersChange((o,a)=>{const{added:l,removed:u=[]}=a;u.forEach(c=>{(this.disposeProviders[c]||[]).forEach(d=>{d()})}),s(l)})),this.subscriptions.push(e.onStarted((o,a)=>{var u,c;const l={id:e.id,route:(u=this.router)==null?void 0:u.getRouteData(),conversationEndedBehavior:(c=this.sessionInfo)==null?void 0:c.conversationEndedBehavior};this.sessionInfo=l,this.storageWriter&&this.storageWriter(l),this.writeToComponents({active:a})})),this.subscriptions.push(e.onUnreadMessage((o,a)=>{this.events.dispatch("conversation:unread-message",a),this.writeToComponents({alert:{show:a}})})),s(e.providers),!0}return i=this.controllers[r],!1}writeToComponents(e,n="conversationReturnButtonState"){this.buttonQuery&&this.components.write({key:"conversationReturnButtonState",attributes:{properties:e},target:this.buttonQuery,provider:"localStorage"})}invokeHandler(e,n){const r=e.handler(n.conversation.createProvider(e.name),n.component);r&&(this.disposeProviders[e.name]||(this.disposeProviders[e.name]=[]),this.disposeProviders[e.name].push(r))}getComponentRoute(){return Le(this.container,st,pe.Local).then(e=>e==null?void 0:e.route)}dispose(){Object.keys(this.disposeProviders).forEach(e=>{this.disposeProviders[e].forEach(n=>{n()})}),this.subscriptions.forEach(e=>{e()}),this.controllers=[],this.providers=[]}static async handleContactMethodClick(e,n,r,i){if(Wu(n)){e.preventDefault();let s=document.getElementById("humany-dynamic-anchor");s||(s=document.createElement("a"),s.setAttribute("href","#"),s.id="humany-dynamic-anchor",document.body.appendChild(s)),Li(n,r,s)}Li(n,r)}static async handleContactMethodSubmit(e,n){var r,i;return(i=(r=n==null?void 0:n.body.form.meta)==null?void 0:r.conversation)!=null&&i.id?Bn(e,n.body.form.meta.conversation.id,n.clientName):Uu(e,n)}}const Fu="@telia-ace/conversational-hub-bot-provider",qu="0.0.6",Yu="./index.js",Zu="./index.d.ts",Ku={".":{import:"./index.mjs",require:"./index.js"}},Gu={"@telia-ace/widget-conversation":"*","@webprovisions/platform":"^1.1.4","@emotion/react":"11.11.1","@telia-ace/knowledge-widget-core":"*","@telia-ace/widget-utilities":"*"},He={name:Fu,version:qu,main:Yu,types:Zu,exports:Ku,dependencies:Gu},Ju=async t=>{var f,p,g,v,y;const e=t.get("$widget");se.info((He==null?void 0:He.name)+" version: "+(He==null?void 0:He.version));const n=(y=(v=(g=(p=(f=e==null?void 0:e.container)==null?void 0:f.get("$settings"))==null?void 0:p.components)==null?void 0:g.conversation)==null?void 0:v.properties)==null?void 0:y.conversationalHubPluginSettings,r=await Tr.getInstance(t);let i,s,o=(n==null?void 0:n.connectionAttempts)??5;r.registerProvider("chub-plugin",(S,$)=>{i=S,s=i.createAgent({name:n==null?void 0:n.botName,avatar:n==null?void 0:n.avatar}),a(),$.actions.watch("conversation.action",(O,T)=>(l(O),T(O))),$.actions.watch("conversation.user-submit",(O,T)=>(u(O.text),T(O)))});async function a(S=!0){await c(n.baseUrl+"/initialize",`{"extension": "${n.extension}"}`,S)}async function l(S){await c(`${n.baseUrl}/input/${n.sessionId}`,`{"type":"button_click","language":"${n.language}","content":{"button_text":"${S.label}","value":"${S.actionKey}"}}`)}async function u(S){await c(`${n.baseUrl}/input/${n.sessionId}`,`{"type":"text","language":"${n.language}","content":{"text":"${S}"}}`)}async function c(S,$,O=!0){var P,_,z,W;const T=i.loading();let b,L;try{b=await fetch(S,{method:"POST",body:$}),L=await(b==null?void 0:b.json())}catch(F){F instanceof SyntaxError?se.error("Incorrect JSON format.",F):se.error("Network error: check connection or baseUrl.",F),T(),s.print(n.errorMessage);return}if(!(b!=null&&b.ok)){if(se.error(`HTTP ${b==null?void 0:b.status}.`,JSON.stringify(L)),T(),!!((P=L==null?void 0:L.errors)!=null&&P.filter(H=>H.code==="1003").length)&&o>0){o--,await new Promise(ne=>setTimeout(ne,500)),await a(!1);const H=JSON.parse($);(_=H==null?void 0:H.content)!=null&&_.text?await u(H.content.text):(z=H==null?void 0:H.content)!=null&&z.action&&await l((W=H==null?void 0:H.content)==null?void 0:W.action)}else s.print(n.errorMessage);return}T(),o=(n==null?void 0:n.connectionAttempts)??5,n.sessionId=L==null?void 0:L.session_id,O&&d(L)}function d(S){var $;S==null||S.agent_response.forEach(O=>{s.print(O.payload.text)}),($=S==null?void 0:S.prompt)!=null&&$.items&&s.print(["button-list",{actions:S.prompt.items.map(O=>{let T;return O.type==="button"&&(T={actionKey:O.value,label:O.text}),O.type==="link"&&(T={actionKey:O.value,label:O.text,data:{href:O.url,target:(n==null?void 0:n.linkTarget)??"_blank"}}),T})}])}};exports.ConversationalHubPlugin=Ju;
|
package/index.mjs
CHANGED
|
@@ -9821,7 +9821,7 @@ class Hr {
|
|
|
9821
9821
|
) : td(e, n);
|
|
9822
9822
|
}
|
|
9823
9823
|
}
|
|
9824
|
-
const nd = "@telia-ace/conversational-hub-bot-provider", rd = "0.0.
|
|
9824
|
+
const nd = "@telia-ace/conversational-hub-bot-provider", rd = "0.0.6", id = "./index.js", od = "./index.d.ts", sd = {
|
|
9825
9825
|
".": {
|
|
9826
9826
|
import: "./index.mjs",
|
|
9827
9827
|
require: "./index.js"
|
|
@@ -9846,7 +9846,7 @@ const nd = "@telia-ace/conversational-hub-bot-provider", rd = "0.0.5", id = "./i
|
|
|
9846
9846
|
const n = (g = (p = (v = (h = (f = e == null ? void 0 : e.container) == null ? void 0 : f.get("$settings")) == null ? void 0 : h.components) == null ? void 0 : v.conversation) == null ? void 0 : p.properties) == null ? void 0 : g.conversationalHubPluginSettings, r = await Hr.getInstance(
|
|
9847
9847
|
t
|
|
9848
9848
|
);
|
|
9849
|
-
let i, o, s = n
|
|
9849
|
+
let i, o, s = (n == null ? void 0 : n.connectionAttempts) ?? 5;
|
|
9850
9850
|
r.registerProvider(
|
|
9851
9851
|
"chub-plugin",
|
|
9852
9852
|
(C, O) => {
|
|
@@ -9915,7 +9915,7 @@ const nd = "@telia-ace/conversational-hub-bot-provider", rd = "0.0.5", id = "./i
|
|
|
9915
9915
|
label: k.text,
|
|
9916
9916
|
data: {
|
|
9917
9917
|
href: k.url,
|
|
9918
|
-
target: n
|
|
9918
|
+
target: (n == null ? void 0 : n.linkTarget) ?? "_blank"
|
|
9919
9919
|
}
|
|
9920
9920
|
}), $;
|
|
9921
9921
|
})
|