gpt4 book ai didi

node.js - 我们如何在Microsoft Bot Framework中为不同的用户维护不同的 session ?

转载 作者:太空宇宙 更新时间:2023-11-04 00:17:27 24 4
gpt4 key购买 nike

我已经使用机器人框架创建了一个机器人,并且想知道是否有任何方法可以在使用直线时为不同用户维护不同的 session 。
使用 Skype channel 时,会为个人用户维护用户 session ,我希望在我的直线客户端中实现相同的功能。
在我的情况下,前一个 session 数据将被下一个 session 数据覆盖。
我正在使用 Node.js 构建机器人。

最佳答案

您需要为每个用户启动一个新对话。

假设您的工作基于 Direct Line (WebSockets)像我一样进行示例(它使用 Swagger-JS v2)。

如果您使用您的 secret 生成 token 并将该 token 附加到将开始对话的客户端,如下所示:

// Obtain a token using the Direct Line secret
return rp({
url: 'https://directline.botframework.com/v3/directline/tokens/generate',
method: 'POST',
headers: {
'Authorization': 'Bearer ' + directLineSecret
},
json: true
}).then(function (response) {
// Then, replace the client's auth secret with the new token
var token = response.token;
client.clientAuthorizations.add('AuthorizationBotConnector', new Swagger.ApiKeyAuthorization('Authorization', 'Bearer ' + token, 'header'));
return client;
});

该客户端只能开始一次对话。这就是您遇到覆盖对话问题的原因。

为了让客户端开始多个对话。您需要将您的 secret 放入客户端授权 header 中,如下所示:

.then(function (client) {
// No need to obtain a token using the Direct Line secret
// Use the Direct Line secret directly
client.clientAuthorizations.add('AuthorizationBotConnector', new Swagger.ApiKeyAuthorization('Authorization', 'Bearer ' + directLineSecret, 'header'));
return client;
})

使用此方法,每次您使用此开始新对话时:

client.Conversations.Conversations_StartConversation();

将为每个对话生成一个 token ,您可以为每个用户进行对话。当然,您需要在应用程序的用户 ID 和 Direct Line 的对话 ID 之间添加映射。

关于node.js - 我们如何在Microsoft Bot Framework中为不同的用户维护不同的 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46190629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com