Közvetlen vonalas beszéd használata a robotban
A KÖVETKEZŐKRE VONATKOZIK: SDK v4
A Direct Line Speech a Bot Framework új WebSocket-alapú streamelési funkciójával vált üzeneteket a Direct Line Speech csatorna és a robot között. Miután engedélyezte a Direct Line Speech csatornát az Azure Portalon, frissítenie kell a robotot a WebSocket-kapcsolatok figyeléséhez és elfogadásához. Ezek az utasítások ismertetik, hogyan teheti ezt meg.
Frissítés az SDK legújabb verziójára
A Direct Line Speech esetében győződjön meg arról, hogy a Bot Builder SDK legújabb verzióját használja.
Frissítse a .NET Core-robotot, ha az AddBot és a UseBotFramework alkalmazást használja
Ha a Bot Builder SDK 4-es verziójával hozott létre robotot a 4.3.2-es verzió előtt, a robot valószínűleg nem tartalmaz BotControllert, hanem a Startup.cs fájl AddBot() és UseBotFramework() metódusait használja annak a POST-végpontnak a közzétételéhez, ahol a robot üzeneteket fogad. Az új streamvégpont felfedéséhez hozzá kell adnia egy BotControllert, és el kell távolítania az AddBot() és a UseBotFramework() metódusokat. Ezek az utasítások végigvezetik a szükséges módosításokat. Ha már rendelkezik ezekkel a módosításokkal, folytassa a következő lépésekkel.
Adjon hozzá egy új MVC-vezérlőt a robotprojekthez egy BotController.cs nevű fájl hozzáadásával. Adja hozzá a vezérlőkódot ehhez a fájlhoz:
[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);
}
}
A Startup.cs fájlban keresse meg a Konfigurálás metódust. Távolítsa el a UseBotFramework()
vonalat, és győződjön meg arról, hogy a következő sorokkal rendelkezik UseWebSockets
:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseWebSockets();
app.UseMvc();
...
}
A Startup.cs fájlban is keresse meg a ConfigureServices metódust. Távolítsa el a AddBot()
sort, és győződjön meg arról, hogy vannak vonalai a következőhöz IBot
BotFrameworkHttpAdapter
:
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>();
}
A robotkód fennmaradó része ugyanaz marad!
Győződjön meg arról, hogy a WebSockets engedélyezve van
Amikor új robotot hoz létre az Azure Portalról az egyik sablonnal( például az EchoBottal), egy ASP.NET MVC-vezérlőt tartalmazó robotot kap, amely egy GET és POST végpontot tesz elérhetővé, és WebSocketeket is használ. Ezek az utasítások bemutatják, hogyan adhat hozzá ilyen elemeket a robothoz frissítéskor vagy sablon használata közben.
Nyissa meg a BotController.cs fájlt a megoldás Vezérlők mappájában
Keresse meg a metódust PostAsync
az osztályban, és frissítse annak díszítését a [HttpPost]-ról a [HttpPost, HttpGet] értékre:
[HttpPost, HttpGet]
public async Task PostAsync()
{
await _adapter.ProcessAsync(Request, Response, _bot);
}
A BotController.cs mentése és bezárása
Nyissa meg a Startup.cs fájlt a megoldás gyökerében.
A Startup.cs fájlban lépjen a Konfigurálás metódus aljára. A hívás app.UseMvc()
előtt adjon hozzá egy hívást a következőhöz app.UseWebSockets()
: Ez azért fontos, mert ezeknek a hívásoknak a sorrendje számít. A metódus végén a következőhöz hasonlóan kell kinéznie:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseWebSockets();
app.UseMvc();
...
}
A robotkód fennmaradó része ugyanaz marad!
Igény szerint állítsa be a Felolvasás mezőt a tevékenységekhez
Alapértelmezés szerint a rendszer minden, a felhasználónak a Direct Line Speechen keresztül küldött üzenetet elhangozza.
Igény szerint testre szabhatja az üzenet beszédének módját a robottól küldött tevékenységek Speak mezőjének beállításával:
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;
}
Az alábbi kódrészlet az előző Speak
függvény használatát mutatja be:
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
await turnContext.SendActivityAsync(Speak($"Echo: {turnContext.Activity.Text}"), cancellationToken);
}
További információk
A hangalapú robotok létrehozására és használatára vonatkozó teljes példáért tekintse meg az oktatóanyagot: A robot hangalapú engedélyezése a Speech SDK használatával.
A tevékenységekkel kapcsolatos további információkért tekintse meg a robotok működését , valamint a szöveges üzenetek küldésének és fogadásának módját.