diff --git a/packages/chat-core-aws-connect/THIRD-PARTY-NOTICES b/packages/chat-core-aws-connect/THIRD-PARTY-NOTICES
index 30fcf88..c96dc7e 100644
--- a/packages/chat-core-aws-connect/THIRD-PARTY-NOTICES
+++ b/packages/chat-core-aws-connect/THIRD-PARTY-NOTICES
@@ -195,7 +195,7 @@ The following NPM packages may be included in this product:
- @types/istanbul-lib-report@3.0.3
- @types/istanbul-reports@3.0.4
- @types/jsdom@20.0.1
- - @types/node@22.5.5
+ - @types/node@22.6.1
- @types/stack-utils@2.0.3
- @types/tough-cookie@4.0.5
- @types/yargs-parser@21.0.3
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 3858a0b..4bcb316 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
@@ -21,5 +21,6 @@ export interface ChatCoreAwsConnect
| [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. |
+| [reinitializeSession(\_)](./chat-core-aws-connect.chatcoreawsconnect.reinitializesession.md) | Reinitialize the session using existing session data. |
| [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/etc/chat-core-aws-connect.api.md b/packages/chat-core-aws-connect/etc/chat-core-aws-connect.api.md
index e03b3f8..863fe0e 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;
+ reinitializeSession(_: unknown): Promise;
resetSession(): void;
}
diff --git a/packages/chat-core-aws-connect/src/infra/ChatCoreAwsConnectImpl.ts b/packages/chat-core-aws-connect/src/infra/ChatCoreAwsConnectImpl.ts
index 37cdf82..ed35b30 100644
--- a/packages/chat-core-aws-connect/src/infra/ChatCoreAwsConnectImpl.ts
+++ b/packages/chat-core-aws-connect/src/infra/ChatCoreAwsConnectImpl.ts
@@ -145,4 +145,10 @@ export class ChatCoreAwsConnectImpl implements ChatCoreAwsConnect {
this.session.disconnectParticipant();
this.session = undefined;
}
+
+ async reinitializeSession(_: unknown): Promise {
+ console.warn(
+ "Reinitializing chat session is currently not supported for AWS Connect"
+ );
+ }
}
diff --git a/packages/chat-core-aws-connect/src/models/ChatCoreAwsConnect.ts b/packages/chat-core-aws-connect/src/models/ChatCoreAwsConnect.ts
index 465890e..ba15a65 100644
--- a/packages/chat-core-aws-connect/src/models/ChatCoreAwsConnect.ts
+++ b/packages/chat-core-aws-connect/src/models/ChatCoreAwsConnect.ts
@@ -55,4 +55,14 @@ export interface ChatCoreAwsConnect {
* Resets the {@link ChatCoreAwsConnect} instance, clearing the underlying Amazon Connect session.
*/
resetSession(): void;
+
+ /**
+ * Reinitialize the session using existing session data.
+ *
+ * @param credentials - The credentials to use to reinitialize the session.
+ *
+ * @remarks
+ * This is currently not supported for Amazon Connect.
+ */
+ reinitializeSession(_: unknown): Promise;
}
diff --git a/packages/chat-core-zendesk/docs/chat-core-zendesk.chatcorezendesk.md b/packages/chat-core-zendesk/docs/chat-core-zendesk.chatcorezendesk.md
index 5edf192..3c852f8 100644
--- a/packages/chat-core-zendesk/docs/chat-core-zendesk.chatcorezendesk.md
+++ b/packages/chat-core-zendesk/docs/chat-core-zendesk.chatcorezendesk.md
@@ -21,5 +21,6 @@ export interface ChatCoreZendesk
| [init(messageResponse)](./chat-core-zendesk.chatcorezendesk.init.md) | Initialize the Amazon Connect chat session using the credentials from the Chat API. |
| [on(eventName, cb)](./chat-core-zendesk.chatcorezendesk.on.md) | Register a callback for an event triggered within the Zendesk chat session. Supported events are: - message
: A new message has been received. - typing
: The agent is typing. - close
: The chat session has been closed (e.g. agent left or closed the ticket). |
| [processMessage(request)](./chat-core-zendesk.chatcorezendesk.processmessage.md) | Process a message sent by the user. |
+| [reinitializeSession(credentials)](./chat-core-zendesk.chatcorezendesk.reinitializesession.md) | Reinitialize the session using existing session data. |
| [resetSession()](./chat-core-zendesk.chatcorezendesk.resetsession.md) | Reset the chat session by clearing the current conversation ID. |
diff --git a/packages/chat-core-zendesk/etc/chat-core-zendesk.api.md b/packages/chat-core-zendesk/etc/chat-core-zendesk.api.md
index c476ef7..012e1cc 100644
--- a/packages/chat-core-zendesk/etc/chat-core-zendesk.api.md
+++ b/packages/chat-core-zendesk/etc/chat-core-zendesk.api.md
@@ -18,6 +18,7 @@ export interface ChatCoreZendesk {
// Warning: (ae-forgotten-export) The symbol "EventCallback" needs to be exported by the entry point index.d.ts
on(eventName: T, cb: EventCallback): void;
processMessage(request: MessageRequest): Promise;
+ reinitializeSession(credentials: string): Promise;
resetSession(): void;
}
diff --git a/packages/chat-core-zendesk/src/infra/ChatCoreZendeskImpl.ts b/packages/chat-core-zendesk/src/infra/ChatCoreZendeskImpl.ts
index 9a52750..9154c2a 100644
--- a/packages/chat-core-zendesk/src/infra/ChatCoreZendeskImpl.ts
+++ b/packages/chat-core-zendesk/src/infra/ChatCoreZendeskImpl.ts
@@ -63,7 +63,12 @@ export class ChatCoreZendeskImpl {
* mode on the first invocation. Subsequent calls to this method will create a
* new conversation session.
*/
- async init(messageRsp: MessageResponse): Promise {
+ async init(messageRsp: MessageResponse): Promise {
+ await this.initializeZendeskSdk();
+ return await this.createZendeskConversation(messageRsp);
+ }
+
+ private async initializeZendeskSdk(): Promise {
const divId = "yext-chat-core-zendesk-container";
if (!window.document.getElementById(divId)) {
const div = window.document.createElement("div");
@@ -83,7 +88,6 @@ export class ChatCoreZendeskImpl {
}
this.setupEventListeners();
}
- await this.setupSession(messageRsp);
}
/**
@@ -91,7 +95,9 @@ export class ChatCoreZendeskImpl {
* On ticket creation, the metadata is set to include the tag "yext-chat"
* with the conversation summary as the initial message.
*/
- private async setupSession(messageRsp: MessageResponse) {
+ private async createZendeskConversation(
+ messageRsp: MessageResponse
+ ): Promise {
const ticketFields: Record = {};
try {
if (messageRsp.integrationDetails?.zendeskHandoff?.ticketFields) {
@@ -133,6 +139,7 @@ export class ChatCoreZendeskImpl {
}`,
this.conversationId
);
+ return this.conversationId;
}
private setupEventListeners() {
@@ -210,4 +217,10 @@ export class ChatCoreZendeskImpl {
resetSession(): void {
this.conversationId = undefined;
}
+
+ async reinitializeSession(conversationId: string): Promise {
+ this.conversationId = conversationId;
+ await this.initializeZendeskSdk();
+ await Smooch.loadConversation(conversationId);
+ }
}
diff --git a/packages/chat-core-zendesk/src/models/ChatCoreZendesk.ts b/packages/chat-core-zendesk/src/models/ChatCoreZendesk.ts
index e02cb51..5b00719 100644
--- a/packages/chat-core-zendesk/src/models/ChatCoreZendesk.ts
+++ b/packages/chat-core-zendesk/src/models/ChatCoreZendesk.ts
@@ -52,4 +52,11 @@ export interface ChatCoreZendesk {
* Reset the chat session by clearing the current conversation ID.
*/
resetSession(): void;
+
+ /**
+ * Reinitialize the session using existing session data.
+ *
+ * @param credentials - The credentials to use to reinitialize the session.
+ */
+ reinitializeSession(credentials: string): Promise;
}
diff --git a/packages/chat-core-zendesk/tests/ChatCoreZendesk.test.ts b/packages/chat-core-zendesk/tests/ChatCoreZendesk.test.ts
index 71e2df9..57a0f00 100644
--- a/packages/chat-core-zendesk/tests/ChatCoreZendesk.test.ts
+++ b/packages/chat-core-zendesk/tests/ChatCoreZendesk.test.ts
@@ -58,11 +58,11 @@ describe("chat session initialization", () => {
);
});
- it("returns no error when successfully connecting to chat session", async () => {
+ it("returns convo id and no error when successfully connecting to chat session", async () => {
const chatCoreZendesk = provideChatCoreZendesk(mockConfig);
await expect(
chatCoreZendesk.init(mockMessageResponse())
- ).resolves.toBeUndefined();
+ ).resolves.toBe("mock-conversation-id");
});
it("avoid rendering smooch web widget on subsequent initialization", async () => {