Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Panel
panelIconIdf3de15fc-91a3-428f-9029-3800cee956e3atlassian-info
panelIcon:ichatinfo:
panelIconText:ichatinfo:
bgColor#F4F5F7

This page is about Chat for JSM Cloud. Using Server or Data Center? Click here.

Supporting customers is even faster and more seamless with the auto-login integration. With this feature, once a customer logs into in to your website or portal, they will automatically be logged into in to the Chat Widget without having to enter separate credentials. This makes the customer's experience seamless and cuts out removes a potential blocker to them getting in touch with you, while allowing . It also enables agents to respond quicker.

...

more quickly.

The auto-login feature requires several changes on the front end and back end of the service that is going to be integrated.

Prerequisites

  1. A

...

  1. secret key is used to verify that the login request is valid and coming from your (client’s)

...

  1. back end. Each service desk project has its own secret key. To obtain the key, open your project, and go to Project Settings > Chat

...

  1. for JSM >

...

  1. Authentication > Auto Login on Website.

  2. Here, enable the Auto

...

  1. Login feature, and

...

  1. then click Generate secret key:

...

  1. image-20240216-094307.pngImage Added
  1. The

...

  1. secret key should be stored on the

...

  1. back end.

Logging in

While performing user login on the website, the service should generate and issue a JWT access token for a chat and sign it with the pre-shared secret key, as shown in the example below:

Code Block
const header = {
  alg: 'HS256',
  typ: 'JWT'
};
const payload = {
  email: "user@example.com",
  displayName: "User Account Name",
  iat: Date.now() / 1000, //unix timestamp in seconds
  exp: Date.now() / 1000 + 60 * 5 //token expiry date
};
const token = KJUR.jws.JWS.sign( //example using jsrsasign library
  "HS256",
  JSON.stringify(header),
  JSON.stringify(payload),
  sharedSecret
);

The service’s frontend front end should receive this token and call Chat’s SSO login API:

Code Block
const chatWidget = document.querySelector('chat-widget');
chatWidget.onload = async function () {
        await chatWidget.loginWithToken(token);
};
Expand
titleOld code snippet:
Code Block
languagehtml
try {
  await spartezSupportChat.sso.login(token);
} catch (exception){
  //handle exception
}

In order to make it work, we need to make sure that Chat has been correctly initialized before the login operation. To do this, we can use initCallback from the spartezSupportChat object – see Add Chat Widget to Your Website.If you don’t want to show Chat Widget to users until they log in, you can add the following call to the code above:

Code Block
chatWidget.show();

If you want to show the Chat Widget only to certain users, you can filter by email domain:

Code Block
chatWidget.onload = function () {
   // Check if user is in a correct domain. 
   // `user.email` might be `user.emailAddress` or similar depending on your data model
   if (user.email && user.email.includes('@appfire.com')) {
        chatWidget.loginWithToken(token);
   }
};

During the login operation, an error may occur. In that case, an exception will be thrown. To get the error description, you can access exception.message property.

...

Limitation 1: If the login failed in the case that the customer has an account already in atlassianin atlassian.com, please check if they have set the visibility of their contact email to "Anyone" so that the Chat app can see the email address and match the two.

...

( Here's the link to the profile setting: Profile and Visibility).

...

Limitation 2: Due to the Jira user creation process, while logging in with a non-existing JSM user email, it may take some time for the user to be fully created on the Atlassian side (less than 1 minute). During this process, trying to log in again with the newly created user may lead to an error, which is temporary.

Logging out

To log out, the service’s frontend front end should call await chatWidget.logout();.

Expand
titleOld code snippet:

await spartezSupportChat.sso.logout();

...