Egyéni parancsok küldése tevékenység az ügyfélalkalmazásba
Fontos
Az egyéni parancsok 2026. április 30-án megszűnnek. 2023. október 30-ától nem hozhat létre új Egyéni parancsokat a Speech Studióban. A módosítással kapcsolatban a LUIS 2025. október 1-jén megszűnik. 2023. április 1-től nem hozhat létre új LUIS-erőforrásokat.
Ebből a cikkből megtudhatja, hogyan küldhet tevékenységeket egyéni parancsok alkalmazásból a Speech SDK-t futtató ügyfélalkalmazásnak.
A következő feladatokat hajtja végre:
- Egyéni JSON-hasznos adatok definiálása és küldése az Egyéni parancsok alkalmazásból
- Az egyéni JSON hasznos adattartalom fogadása és vizualizációja egy C# UWP Speech SDK-ügyfélalkalmazásból
Előfeltételek
- Visual Studio 2019 vagy újabb verzió. Ez az útmutató a Visual Studio 2019-et használja
- Azure AI Speech-erőforráskulcs és -régió: Speech-erőforrás létrehozása az Azure Portalon. További információ: Többszolgáltatásos erőforrás létrehozása.
- Egy korábban létrehozott Custom Commands-alkalmazás
- Speech SDK-kompatibilis ügyfélalkalmazás: Útmutató: Integrálás ügyfélalkalmazással a Speech SDK használatával
Tevékenység küldése az ügyfélnek beállítás
A korábban létrehozott Egyéni parancsok alkalmazás megnyitása
Válassza a TurnOnOff parancsot, válassza a ConfirmationResponse lehetőséget a befejezési szabály alatt, majd válassza a Művelet hozzáadása lehetőséget
Az Új művelettípus csoportban válassza a Tevékenység küldése az ügyfélnek lehetőséget
Másolja az alábbi JSON-t tevékenységtartalmakba
{ "type": "event", "name": "UpdateDeviceState", "value": { "state": "{OnOff}", "device": "{SubjectDevice}" } }
A Mentés gombra kattintva új szabályt hozhat létre a Tevékenység küldése művelettel, betanítsa és közzétegye a módosítást
Integrálás ügyfélalkalmazással
Útmutató : Ügyfélalkalmazás beállítása a Speech SDK-val (előzetes verzió) egy UWP-ügyfélalkalmazást hozott létre a Speech SDK-val, amely olyan parancsokat kezelt, mint a turn on the tv
, turn off the fan
. Néhány vizualizáció hozzáadásával láthatja a parancsok eredményét.
Ha be- vagy kikapcsoltszöveget tartalmazó címkézett mezőket szeretne hozzáadni, adja hozzá a StackPanel MainPage.xaml
következő XML-blokkját.
<StackPanel Orientation="Vertical" H......>
......
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="20">
<Grid x:Name="Grid_TV" Margin="50, 0" Width="100" Height="100" Background="LightBlue">
<StackPanel>
<TextBlock Text="TV" Margin="0, 10" TextAlignment="Center"/>
<TextBlock x:Name="State_TV" Text="off" TextAlignment="Center"/>
</StackPanel>
</Grid>
<Grid x:Name="Grid_Fan" Margin="50, 0" Width="100" Height="100" Background="LightBlue">
<StackPanel>
<TextBlock Text="Fan" Margin="0, 10" TextAlignment="Center"/>
<TextBlock x:Name="State_Fan" Text="off" TextAlignment="Center"/>
</StackPanel>
</Grid>
</StackPanel>
<MediaElement ....../>
Referenciatárak hozzáadása
Mivel létrehozott egy hasznos JSON-adatot, a deszerializálás kezeléséhez hozzá kell adnia egy hivatkozást a JSON.NET kódtárhoz.
A megoldás jobb ügyfélalkalmazása.
Válassza a Megoldáshoz készült NuGet-csomagok kezelése lehetőséget, válassza a Tallózás lehetőséget
Ha már telepítette Newtonsoft.json, győződjön meg arról, hogy annak verziója legalább 12.0.3. Ha nem, nyissa meg a Megoldás NuGet-csomagjainak kezelését – Frissítések, keresse meg a Newtonsoft.json a frissítéséhez. Ez az útmutató a 12.0.3-at használja.
Emellett győződjön meg arról, hogy a NuGet-csomag Microsoft.NETCore.UniversalWindowsPlatform értéke legalább 6.2.10. Ez az útmutató a 6.2.10-es verziót használja.
A "MainPage.xaml.cs"-ban adja hozzá a
using Newtonsoft.Json;
using Windows.ApplicationModel.Core;
using Windows.UI.Core;
A kapott hasznos adatok kezelése
Ebben InitializeDialogServiceConnector
az esetben cserélje le az ActivityReceived
eseménykezelőt a következő kódra. A módosított ActivityReceived
eseménykezelő kinyeri a hasznos adatokat a tevékenységből, és módosítja a tv vagy a ventilátor vizuális állapotát.
connector.ActivityReceived += async (sender, activityReceivedEventArgs) =>
{
NotifyUser($"Activity received, hasAudio={activityReceivedEventArgs.HasAudio} activity={activityReceivedEventArgs.Activity}");
dynamic activity = JsonConvert.DeserializeObject(activityReceivedEventArgs.Activity);
var name = activity?.name != null ? activity.name.ToString() : string.Empty;
if (name.Equals("UpdateDeviceState"))
{
Debug.WriteLine("Here");
var state = activity?.value?.state != null ? activity.value.state.ToString() : string.Empty;
var device = activity?.value?.device != null ? activity.value.device.ToString() : string.Empty;
if (state.Equals("on") || state.Equals("off"))
{
switch (device)
{
case "tv":
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal, () => { State_TV.Text = state; });
break;
case "fan":
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal, () => { State_Fan.Text = state; });
break;
default:
NotifyUser($"Received request to set unsupported device {device} to {state}");
break;
}
}
else {
NotifyUser($"Received request to set unsupported state {state}");
}
}
if (activityReceivedEventArgs.HasAudio)
{
SynchronouslyPlayActivityAudio(activityReceivedEventArgs.Audio);
}
};
Próba
- Az alkalmazás elindítása
- Válassza a Mikrofon engedélyezése lehetőséget
- Válassza a Beszéd gombot
- Mondja a következőt:
turn on the tv
- A tv vizualizációs állapotának "be" értékre kell változnia