Adaptív kifejezések

A KÖVETKEZŐKRE VONATKOZIK: SDK v4

A robotok adaptív kifejezésekkel értékelik ki egy feltétel kimenetelét a memóriában a párbeszédpanel vagy a Language Generation rendszer számára elérhető futásidejű információk alapján. Ezek az értékelések határozzák meg, hogy a robot hogyan reagál a felhasználói bemenetre, és egyéb tényezőkre, amelyek hatással vannak a robot működésére.

Az adaptív kifejezések kielégítik ezt az alapvető szükségletet azáltal, hogy egy adaptív kifejezési nyelvet biztosítanak, amely használható a Bot Framework SDK-val és más társalgási AI-összetevőkkel, például a Bot Framework Composerrel, a Nyelvi generációval, az Adaptív párbeszédpanelekkel és az Adaptív kártyákkal.

Az adaptív kifejezések tartalmazhatnak egy vagy több explicit értéket, előre összeállított függvényt vagy egyéni függvényt. Az adaptív kifejezések felhasználói további támogatott függvények injektálására is képesek. Például az összes nyelvi létrehozási sablon függvényként, valamint további függvényekként is elérhető, amelyek csak az adott összetevő adaptív kifejezések használatával érhetők el.

Operátorok

Az adaptív kifejezések a következő operátortípusokat és kifejezésszintaxisokat támogatják:

  • Számtani
  • összehasonlítás
  • Logikai
  • egyéb operátorok és kifejezések szintaxisa
Operator Funkciók Előre összeállított függvény ekvivalens
+ Ezen kívül. Példa: A + B Hozzáadása
- Kivonás. Példa: A – B Al
unary + Pozitív érték. Példa: +1, +A N/A
unary - Negatív érték. Példa: -2, -B N/A
* Szorzás. Példa: A * B Mul
/ Osztály. Példa: A /B Div
^ Exponenciális. Példa: A ^ B Exp
% Modulus. Példa: A % B Mod

Változók

A változókra mindig a nevük hivatkozik a formátumban ${myVariable}. Ezekre hivatkozhat a tulajdonságválasztó operátor a következő formában myParent.myVariable, az elemindex-kijelölési operátor használatával, mint a következőben myParent.myList[0], vagy a getProperty() függvénnyel.

Két speciális változó létezik. [] egy üres listát jelöl, és {} egy üres objektumot jelöl.

Explicit értékek

Az explicit értékek a "myExplicitValue" vagy a "myExplicitValue" idézőjelek közé is csatolhatók.

Funkciók

Az adaptív kifejezések egy vagy több függvényt is használhatnak. Az adaptív kifejezések által támogatott függvényekről további információt az előre összeállított függvények referenciacikkében talál.

Bot Framework Composer

A Bot Framework Composer egy nyílt forráskódú vizualizációkészítő vászon fejlesztők és multidiszciplináris csapatok számára robotok készítéséhez. A Composer adaptív kifejezéseket használ az értékek létrehozásához, kiszámításához és módosításához. Adaptív kifejezések használhatók a nyelvi létrehozási sablondefiníciókban és tulajdonságokként a szerzői vásznon. Az alábbi példában látható, hogy a memória tulajdonságai adaptív kifejezésben is használhatók.

A kifejezés (dialog.orderTotal + dialog.orderTax) > 50 hozzáadja a tulajdonságok dialog.orderTotal értékeit, és dialog.orderTaxkiértékeli, hogy True az összeg nagyobb-e 50-nél, vagy False ha az összeg 50 vagy annál kisebb.

A kifejezések memóriában való használatával kapcsolatos további információkért olvassa el a beszélgetési folyamatot és a memóriát .

Nyelvlétrehozás

Adaptív kifejezéseket használnak a nyelvi generációs (LG) rendszerek az LG-sablonokban leírt feltételek kiértékelésére. Az alábbi példában az illesztés előre összeállított függvénye a gyűjtemény összes értékének recentTasks felsorolására szolgál.

# RecentTasks
- IF: ${count(recentTasks) == 1}
    - Your most recent task is ${recentTasks[0]}. You can let me know if you want to add or complete a task.
- ELSEIF: ${count(recentTasks) == 2}
    - Your most recent tasks are ${join(recentTasks, ', ', ' and ')}. You can let me know if you want to add or complete a task.
- ELSEIF: ${count(recentTasks) > 2}
    - Your most recent ${count(recentTasks)} tasks are ${join(recentTasks, ', ', ' and ')}. You can let me know if you want to add or complete a task.
- ELSE:
    - You don't have any tasks.

További információért olvassa el az .lg fájlformátumról szóló cikk Változatok szakaszában az előre összeállított függvény használatát.

Adaptív kártyák templating

Az adaptív kártyákat a robotok és más technológiák fejlesztői az adaptív kártyák elrendezésétől való elkülönítésre használhatják. A fejlesztők a hasznos adatokkal beágyazott adatokat adhatnak meg, vagy az adatok sablontól való elválasztásának gyakoribb módszerét.AdaptiveCard

Tegyük fel például, hogy a következő adatokkal rendelkezik:

{
    "id": "1291525457129548",
    "status": 4,
    "author": "Matt Hidinger",
    "message": "{\"type\":\"Deployment\",\"buildId\":\"9542982\",\"releaseId\":\"129\",\"buildNumber\":\"20180504.3\",\"releaseName\":\"Release-104\",\"repoProvider\":\"GitHub\"}",
    "start_time": "2018-05-04T18:05:33.3087147Z",
    "end_time": "2018-05-04T18:05:33.3087147Z"
}

A message tulajdonság egy JSON-szerializált sztring. A sztringen belüli értékek eléréséhez a json előre összeállított függvény meghívható:

{
    "type": "TextBlock",
    "text": "${json(message).releaseName}"
}

És a következő objektumot fogja eredményezni:

{
    "type": "TextBlock",
    "text": "Release-104"
}

További információkért és példákért lásd az adaptív kártyák templating dokumentációját.

További információforrások