Проблема:
Я изо всех сил пытаюсь понять, как получить токены. Я знаю, почему я должен их использовать, но я просто не понимаю, как их получить. Все образцы, использующие токены, просто извлекают их из "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")]?
Я знаю, что могу сделать это с помощью дополнительного "токен-сервера" (я не знаю, как это реализовать, но я знаю, что это сработает) , но если возможно, я бы хотел сделать это с моим уже существующим ботом c#, как я это сделал с моим JS ботом.