如何解决Botframework创建Directline从服务器获取令牌
我第一次将令牌从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
,以便无法访问令牌,而不是令牌。调用secret
或/directline/tokens/generate
时使用/directline/conversations
来检索令牌(如果是后者,则返回conversationId
)。 (参考WebDriverWait和Connect a bot to Direct Line。)
简而言之,这是您的网站应遵循的流程:
- 加载了Web聊天的网站。
- 在网络聊天实例化时,将对您的“令牌”服务器(即
https://.../gettoken
)进行API调用。 - 调用“令牌”服务器令牌API时,它将通过
/directline/tokens/generate
来调用secret
,然后返回token
。 - 令牌返回到您的呼叫网站,然后将其传递给
createDirectLine()
使用。
请务必注意,在撰写本文时,令牌在过期之前只能使用30分钟。如果您希望对话持续30分钟以上,那么您将需要执行类似的过程来预先将令牌交换为刷新的令牌。
希望有帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。