Megosztás a következőn keresztül:


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

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 parametersté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.

  1. 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.
  2. 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.
  3. Töltse le a függvényalkalmazás mintakódját.
  4. 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.
  5. 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.

  1. Az Azure Functions-alkalmazás üzembe helyezése .
  2. Várja meg, amíg az üzembe helyezés sikeres lesz, és lépjen az üzembe helyezett erőforrásra az Azure Portalon.
  3. Válassza a Függvények lehetőséget a bal oldali panelen, majd válassza a DeviceState lehetőséget.
  4. 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/DeviceStatehelyett.

  1. Nyissa meg a korábban létrehozott Custom Commands-alkalmazást.

  2. Nyissa meg a webes végpontokat, és válassza az Új webvégpont lehetőséget.

    New web endpoint

    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.
  3. Válassza a Mentés lehetőséget.

Webes végpontok hívása

  1. 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.

  2. Az Új művelet – Típus elemnél válassza a Webes végpont hívása lehetőséget

  3. A Művelet szerkesztése – Végpontok elemnél válassza az UpdateDeviceState lehetőséget, ami a létrehozott webes végpont.

  4. A Konfigurálás elemnél adja meg a következő értékeket:

    Call web endpoints action parameters

    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
  5. 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}.

    Screenshot that shows the On Success - Action to execute screen.

    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}
  6. 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}.

    Call web endpoints action On Fail

    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.

Próbálja ki a tesztportálon

  • Sikeres válasz esetén mentse, tanítsa be és tesztelje.

    Screenshot that shows the On Success response.

  • Sikertelen válasz esetén távolítsa el az egyik lekérdezési paramétert, mentse, ellenőrizze újra és tesztelje.

    Call web endpoints action On Success

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.

  1. Törölje a korábban hozzáadott Tevékenység küldése az ügyfélnek műveletet.
  2. Hívás webvégpont szerkesztése:
    1. 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}
    2. 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
    3. Másolja az alábbi JSON-t a Tevékenység tartalma mezőbe
    {
       "type": "event",
       "name": "UpdateDeviceState",
       "value": {
         "state": "{OnOff}",
         "device": "{SubjectDevice}"
       }
     }
    

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

  1. Indítsa el az alkalmazást.
  2. 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.

    Sync device state

  3. Válassza a Mikrofon engedélyezése lehetőséget.
  4. Válassza a Beszélgetés gombot.
  5. Mondjuk turn on the fan. A ventilátor vizualizációs állapotát be kell kapcsolni.

    Turn on fan

Következő lépések