gpt4 book ai didi

c# - Azure Web 聊天机器人 token 服务器

转载 作者:行者123 更新时间:2023-12-02 08:32:19 25 4
gpt4 key购买 nike

问题:

我很难理解如何获取代币。我知道为什么我应该使用它们,但我只是不明白如何获得它们。所有使用 token 的样本都只是从“https://webchat-mockbot.azurewebsites.net/directline/token ”或类似的东西中获取它们。如何在我的机器人中创建这条路径?

描述您考虑过的替代方案

我能够创建一些可以与我的 JS-Bot 一起使用的东西:

    const server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function() {
console.log(`\n${ server.name } listening to ${ server.url }`);
console.log('\nGet Bot Framework Emulator: https://aka.ms/botframework-emulator');
console.log('\nTo talk to your bot, open the emulator select "Open Bot"');
});

server.post('/token-generate', async (_, res) => {
console.log('requesting token ');
try {
const cres = await fetch('https://directline.botframework.com/v3/directline/tokens/generate', {
headers: {
authorization: `Bearer ${ process.env.DIRECT_LINE_SECRET }`
},
method: 'POST'
});

const json = await cres.json();


if ('error' in json) {
res.send(500);
} else {
res.send(json);
}
} catch (err) {
res.send(500);
}
});

但我不知道如何使用我的 C#-Bot 执行此操作(我切换到 C#,因为我比 JS 更了解它)。

在我的 C#-Bot 中只有这个:

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Builder.Integration.AspNet.Core;

namespace ComplianceBot.Controllers
{
// This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot
// implementation at runtime. Multiple different IBot implementations running at different endpoints can be
// achieved by specifying a more specific type for the bot constructor argument.
[Route("api/messages")]
[ApiController]
public class BotController : ControllerBase
{
private readonly IBotFrameworkHttpAdapter _adapter;
private readonly IBot _bot;

public BotController(IBotFrameworkHttpAdapter adapter, IBot bot)
{
_adapter = adapter;
_bot = bot;
}

[HttpGet, HttpPost]
public async Task PostAsync()
{
// Delegate the processing of the HTTP POST to the adapter.
// The adapter will invoke the bot.
await _adapter.ProcessAsync(Request, Response, _bot);
}
}
}

我可以在此处添加新路线吗?像 [Route("directline/token")] ?

我知道我可以使用额外的“ token 服务器”来做到这一点(我不知道如何实现它,但我知道这会起作用),但如果可能的话,我想用我已经存在的“ token 服务器”来做到这一点c#-bot,就像我用我的 JS-Bot 所做的那样。

最佳答案

我已经发布了一个答案,其中包括如何实现 API 以在 C# 机器人中获取直接线路访问 token 以及如何获取此 token ,just refer to here 。如果您还有任何疑问,请随时告诉我。

更新:

我的代码基于 this demo 。如果您使用.net core,请在/Controllers文件夹下创建一个TokenController.cs:

enter image description here

TokenController.cs的代码:

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;

namespace Microsoft.BotBuilderSamples.Controllers
{

[Route("api/token")]
[ApiController]
public class TokenController : ControllerBase
{


[HttpGet]
public async Task<ObjectResult> getToken()
{
var secret = "<direct line secret here>";

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(
HttpMethod.Post,
$"https://directline.botframework.com/v3/directline/tokens/generate");

request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secret);

var userId = $"dl_{Guid.NewGuid()}";

request.Content = new StringContent(
Newtonsoft.Json.JsonConvert.SerializeObject(
new { User = new { Id = userId } }),
Encoding.UTF8,
"application/json");

var response = await client.SendAsync(request);
string token = String.Empty;

if (response.IsSuccessStatusCode)
{
var body = await response.Content.ReadAsStringAsync();
token = JsonConvert.DeserializeObject<DirectLineToken>(body).token;
}

var config = new ChatConfig()
{
token = token,
userId = userId
};

return Ok(config);
}
}
public class DirectLineToken
{
public string conversationId { get; set; }
public string token { get; set; }
public int expires_in { get; set; }
}
public class ChatConfig
{
public string token { get; set; }
public string userId { get; set; }
}
}

用您自己的直接线路 secret 替换 secret 后运行项目。您将能够通过 url 获取 token :http://localhost:3978/api/token 在本地:

enter image description here

关于c# - Azure Web 聊天机器人 token 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59782810/

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