发送身份验证令牌

若要在客户开始聊天时对其进行身份验证,请将身份验证令牌传递给 Customer Service 全渠道。 此令牌用于验证域中已登录的客户,并根据定义的上下文变量提取信息。 自定义身份验证是可选的,仅当聊天小组件托管在 Power Apps 门户外部时才相关。

重要

  • 在 JSON Web 令牌 (JWT) 的有效负载中,为密钥提供的 lwicontexts 值应为序列化的自定义上下文。
  • 自定义上下文是键/值对的集合。 任何键只允许原始值。
  • 自定义上下文的键必须对应于 Customer Service 全渠道中为关联工作流创建的上下文变量。
  • 开始新聊天时,实时聊天小部件将调用身份验证令牌提供程序。

仅当为小组件启用了身份验证时,与身份验证令牌提供程序相关的 SDK 才适用。 若要为小组件启用身份验证,请参阅 创建聊天身份验证设置

在开始聊天时,请按照以下步骤发送身份验证令牌:

  1. 从 JSON 有效负载生成有效的 JWT。 详细信息: setAuthTokenProvider

  2. 应在引发 lcw:ready 事件 后调用实时聊天方法。 您可以通过在窗口对象上添加自己的事件侦听器来监听此事件。

  3. 引发事件后 lcw:ready ,使用 setAuthTokenProvider 方法向实时聊天注册身份验证令牌提供程序。

    注释

    为避免超时,setAuthTokenProvider 方法中的 authTokenProvider 函数必须在 10 秒内响应。

  4. 使用 startChat 方法启动聊天。

代码示例

let payloadToEncrypt = {
    "sub" : "87b4d06c-abc2-e811-a9b0-000d3a10e09e",
    "lwicontexts" :"{\"msdyn_cartvalue\":\"10000\", \"msdyn_isvip\":\"false\"}",
    "iat" : 1542622071,
    "iss" : "contosohelp.com",
    "exp" : 1542625672,
    "nbf" : 1542622072
};

function convertToJwtToken(payloadToEncrypt){
  // Ideally, you should call your service to convert the payload to a valid JWT token
  return Promise.resolve("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI4N2I0ZDA2Yy1hYmMyLWU4MTEtYTliMC0wMDBkM2ExMGUwOWUiLCJsd2ljb250ZXh0cyI6IntcIm1zZHluX2NhcnR2YWx1ZVwiOlwiMTAwMDBcIiwgXCJtc2R5bl9pc3ZpcFwiOlwiZmFsc2VcIn0iLCJpYXQiOjE1NDI2MjIwNzEsImlzcyI6ImNvbnRvc29oZWxwLmNvbSIsImV4cCI6MTU0MjYyNTY3MiwibmJmIjoxNTQyNjIyMDcyfQ.r37z1M5rMyRYMOJ-rhyTRYFOgvl9N7KvTMueSFPkiuM");
}

function authTokenProvider(callback){
    convertToJwtToken(payloadToEncrypt).then(function (jwtToken){
    // Calling the callback with the valid JWT token
   callback(jwtToken);
   });
}

window.addEventListener("lcw:ready", function handleLivechatReadyEvent(){
    // Handle live chat ready event
    // Can use the SDK methods now
    // Setting authentication token provider to be used for the chat
    Microsoft.Omnichannel.LiveChatWidget.SDK.setAuthTokenProvider(authTokenProvider);

   // Starting a new chat
   Microsoft.Omnichannel.LiveChatWidget.SDK.startChat();
});

window.addEventListener("lcw:error", function handleLivechatErrorEvent(errorEvent){
  // Handle livechat error event
   console.log(errorEvent);
});

setAuthTokenProvider
getAuthTokenProvider
removeAuthTokenProvider
实时聊天 SDK JavaScript API 参考
发送自定义上下文