Webes végpontok beállítása
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 állíthat be webvégpontokat egy egyéni parancsalkalmazásban, amely lehetővé teszi HTTP-kérések küldését egy ügyfélalkalmazásból. A következő feladatokat hajtja végre:
- Webes végpontok beállítása a Custom Commands-alkalmazásban
- Webes végpontok hívása a Custom Commands-alkalmazásban
- A webes végpontok válaszának fogadása
- Webes végpontok válaszának integrálása egyéni JSON-adatokba, elküldése, illetve vizualizációja egy C# UWP Speech SDK-ügyfélalkalmazásból
Előfeltételek
- Visual Studio 2019
- 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éni parancsok alkalmazás (lásd : Hangsegéd létrehozása egyéni parancsokkal)
- Speech SDK-kompatibilis ügyfélalkalmazás (lásd : Integrálás ügyfélalkalmazással a Speech SDK használatával)
Külső webvégpont üzembe helyezése az Azure-függvényalkalmazással
Ebben az oktatóanyagban olyan HTTP-végpontra van szüksége, amely az egyéni parancsok alkalmazás TurnOnOff parancsában beállított összes eszköz állapotát fenntartja.
Ha már van egy meghívni kívánt webes végpontja, ugorjon a következő szakaszra. Másik lehetőségként a következő szakasz egy alapértelmezett üzemeltetett webes végpont részleteit ismerteti, amelyet akkor használhat, ha kihagyja ezt a szakaszt.
Az Azure-függvény bemeneti formátuma
Ezután üzembe helyez egy végpontot az Azure Functions használatával. Az alábbiakban egy Egyéni parancsok esemény formátumát adtuk át az Azure-függvénynek. Ezeket az információkat az Azure-függvényalkalmazás írásakor használhatja.
{
"conversationId": "string",
"currentCommand": {
"name": "string",
"parameters": {
"SomeParameterName": "string",
"SomeOtherParameterName": "string"
}
},
"currentGlobalParameters": {
"SomeGlobalParameterName": "string",
"SomeOtherGlobalParameterName": "string"
}
}
Az alábbi táblázat a bemenet legfontosabb attribútumait ismerteti:
Attribútum | Magyarázat |
---|---|
conversationId | A beszélgetés egyedi azonosítója. Vegye figyelembe, hogy ezt az azonosítót az ügyfélalkalmazás hozhatja létre. |
currentCommand | A beszélgetésben jelenleg aktív parancs. |
név | A parancs neve. Az parameters attribútum a paraméterek aktuális értékeit tartalmazó térkép. |
currentGlobalParameters | Egy ilyen parameters térkép, de globális paraméterekhez használatos. |
A DeviceState Azure-függvény esetében egy egyéni parancsok példaeseménye a következőképpen néz ki. Ez a függvényalkalmazás bemeneteként működik.
{
"conversationId": "someConversationId",
"currentCommand": {
"name": "TurnOnOff",
"parameters": {
"item": "tv",
"value": "on"
}
}
}
Azure-függvény kimenete egyéni parancsalkalmazáshoz
Ha az Azure-függvény kimenetét egy Egyéni parancsok alkalmazás használja, annak a következő formátumban kell megjelennie. Részletekért lásd : Parancs frissítése webvégpontról .
{
"updatedCommand": {
"name": "SomeCommandName",
"updatedParameters": {
"SomeParameterName": "SomeParameterValue"
},
"cancel": false
},
"updatedGlobalParameters": {
"SomeGlobalParameterName": "SomeGlobalParameterValue"
}
}
Azure-függvény kimenete ügyfélalkalmazáshoz
Ha az Azure-függvény kimenetét egy ügyfélalkalmazás használja fel, a kimenet bármilyen formában jelenhet meg, amelyet az ügyfélalkalmazás igényel.
A DeviceState-végpont esetében az Azure-függvény kimenetét egy ügyfélalkalmazás használja az Egyéni parancsok alkalmazás helyett. Az Azure-függvény példakimenetének a következőképpen kell kinéznie:
{
"TV": "on",
"Fan": "off"
}
Ezt a kimenetet külső tárolóba kell írni, hogy fenntarthassa az eszközök állapotát. A külső tárolási állapotot az alábbi Integrálás az ügyfélalkalmazással szakaszban használja.
Az Azure-függvény üzembe helyezése
Egy Azure Functions-alkalmazásként konfigurálható és üzembe helyezhető mintát biztosítunk. Ha tárfiókot szeretne létrehozni a mintához, kövesse az alábbi lépéseket.
- Hozzon létre táblatárolót az eszközállapot mentéséhez. Az Azure Portalon hozzon létre egy új, Storage-fiók típusú erőforrást név szerinti eszközök szerint.
- Másolja a Csatlakozás ion sztring értékét az devicestate –> Hozzáférési kulcsokból. Ezt a sztringtitkot hozzá kell adnia a letöltött függvényalkalmazás-mintakódhoz.
- Töltse le a függvényalkalmazás mintakódját.
- Nyissa meg a letöltött megoldást a Visual Studio 2019-ben. A Csatlakozás ions.json cserélje le STORAGE_ACCOUNT_Standard kiadás CRET_CONNECTION_STRING a 2. lépésben szereplő titkos kódra.
- Töltse le a DeviceStateAzureFunction kódot.
A mintaalkalmazás Azure Functionsben való üzembe helyezéséhez kövesse az alábbi lépéseket.
- Az Azure Functions-alkalmazás üzembe helyezése .
- Várja meg, amíg az üzembe helyezés sikeres lesz, és lépjen az üzembe helyezett erőforrásra az Azure Portalon.
- Válassza a Függvények lehetőséget a bal oldali panelen, majd válassza a DeviceState lehetőséget.
- Az új ablakban válassza a Kód + Teszt lehetőséget, majd a Függvény URL-címének lekérése lehetőséget.
Webes végpontok beállítása egyéni parancsokban
Kapcsoljuk össze az Azure-függvényt a meglévő Custom Commands alkalmazással.
Ebben a szakaszban egy meglévő alapértelmezett DeviceState-végpontot használ. Ha saját webvégpontot hozott létre az Azure-függvény használatával vagy más módon, használja ezt az alapértelmezett https://webendpointexample.azurewebsites.net/api/DeviceState
helyett.
Nyissa meg a korábban létrehozott Custom Commands-alkalmazást.
Nyissa meg a webes végpontokat, és válassza az Új webvégpont lehetőséget.
Beállítás Ajánlott érték Leírás Név UpdateDeviceState A webes végpont neve. URL-cím https://webendpointexample.azurewebsites.net/api/DeviceState
Annak a végpontnak az URL-címe, amellyel azt szeretné, hogy a Custom Commands-alkalmazása kommunikáljon. Metódus POST A végpontján engedélyezett interakciók (például: GET, POST). Fejlécek Kulcs: alkalmazás, érték: az applicationId első nyolc számjegye A kérelemfejlécben megadandó fejlécparaméterek. Feljegyzés
- Az Azure Functions használatával létrehozott példa webes végpont, amely a tv és a ventilátor eszközállapotát mentő adatbázishoz csatlakozik.
- A javasolt fejlécre csak a példavégponthoz van szükség.
- Annak érdekében, hogy a fejléc értéke egyedi legyen a példavégpontban, használja az applicationId első 8 számjegyét.
- A valós világban a webes végpont lehet az eszközöket kezelő IOT-központ végpontja.
Válassza a Mentés lehetőséget.
Webes végpontok hívása
Lépjen a TurnOnOff parancsra, válassza a ConfirmationResponse befejezési szabályt, majd válassza a Művelet hozzáadása lehetőséget.
Az Új művelet – Típus elemnél válassza a Webes végpont hívása lehetőséget
A Művelet szerkesztése – Végpontok elemnél válassza az UpdateDeviceState lehetőséget, ami a létrehozott webes végpont.
A Konfigurálás elemnél adja meg a következő értékeket:
Beállítás Ajánlott érték Leírás Végpontok UpdateDeviceState A műveletben hívni kívánt webes végpont. Paraméterek lekérdezése item={SubjectDevice}&&value={OnOff} A webes végpont URL-címéhez hozzáfűzendő lekérdezési paraméterek. Törzs tartalma n/a A kéréstörzs tartalma. Feljegyzés
- A javasolt lekérdezési paraméterek csak a példavégponthoz szükségesek
A Siker esetén – Végrehajtandó művelet elemnél válassza a Szóbeli válasz küldése lehetőséget.
Az Egyszerű szerkesztőben adja meg a következőt:
{SubjectDevice} is {OnOff}
.Beállítás Ajánlott érték Leírás Végrehajtandó művelet Szóbeli válasz küldése A webes végpontra irányuló kérés sikeressége esetén végrehajtandó művelet Feljegyzés
- A HTTP-válasz mezőit közvetlenül is elérheti a
{YourWebEndpointName.FieldName}
használatával. Például:{UpdateDeviceState.TV}
- A HTTP-válasz mezőit közvetlenül is elérheti a
A Hiba esetén – Végrehajtandó művelet elemnél válassza a Szóbeli válasz küldése lehetőséget.
Az Egyszerű szerkesztőben adja meg a következőt:
Sorry, {WebEndpointErrorMessage}
.Beállítás Ajánlott érték Leírás Végrehajtandó művelet Szóbeli válasz küldése A webes végpontra irányuló kérés meghiúsulása esetén végrehajtandó művelet Feljegyzés
- A(z)
{WebEndpointErrorMessage}
nem kötelező. Eltávolíthatja, ha nem kíván hibaüzeneteket megjeleníteni. - A példában szereplő végpontban a HTTP-választ részletes hibaüzenetekkel küldjük vissza, amelyek olyan gyakori hibákról értesítenek, mint például a hiányzó fejlécparaméterek.
- A(z)
Próbálja ki a tesztportálon
- Sikeres válasz esetén mentse, tanítsa be és tesztelje.
- Sikertelen válasz esetén távolítsa el az egyik lekérdezési paramétert, mentse, ellenőrizze újra és tesztelje.
Integrálás ügyfélalkalmazással
Az Egyéni parancsok küldése tevékenység ügyfélalkalmazásba való elküldése művelethez hozzáadta a Küldés tevékenységet az ügyfélművelethez . A rendszer attól függetlenül elküldi a tevékenységet az ügyfélalkalmazásnak, hogy a Webes végpont hívása művelet sikeres volt-e. Általában azonban csak akkor szeretne tevékenységet küldeni az ügyfélalkalmazásnak, ha a webes végpontra irányuló hívás sikeres. Ebben a példában ez akkor történik, amikor az eszköz állapota sikeresen frissül.
- Törölje a korábban hozzáadott Tevékenység küldése az ügyfélnek műveletet.
- Hívás webvégpont szerkesztése:
- A Konfigurálás lapon győződjön meg róla, hogy a Lekérdezési paraméterek értéke
item={SubjectDevice}&&value={OnOff}
- A Siker esetén elemnél módosítsa a Végrehajtandó művelet beállítást Tevékenység küldése az ügyfélnek lehetőségre
- Másolja az alábbi JSON-t a Tevékenység tartalma mezőbe
{ "type": "event", "name": "UpdateDeviceState", "value": { "state": "{OnOff}", "device": "{SubjectDevice}" } }
- A Konfigurálás lapon győződjön meg róla, hogy a Lekérdezési paraméterek értéke
Most már csak akkor küld tevékenységet az ügyfélnek, ha a webes végpontra irányuló kérés sikeres.
Vizualizációk létrehozása az eszközállapotok szinkronizálásához
Adja hozzá a következő XML-t MainPage.xaml
az EnableMicrophoneButton blokk fölé.
<Button x:Name="SyncDeviceStateButton" Content="Sync Device State"
Margin="0,10,10,0" Click="SyncDeviceState_ButtonClicked"
Height="35"/>
<Button x:Name="EnableMicrophoneButton" ......
.........../>
Eszközállapot szinkronizálása
A MainPage.xaml.cs
alatt vegye fel az using Windows.Web.Http;
hivatkozást. Adja hozzá az alábbi kódot a MainPage
osztályhoz. Ez a metódus get kérést küld a példavégpontnak, és kinyeri az alkalmazás aktuális eszközállapotát. Ügyeljen arra, hogy az Egyéni parancs webvégpont fejlécében használtra változzon<your_app_name>
.
private async void SyncDeviceState_ButtonClicked(object sender, RoutedEventArgs e)
{
//Create an HTTP client object
var httpClient = new HttpClient();
//Add a user-agent header to the GET request.
var your_app_name = "<your-app-name>";
Uri endpoint = new Uri("https://webendpointexample.azurewebsites.net/api/DeviceState");
var requestMessage = new HttpRequestMessage(HttpMethod.Get, endpoint);
requestMessage.Headers.Add("app", $"{your_app_name}");
try
{
//Send the GET request
var httpResponse = await httpClient.SendRequestAsync(requestMessage);
httpResponse.EnsureSuccessStatusCode();
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
dynamic deviceState = JsonConvert.DeserializeObject(httpResponseBody);
var TVState = deviceState.TV.ToString();
var FanState = deviceState.Fan.ToString();
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
() =>
{
State_TV.Text = TVState;
State_Fan.Text = FanState;
});
}
catch (Exception ex)
{
NotifyUser(
$"Unable to sync device status: {ex.Message}");
}
}
Próba
- Indítsa el az alkalmazást.
- Válassza az Eszközállapot szinkronizálása lehetőséget.
Ha az előző szakaszban tesztelte az alkalmazástturn on tv
, a tv-műsorok a következőképpen jelennének meg. - Válassza a Mikrofon engedélyezése lehetőséget.
- Válassza a Beszélgetés gombot.
- Mondjuk
turn on the fan
. A ventilátor vizualizációs állapotát be kell kapcsolni.
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: