Botframework Create Directline 从服务器获取令牌

Botframework Create Directline get token from server

第一次初始化到服务器时,我从 createdirectline 保存了令牌。但是每当我从服务器获取令牌并使用它时,它不会使用该令牌而是创建一个新令牌。

  React.useEffect(() => {
    const temp = async () => {
      if (Object.entries(directline).length === 0) {
          if(await props.chatBotData!.tokenFromDb){
            setDirectline(createDirectLine({ token: props.chatBotData.tokenFromDb.toString() }));
          }else {
            setDirectline(createDirectLine({ token: DIRECTLINE_SECRET }));
          }
 
      }
    };
    temp();
  }, [directline,props.chatBotData]);
  const [directline, setDirectline]: any = useState({});

您想保存直线 secret server-side 以使其不可访问,而不是令牌。 secret 用于调用 /directline/tokens/generate/directline/conversations 以检索令牌(和 conversationId,如果后者是端点)。 (参考Connect a bot to Direct Line and Generate a Direct Line token。)

简而言之,这是您的网站应遵循的流程:

  1. 加载网络聊天的网站。
  2. 当 Web Chat 实例化时,会向您的“令牌”服务器发出 API 调用(即 https://.../gettoken
  3. 当“令牌”服务器令牌 API 被调用时,它调用 /directline/tokens/generate 传递 secret 然后 returns token .
  4. 令牌返回到您的调用网站,然后将其传递给 createDirectLine()

请务必注意,在撰写本文时,令牌在过期前仅可使用 30 分钟。如果您预计对话持续时间超过 30 分钟,那么您将需要执行类似的过程以预先将令牌换成刷新的令牌。

希望得到帮助!