Použití direct line speech v robotovi
PLATÍ PRO: SDK v4
Direct Line Speech používá novou funkci streamování založenou na webSocketu služby Bot Framework k výměně zpráv mezi kanálem Direct Line Speech a vaším robotem. Po povolení kanálu Direct Line Speech na webu Azure Portal budete muset robota aktualizovat, aby naslouchal a přijímal tato připojení WebSocket. Tyto pokyny vysvětlují, jak to udělat.
Upgrade na nejnovější verzi sady SDK
V případě Direct Line Speech se ujistěte, že používáte nejnovější verzi sady SDK bot Builderu.
Aktualizace robota .NET Core, pokud používá AddBot a UseBotFramework
Pokud jste vytvořili robota pomocí sady SDK bot Builderu verze 4.3.2 před verzí 4.3.2, robot pravděpodobně neobsahuje BotController, ale místo toho používá metody AddBot() a UseBotFramework() v souboru Startup.cs k zveřejnění koncového bodu POST, ve kterém robot přijímá zprávy. Pokud chcete zveřejnit nový koncový bod streamování, budete muset přidat BotController a odebrat metody AddBot() a UseBotFramework(). Tyto pokyny projdou změnami, které je potřeba provést. Pokud už tyto změny máte, pokračujte dalším krokem.
Přidejte do projektu robota nový kontroler MVC přidáním souboru s názvem BotController.cs. Přidejte kód kontroleru do tohoto souboru:
[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;
}
[HttpPost, HttpGet]
public async Task ProcessMessageAsync()
{
await _adapter.ProcessAsync(Request, Response, _bot);
}
}
V souboru Startup.cs vyhledejte metodu Configure. UseBotFramework()
Odeberte řádek a ujistěte se, že máte tyto řádkyUseWebSockets
:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseWebSockets();
app.UseMvc();
...
}
V souboru Startup.cs vyhledejte také metodu ConfigureServices. AddBot()
Odeberte řádek a ujistěte se, že máte řádky pro přidání IBot
aBotFrameworkHttpAdapter
:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddSingleton<ICredentialProvider, ConfigurationCredentialProvider>();
services.AddSingleton<IChannelProvider, ConfigurationChannelProvider>();
// Create the Bot Framework Adapter.
services.AddSingleton<IBotFrameworkHttpAdapter, BotFrameworkHttpAdapter>();
// Create the bot as a transient. In this case the ASP Controller is expecting an IBot.
services.AddTransient<IBot, EchoBot>();
}
Zbytek kódu robota zůstane stejný!
Ujistěte se, že jsou povolené protokoly WebSocket.
Když vytvoříte nového robota z webu Azure Portal pomocí jedné ze šablon, jako je EchoBot, získáte robota, který obsahuje kontroler ASP.NET MVC, který zpřístupňuje koncový bod GET a POST a bude také používat webSockets. Tyto pokyny vysvětlují, jak tyto prvky přidat do robota, když upgradujete nebo nepoužíváte šablonu.
Otevřete Soubor BotController.cs ve složce Kontrolery v řešení.
Vyhledejte metodu PostAsync
ve třídě a aktualizujte její dekoraci z [HttpPost] na [HttpPost, HttpGet]:
[HttpPost, HttpGet]
public async Task PostAsync()
{
await _adapter.ProcessAsync(Request, Response, _bot);
}
Uložení a zavření souboru BotController.cs
Otevřete Startup.cs v kořenovém adresáři vašeho řešení.
V souboru Startup.cs přejděte do dolní části metody Configure. Před voláním app.UseMvc()
přidejte hovor .app.UseWebSockets()
To je důležité, protože pořadí těchto volání použití je důležité. Konec metody by měl vypadat přibližně takto:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseWebSockets();
app.UseMvc();
...
}
Zbytek kódu robota zůstane stejný!
Volitelně můžete nastavit pole Přečíst u aktivit.
Ve výchozím nastavení budou všechny zprávy odeslané prostřednictvím Direct Line Speech pro uživatele mluvené.
Volitelně můžete přizpůsobit způsob mluveného sdělení nastavením pole Přečíst libovolnou aktivitu odeslanou z robota:
public IActivity Speak(string message)
{
var activity = MessageFactory.Text(message);
string body = @"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='en-US'>
<voice name='Microsoft Server Speech Text to Speech Voice (en-US, JessaRUS)'>" +
$"{message}" + "</voice></speak>";
activity.Speak = body;
return activity;
}
Následující fragment kódu ukazuje, jak použít předchozí Speak
funkci:
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
await turnContext.SendActivityAsync(Speak($"Echo: {turnContext.Activity.Text}"), cancellationToken);
}
Další informace
Úplný příklad vytvoření a používání robota s podporou hlasu najdete v tématu Kurz: Hlasové povolení robota pomocí sady Speech SDK.
Další informace o práci s aktivitami najdete v tom , jak roboti pracují a jak posílat a přijímat textové zprávy.