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。)
简而言之,这是您的网站应遵循的流程:
- 加载网络聊天的网站。
- 当 Web Chat 实例化时,会向您的“令牌”服务器发出 API 调用(即
https://.../gettoken
。
- 当“令牌”服务器令牌 API 被调用时,它调用
/directline/tokens/generate
传递 secret
然后 returns token
.
- 令牌返回到您的调用网站,然后将其传递给
createDirectLine()
。
请务必注意,在撰写本文时,令牌在过期前仅可使用 30 分钟。如果您预计对话持续时间超过 30 分钟,那么您将需要执行类似的过程以预先将令牌换成刷新的令牌。
希望得到帮助!
第一次初始化到服务器时,我从 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。)
简而言之,这是您的网站应遵循的流程:
- 加载网络聊天的网站。
- 当 Web Chat 实例化时,会向您的“令牌”服务器发出 API 调用(即
https://.../gettoken
。 - 当“令牌”服务器令牌 API 被调用时,它调用
/directline/tokens/generate
传递secret
然后 returnstoken
. - 令牌返回到您的调用网站,然后将其传递给
createDirectLine()
。
请务必注意,在撰写本文时,令牌在过期前仅可使用 30 分钟。如果您预计对话持续时间超过 30 分钟,那么您将需要执行类似的过程以预先将令牌换成刷新的令牌。
希望得到帮助!