diff --git a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.emit.md b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.emit.md index bc2c8dc..9eba5b1 100644 --- a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.emit.md +++ b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.emit.md @@ -4,7 +4,7 @@ ## ChatCoreAwsConnect.emit() method -Emit an event into the AWS Connect chat session. Supported events are: - `typing`: The customer is typing. +Emit an event into the Amazon Connect chat session. Supported events are: - `typing`: The customer is typing. **Signature:** diff --git a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.getsession.md b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.getsession.md index 9367a9c..3df4324 100644 --- a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.getsession.md +++ b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.getsession.md @@ -4,7 +4,7 @@ ## ChatCoreAwsConnect.getSession() method -Get the current AWS Connect chat session. +Get the current Amazon Connect chat session. **Signature:** diff --git a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.init.md b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.init.md index 3bed370..e7180a6 100644 --- a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.init.md +++ b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.init.md @@ -4,7 +4,7 @@ ## ChatCoreAwsConnect.init() method -Initialize the AWS Connect chat session using the credentials from the Chat API. +Initialize the Amazon Connect chat session using the credentials from the Chat API. **Signature:** diff --git a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.md b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.md index 6eebfd9..3858a0b 100644 --- a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.md +++ b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.md @@ -4,7 +4,7 @@ ## ChatCoreAwsConnect interface -Provides methods for interacting with Chat's AWS Connect integration. +Provides methods for interacting with Chat's Amazon Connect integration. **Signature:** @@ -16,9 +16,10 @@ export interface ChatCoreAwsConnect | Method | Description | | --- | --- | -| [emit(eventName, data)](./chat-core-aws-connect.chatcoreawsconnect.emit.md) | Emit an event into the AWS Connect chat session. Supported events are: - typing: The customer is typing. | -| [getSession()](./chat-core-aws-connect.chatcoreawsconnect.getsession.md) | Get the current AWS Connect chat session. | -| [init(messageResponse)](./chat-core-aws-connect.chatcoreawsconnect.init.md) | Initialize the AWS Connect chat session using the credentials from the Chat API. | -| [on(eventName, cb)](./chat-core-aws-connect.chatcoreawsconnect.on.md) | Register a callback for an event triggered within the AWS Connect chat session. Supported events are: - message: A new message has been received. - typing: The agent is typing. - close: The chat session has been closed. | +| [emit(eventName, data)](./chat-core-aws-connect.chatcoreawsconnect.emit.md) | Emit an event into the Amazon Connect chat session. Supported events are: - typing: The customer is typing. | +| [getSession()](./chat-core-aws-connect.chatcoreawsconnect.getsession.md) | Get the current Amazon Connect chat session. | +| [init(messageResponse)](./chat-core-aws-connect.chatcoreawsconnect.init.md) | Initialize the Amazon Connect chat session using the credentials from the Chat API. | +| [on(eventName, cb)](./chat-core-aws-connect.chatcoreawsconnect.on.md) | Register a callback for an event triggered within the Amazon Connect chat session. Supported events are: - message: A new message has been received. - typing: The agent is typing. - close: The chat session has been closed. | | [processMessage(request)](./chat-core-aws-connect.chatcoreawsconnect.processmessage.md) | Process a message sent by the user. | +| [resetSession()](./chat-core-aws-connect.chatcoreawsconnect.resetsession.md) | Resets the [ChatCoreAwsConnect](./chat-core-aws-connect.chatcoreawsconnect.md) instance, clearing the underlying Amazon Connect session. | diff --git a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.on.md b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.on.md index 539f469..292778a 100644 --- a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.on.md +++ b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.on.md @@ -4,7 +4,7 @@ ## ChatCoreAwsConnect.on() method -Register a callback for an event triggered within the AWS Connect chat session. Supported events are: - `message`: A new message has been received. - `typing`: The agent is typing. - `close`: The chat session has been closed. +Register a callback for an event triggered within the Amazon Connect chat session. Supported events are: - `message`: A new message has been received. - `typing`: The agent is typing. - `close`: The chat session has been closed. **Signature:** diff --git a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.resetsession.md b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.resetsession.md new file mode 100644 index 0000000..f19e739 --- /dev/null +++ b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.chatcoreawsconnect.resetsession.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [@yext/chat-core-aws-connect](./chat-core-aws-connect.md) > [ChatCoreAwsConnect](./chat-core-aws-connect.chatcoreawsconnect.md) > [resetSession](./chat-core-aws-connect.chatcoreawsconnect.resetsession.md) + +## ChatCoreAwsConnect.resetSession() method + +Resets the [ChatCoreAwsConnect](./chat-core-aws-connect.chatcoreawsconnect.md) instance, clearing the underlying Amazon Connect session. + +**Signature:** + +```typescript +resetSession(): void; +``` +**Returns:** + +void + diff --git a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.md b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.md index b69f991..c8fc0f6 100644 --- a/packages/chat-core-aws-connect/docs/chat-core-aws-connect.md +++ b/packages/chat-core-aws-connect/docs/chat-core-aws-connect.md @@ -15,7 +15,7 @@ | Interface | Description | | --- | --- | | [AwsConnectEventData](./chat-core-aws-connect.awsconnecteventdata.md) | Data associated with an AWS Connect event. | -| [ChatCoreAwsConnect](./chat-core-aws-connect.chatcoreawsconnect.md) | Provides methods for interacting with Chat's AWS Connect integration. | +| [ChatCoreAwsConnect](./chat-core-aws-connect.chatcoreawsconnect.md) | Provides methods for interacting with Chat's Amazon Connect integration. | | [ChatCoreAwsConnectConfig](./chat-core-aws-connect.chatcoreawsconnectconfig.md) | Configuration for this instance of the [ChatCoreAwsConnect](./chat-core-aws-connect.chatcoreawsconnect.md). | | [LoggerConfig](./chat-core-aws-connect.loggerconfig.md) | Configuration for the internal logger of the AWS Connect Chat session. | diff --git a/packages/chat-core-aws-connect/etc/chat-core-aws-connect.api.md b/packages/chat-core-aws-connect/etc/chat-core-aws-connect.api.md index f566fbe..e03b3f8 100644 --- a/packages/chat-core-aws-connect/etc/chat-core-aws-connect.api.md +++ b/packages/chat-core-aws-connect/etc/chat-core-aws-connect.api.md @@ -27,6 +27,7 @@ export interface ChatCoreAwsConnect { init(messageResponse: MessageResponse): Promise; on(eventName: T, cb: EventCallback): void; processMessage(request: MessageRequest): Promise; + resetSession(): void; } // @public diff --git a/packages/chat-core-aws-connect/src/infra/ChatCoreAwsConnectImpl.ts b/packages/chat-core-aws-connect/src/infra/ChatCoreAwsConnectImpl.ts index e6be1c1..ab82f4b 100644 --- a/packages/chat-core-aws-connect/src/infra/ChatCoreAwsConnectImpl.ts +++ b/packages/chat-core-aws-connect/src/infra/ChatCoreAwsConnectImpl.ts @@ -97,7 +97,7 @@ export class ChatCoreAwsConnectImpl implements ChatCoreAwsConnect { this.session?.onEnded((event: AwsConnectEvent) => { this.eventListeners["close"]?.forEach((cb) => cb(event.data)); // Connection is closed. Clear session and create new one on next handoff request. - this.session = undefined; + this.resetSession(); }); } @@ -130,4 +130,14 @@ export class ChatCoreAwsConnectImpl implements ChatCoreAwsConnect { getSession(): connect.ActiveChatSession | undefined { return this.session; } + + resetSession(): void { + if (this.session === undefined) { + return; + } + + const customerSession = this.session as connect.ActiveCustomerChatSession; + customerSession.disconnectParticipant(); + this.session = undefined; + } } diff --git a/packages/chat-core-aws-connect/src/models/ChatCoreAwsConnect.ts b/packages/chat-core-aws-connect/src/models/ChatCoreAwsConnect.ts index b8c8bed..465890e 100644 --- a/packages/chat-core-aws-connect/src/models/ChatCoreAwsConnect.ts +++ b/packages/chat-core-aws-connect/src/models/ChatCoreAwsConnect.ts @@ -2,20 +2,20 @@ import { MessageRequest, MessageResponse } from "@yext/chat-core"; import { EventCallback, EventMap } from "./EventCallback"; /** - * Provides methods for interacting with Chat's AWS Connect integration. + * Provides methods for interacting with Chat's Amazon Connect integration. * * @public */ export interface ChatCoreAwsConnect { /** - * Initialize the AWS Connect chat session using the credentials from the Chat API. + * Initialize the Amazon Connect chat session using the credentials from the Chat API. * * @param messageResponse - The response returned from a successful call to the Chat API. */ init(messageResponse: MessageResponse): Promise; /** - * Register a callback for an event triggered within the AWS Connect chat session. + * Register a callback for an event triggered within the Amazon Connect chat session. * Supported events are: * - `message`: A new message has been received. * - `typing`: The agent is typing. @@ -27,7 +27,7 @@ export interface ChatCoreAwsConnect { on(eventName: T, cb: EventCallback): void; /** - * Emit an event into the AWS Connect chat session. + * Emit an event into the Amazon Connect chat session. * Supported events are: * - `typing`: The customer is typing. * @@ -44,10 +44,15 @@ export interface ChatCoreAwsConnect { processMessage(request: MessageRequest): Promise; /** - * Get the current AWS Connect chat session. + * Get the current Amazon Connect chat session. * * @remarks * If the session is not initialized, this method will return `undefined`. */ getSession(): connect.ActiveChatSession | undefined; + + /** + * Resets the {@link ChatCoreAwsConnect} instance, clearing the underlying Amazon Connect session. + */ + resetSession(): void; } diff --git a/packages/chat-core-aws-connect/src/models/connect.d.ts b/packages/chat-core-aws-connect/src/models/connect.d.ts index d066e4c..c96fb8f 100644 --- a/packages/chat-core-aws-connect/src/models/connect.d.ts +++ b/packages/chat-core-aws-connect/src/models/connect.d.ts @@ -5,6 +5,7 @@ declare global { const ChatSession: typeof AwsChatSession; const LogLevel: typeof AwsChatSession.LogLevel; export type ActiveChatSession = ReturnType; + export type ActiveCustomerChatSession = Extract; export type Logger = typeof AwsChatSession.Logger; } } \ No newline at end of file diff --git a/packages/chat-core-aws-connect/test-browser-esm/index.html b/packages/chat-core-aws-connect/test-browser-esm/index.html index c94fe89..0a55761 100644 --- a/packages/chat-core-aws-connect/test-browser-esm/index.html +++ b/packages/chat-core-aws-connect/test-browser-esm/index.html @@ -13,5 +13,6 @@ />

    + diff --git a/packages/chat-core-aws-connect/test-browser-esm/src/script.js b/packages/chat-core-aws-connect/test-browser-esm/src/script.js index f9df42d..ba7a3cc 100644 --- a/packages/chat-core-aws-connect/test-browser-esm/src/script.js +++ b/packages/chat-core-aws-connect/test-browser-esm/src/script.js @@ -12,6 +12,11 @@ let chatCore = provideChatCore({ }); let coreAws = provideChatCoreAwsConnect(); + +window.resetSession = () => { + coreAws.resetSession(); +}; + const msgInput = document.getElementById("messageInput"); window.getNextMessage = async () => { const req = { diff --git a/packages/chat-core-aws-connect/tests/ChatCoreAwsConnect.test.ts b/packages/chat-core-aws-connect/tests/ChatCoreAwsConnect.test.ts index b8e2b54..1eebc6b 100644 --- a/packages/chat-core-aws-connect/tests/ChatCoreAwsConnect.test.ts +++ b/packages/chat-core-aws-connect/tests/ChatCoreAwsConnect.test.ts @@ -53,6 +53,9 @@ function mockChatSession(): connect.ActiveChatSession { connect() { return { connectCalled: true, connectSuccess: true }; }, + disconnectParticipant() { + return null; + }, } as unknown as connect.ActiveChatSession; } @@ -369,3 +372,20 @@ it("clear session on close event", async () => { onEndedFn({}); expect(chatCoreAwsConnect.getSession()).toBeUndefined(); }); + +it("clears session on resetSession", async () => { + const chatCoreAwsConnect = provideChatCoreAwsConnect(); + await chatCoreAwsConnect.init(mockMessageResponse()); + expect(chatCoreAwsConnect.getSession()).toBeDefined(); + + chatCoreAwsConnect.resetSession(); + expect(chatCoreAwsConnect.getSession()).toBeUndefined(); +}); + +it("noops when clearing undefined session", async () => { + const chatCoreAwsConnect = provideChatCoreAwsConnect(); + expect(chatCoreAwsConnect.getSession()).toBeUndefined(); + + chatCoreAwsConnect.resetSession(); + expect(chatCoreAwsConnect.getSession()).toBeUndefined(); +});