基于此Bot DirectLine Authentication,
如果您计划将令牌分发给客户端并希望它们启动对话,请使用“生成令牌”操作。
这是否意味着我们可以使用Secret从后端生成令牌并将令牌分发给客户端以开始对话?
为了测试它,我写了这些:
Backend: @Azure Function
[FunctionName("XXXXX")]
public static async Task<object> RunAsync([HttpTrigger(Route = "XXXXX")] HttpRequestMessage req, TraceWriter log)
{
log.Info($"Webhook was triggered!");
var tokenResponse = await new DirectLineClient(directLineSecret).Tokens.GenerateTokenForNewConversationAsync();
return req.CreateResponse(HttpStatusCode.OK, tokenResponse.Token);
}
和
Client @UWP
// token from Backend
directLineClient = new DirectLineClient(token);
var conversation = directLineClient.Conversations.StartConversation();
奇怪的是变量会话为空。
当我将后端的生成令牌代码放到客户端时,变量会话是一个有效的对象。
我的问题是:我们可以将Generate Token放在后端并将令牌分发给客户端吗?
答案 0 :(得分:1)
我的问题是:我们可以将Generate Token放在后端并将令牌分发给客户端吗?
当然,如果您不想公开公开/共享直线密码,您可以在后端服务中生成令牌并将令牌分发给客户端并让他们发起对话。
注意:请确保在您的DirectLine客户端中使用时,http触发功能生成的直线令牌未过期。
我使用Direct Line Bot Sample的DirectLineClient进行测试,并修改代码以接受Direct Line令牌。如果我提供过期的直线令牌,则开始会话将失败。
答案 1 :(得分:0)
问题是后端应该将标记作为文本媒体类型返回。非常感谢您的反馈和提醒。
return req.CreateResponse(HttpStatusCode.OK, tokenResponse.Token, "text/plain");