Odeslání aktivity vlastních příkazů do klientské aplikace
Důležité
Vlastní příkazy budou vyřazeny 30. dubna 2026. Od 30. října 2023 nemůžete v sadě Speech Studio vytvářet nové aplikace Vlastních příkazů. V souvislosti s touto změnou bude služba LUIS vyřazena 1. října 2025. Od 1. dubna 2023 nemůžete vytvářet nové prostředky LUIS.
V tomto článku se dozvíte, jak odesílat aktivitu z aplikace Vlastní příkazy do klientské aplikace se sadou Speech SDK.
Provedete následující úkoly:
- Definování a odeslání vlastní datové části JSON z aplikace Vlastních příkazů
- Příjem a vizualizace vlastního obsahu datové části JSON z klientské aplikace sady SPEECH SDK pro UPW v jazyce C#
Požadavky
- Visual Studio 2019 nebo novější Tato příručka používá Visual Studio 2019
- Klíč a oblast prostředku Azure AI Speech: Vytvořte prostředek služby Speech na webu Azure Portal. Další informace najdete v tématu Vytvoření prostředku s více službami.
- Už vytvořená aplikace Vlastní příkazy
- Klientská aplikace s povolenou sadou Speech SDK: Postupy: Integrace s klientskou aplikací pomocí sady Speech SDK
Nastavení aktivity Odesílání do klienta
Otevření aplikace Vlastní příkazy, kterou jste vytvořili dříve
Vyberte příkaz TurnOnOff , v pravidle dokončení vyberte ConfirmationResponse a pak vyberte Přidat akci.
V části Nový typ akce vyberte Odeslat aktivitu klientovi.
Zkopírujte následující KÓD JSON do obsahu aktivity.
{ "type": "event", "name": "UpdateDeviceState", "value": { "state": "{OnOff}", "device": "{SubjectDevice}" } }
Výběrem možnosti Uložit vytvořte nové pravidlo s akcí Odeslat aktivitu, trénujte a publikujte změnu.
Integrace s klientskou aplikací
V tématu Postupy: Nastavení klientské aplikace pomocí sady Speech SDK (Preview) jste vytvořili klientskou aplikaci UPW pomocí sady Speech SDK, která zpracovávala příkazy, jako turn on the tv
je například , turn off the fan
. Když přidáte některé vizuály, uvidíte výsledek těchto příkazů.
Chcete-li přidat označená pole s textem označujícím zapnuto nebo vypnuto, přidejte do souboru MainPage.xaml
StackPanel následující blok XML .
<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 ....../>
Přidání referenčních knihoven
Vzhledem k tomu, že jste vytvořili datovou část JSON, musíte přidat odkaz na knihovnu JSON.NET pro zpracování deserializace.
Řešení se chytá správně.
Zvolte Spravovat balíčky NuGet pro řešení, vyberte Procházet.
Pokud jste už nainstalovali Newtonsoft.json, ujistěte se, že jeho verze je minimálně 12.0.3. Pokud ne, přejděte na Spravovat balíčky NuGet pro řešení – Aktualizace, vyhledejte Newtonsoft.json, které chcete aktualizovat. Tato příručka používá verzi 12.0.3.
Ujistěte se také, že balíček NuGet Microsoft.NETCore.UniversalWindowsPlatform je alespoň 6.2.10. Tato příručka používá verzi 6.2.10.
Do MainPage.xaml.cs přidejte
using Newtonsoft.Json;
using Windows.ApplicationModel.Core;
using Windows.UI.Core;
Zpracování přijaté datové části
Nahraďte InitializeDialogServiceConnector
obslužnou rutinu ActivityReceived
události následujícím kódem. Upravená obslužná ActivityReceived
rutina události extrahuje datovou část z aktivity a změní vizuální stav televizoru nebo ventilátoru.
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);
}
};
Vyzkoušejte si to.
- Spuštění aplikace
- Select Enable microphone (Povolit mikrofon).
- Vyberte tlačítko pro hlasové ovládání.
- Vyslovte
turn on the tv
. - Vizuální stav televizoru by se měl změnit na zapnuto.
Další kroky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro