@telia-ace/widget-conversation 1.0.29-next.4 → 1.0.29-next.5

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/README.md CHANGED
@@ -394,3 +394,32 @@ component.actions.watch('conversation.action', (input, next) => {
394
394
  }
395
395
  });
396
396
  ```
397
+
398
+ ## Completing a conversation (handover)
399
+
400
+ When you are handing over the conversation to another provider, the current provider is disabled until the child provider has completed. To hand it over to the previous provider you should use the `complete()` method on the `ConversationProvider` object.
401
+
402
+ Example:
403
+
404
+ ```ts
405
+ if (actionKey === 'email-confirmation-submit') {
406
+ conversation.complete();
407
+ }
408
+ ```
409
+
410
+ This will complete the current provider and return to the one that started the now closed provider.
411
+
412
+ ## Rehydrating the conversation
413
+
414
+ The conversation may be stored in a session to allow it to remain when reloading the page.
415
+ This behavior is disabled by default but can be turned on by adding the `rehydrate` property to the `ConversationComponent` like this:
416
+
417
+ ```
418
+ "components": {
419
+ "type": "conversation",
420
+ "properties": {
421
+ "rehydrate": true
422
+ }
423
+ }
424
+
425
+ ```
package/dist/agent.d.ts CHANGED
@@ -3,15 +3,19 @@ import { ConversationEntry } from './conversation-controller';
3
3
  import { ConversationProvider } from './conversation-provider';
4
4
  import { ConversationMessageSettings, ConverstationMessageItem } from './types';
5
5
  export declare type AgentSettings = {
6
+ id?: string;
6
7
  name?: string;
7
8
  avatar?: string | Symbol;
8
9
  };
9
10
  export declare class Agent {
10
11
  private provider;
12
+ id: string;
11
13
  name?: string;
12
14
  avatar?: string | Symbol;
13
15
  constructor(provider: ConversationProvider, settings: AgentSettings);
14
- print: (settings: string | ConversationMessageSettings | ConverstationMessageItem<any> | ConverstationMessageItem<any>[]) => ConversationEntry | undefined;
16
+ print: (settings: string | ConversationMessageSettings | ConverstationMessageItem<any> | ConverstationMessageItem<any>[], options?: {
17
+ key?: string;
18
+ }) => ConversationEntry | undefined;
15
19
  typing: () => (() => void) | undefined;
16
20
  update(settings: AgentSettings): void;
17
21
  }
@@ -29,9 +29,11 @@ export declare type ConversationComponentProperties = {
29
29
  inputDisabled: boolean;
30
30
  inputHidden: boolean;
31
31
  inputMultiline: boolean;
32
+ rehydrate?: boolean;
32
33
  userLabel: string;
33
34
  avatarSize: string;
34
35
  typingActors: any[];
36
+ conversationControllerId?: string;
35
37
  sendButtonLabel: string;
36
38
  secondaryAction?: {
37
39
  icon?: string;
@@ -1,4 +1,5 @@
1
1
  import { Container, EventListener, EventManager } from '@webprovisions/platform';
2
+ import { AgentSettings } from './agent';
2
3
  import { ConversationProvider } from './conversation-provider';
3
4
  import { ConversationMessageContent, ConversationMessageSender, ConversationMessageSettings, ConversationMessageUpdateSettings, ConverstationMessageItem, NormalizedMessageSettings } from './types';
4
5
  import { User } from './user';
@@ -8,6 +9,9 @@ export declare type ValidateHandler = (formValues: {
8
9
  export declare type SubmitHandler = (formValues: {
9
10
  [key: string]: any;
10
11
  }) => Promise<any>;
12
+ export declare type ConversationOptions = {
13
+ silent: boolean;
14
+ };
11
15
  export declare type Print = (content: string | ConversationMessageContent) => ConversationEntry;
12
16
  export declare type FormHandlers = {
13
17
  [key: string]: FormHandler;
@@ -37,7 +41,9 @@ export declare type ConversationMessage = {
37
41
  type: ConversationMessageType;
38
42
  };
39
43
  export declare type EntryWriter = (content: ConversationMessageUpdateSettings | null) => void;
40
- export declare const getNormalizedMessageSettings: (settings: string | ConversationMessageSettings | ConverstationMessageItem<any> | ConverstationMessageItem<any>[]) => NormalizedMessageSettings;
44
+ export declare const getNormalizedMessageSettings: (settings: string | ConversationMessageSettings | ConverstationMessageItem<any> | ConverstationMessageItem<any>[], options?: {
45
+ key?: string | undefined;
46
+ } | undefined) => NormalizedMessageSettings;
41
47
  /**
42
48
  * Manages the stream of messages inside a `ConversationComponent` and provides external read-write
43
49
  * access to it as well as exposing emitted actions.
@@ -53,21 +59,40 @@ export declare class ConversationController {
53
59
  events: EventManager;
54
60
  providers: string[];
55
61
  active: boolean;
56
- private registeredProviders;
62
+ queuedProviders: string[];
63
+ registeredProviders: ConversationProvider[];
57
64
  private loaders;
58
65
  private componentMounted;
66
+ private store;
59
67
  messages: ConversationMessage[];
60
68
  private typingActors;
61
- constructor(container: Container, id: string);
69
+ constructor(container: Container, id: string, options: {
70
+ rehydrate: boolean;
71
+ });
72
+ setInitialStorage(data: {
73
+ agents: AgentSettings[];
74
+ }): void;
62
75
  setProviders(providers: string[]): void;
63
76
  createProvider(name: string): ConversationProvider;
64
77
  providerIndex(name: string): number;
78
+ getAgentById(id?: string): {
79
+ id: string;
80
+ name: string;
81
+ avatar?: string | undefined;
82
+ providerName: string;
83
+ } | undefined;
65
84
  dispose(): void;
66
85
  onDispose(fn: EventListener): import("@webprovisions/platform").EventSubscriptionCancellation;
67
86
  onStarted(fn: EventListener): import("@webprovisions/platform").EventSubscriptionCancellation;
87
+ onMessageCreated(fn: EventListener): import("@webprovisions/platform").EventSubscriptionCancellation;
88
+ isRehydrated(): Promise<boolean>;
68
89
  disposeProvider(target: ConversationProvider): void;
69
90
  onProvidersChange(fn: EventListener): import("@webprovisions/platform").EventSubscriptionCancellation;
70
91
  setComponentMountedState(mounted: boolean): void;
92
+ setProviderOptions(providerName: string, options: ConversationOptions): void;
93
+ changeProvider(providerName: string): void;
94
+ queueProviders(providers: string[]): void;
95
+ onCompleteProvider(): void;
71
96
  getComponentMountedState(): boolean;
72
97
  onUnreadMessage(fn: EventListener): import("@webprovisions/platform").EventSubscriptionCancellation;
73
98
  createEntry(key: string, content: ConversationMessageContent, type: ConversationMessageType, sender?: ConversationMessageSender, timestamp?: number | null): ConversationEntry;
@@ -23,7 +23,10 @@ export declare class ConversationPlatform {
23
23
  private container;
24
24
  private components;
25
25
  events: EventManager;
26
- private controllers;
26
+ controllers: {
27
+ conversation: ConversationController;
28
+ component: ComponentNodeController;
29
+ }[];
27
30
  private providers;
28
31
  private disposeProviders;
29
32
  private subscriptions;
@@ -37,7 +40,9 @@ export declare class ConversationPlatform {
37
40
  static getInstance(container: Container, key?: string): Promise<ConversationPlatform>;
38
41
  navigateToConversationIfActive(id: string): Promise<void>;
39
42
  setConversationEndedBehavior(behavior: ConversationEndedBehavior): Promise<void>;
40
- createController(id: string): ConversationController;
43
+ createController(id: string, options: {
44
+ rehydrate: boolean;
45
+ }): Promise<ConversationController>;
41
46
  registerProvider(name: string, handler: ConversationHandler): void;
42
47
  registerController(conversation: ConversationController, component: ComponentNodeController): boolean;
43
48
  private writeToComponents;
@@ -1,12 +1,13 @@
1
1
  import { Container, EventListener, EventSubscriptionCancellation } from '@webprovisions/platform';
2
2
  import { Agent, AgentSettings } from './agent';
3
- import { CancelLoaderDelegate, ConversationController, ConversationEntry, ConversationMessageType } from './conversation-controller';
3
+ import { CancelLoaderDelegate, ConversationController, ConversationEntry, ConversationMessageType, ConversationOptions } from './conversation-controller';
4
4
  import { ConversationMessageContent, ConversationMessageSender, ConversationMessageSettings } from './types';
5
5
  export declare class ConversationProvider {
6
6
  name: string;
7
7
  private container;
8
8
  controller: ConversationController | null;
9
9
  private subscriptions;
10
+ options: ConversationOptions;
10
11
  user: any;
11
12
  private constructor();
12
13
  static create(name: string, container: Container, controller: ConversationController): ConversationProvider;
@@ -16,6 +17,9 @@ export declare class ConversationProvider {
16
17
  loading(): CancelLoaderDelegate;
17
18
  createEntry(key: string, content: ConversationMessageContent, type: ConversationMessageType, sender?: ConversationMessageSender, timestamp?: number | null): ConversationEntry | undefined;
18
19
  dispose(): void;
20
+ isRehydrated(): Promise<boolean>;
21
+ complete(): void;
22
+ setOptions(options?: ConversationOptions): void;
19
23
  onUnreadMessage(fn: EventListener): EventSubscriptionCancellation | void;
20
24
  onMounted(fn: EventListener): EventSubscriptionCancellation | void;
21
25
  }