Sdílet prostřednictvím


Přehled dovedností

PLATÍ PRO: SDK v4

Robota můžete rozšířit pomocí robota dovednosti . Dovednost může využívat různé další roboty, což usnadňuje opakované použití, a tímto způsobem můžete vytvořit robota, který je přístupný uživatelům, a rozšířit ho využíváním vlastních dovedností nebo dovedností třetích stran.

  • Dovednost je robot, který může provádět sadu úkolů pro jiného robota – robot může být dovednost i uživatel.
  • Uživatel dovedností je robot, který může volat jednu nebo více dovedností. Uživateli se také říká kořenový robot.
  • Manifest dovednosti je soubor JSON, který popisuje akce, které může dovednost provádět, její vstupní a výstupní parametry a koncové body dovednosti.
    • Vývojáři, kteří nemají přístup ke zdrojovému kódu dovednosti, můžou informace v manifestu použít k návrhu příjemce dovedností.
    • Schéma manifestu dovedností je soubor JSON, který popisuje schéma manifestu dovednosti.
    • Podívejte se, jak implementovat dovednost a jak napsat manifest dovedností pro ukázkové manifesty dovedností.

Jinými slovy, uživatel komunikuje přímo s kořenovým robotem a kořenový robot deleguje určitou konverzační logiku na dovednost.

Funkce dovedností je navržená tak, aby:

  • Dovednosti a spotřebitelé komunikují přes protokol HTTP pomocí protokolu Bot Framework.
  • Spotřebitel dovedností může využívat více dovedností.
  • Spotřebitel dovedností může využívat dovednost bez ohledu na jazyk použitý k implementaci dovednosti. Robot jazyka C# může například využívat dovednosti implementované pomocí JavaScriptu.
  • Dovednost může být také spotřebitel dovedností a volat další dovednosti.
  • Dovednosti podporují ověřování uživatelů; Ověřování uživatelů je však místní pro dovednost a nejde ho přenést do jiného robota.
  • Dovednosti můžou pracovat s adaptérem Bot Framework i vlastními adaptéry.

Tento diagram znázorňuje některé možné permutace.

Ilustrace permutací mezi spotřebiteli dovedností a dovednostmi

Koncepční architektura

Dovednost a uživatel dovedností jsou samostatné roboty a publikujete je nezávisle.

  • Spotřebitel dovedností vyžaduje přidanou logiku pro správu dovednosti, například kdy zavolat nebo zrušit dovednost atd. Kromě obvyklých objektů robota a adaptéru zahrnuje spotřebitel několik objektů souvisejících s dovednostmi, které se používají k výměně aktivit s dovedností. Příjemce dovedností implementuje aspoň dva koncové body HTTP:
    • Koncový bod zasílání zpráv přijímá aktivity od uživatele nebo kanálu. Jedná se o obvyklý koncový bod zasílání zpráv, který implementují všichni roboti.
    • Koncový bod hostitele dovedností pro příjem aktivit z dovednosti. Jedná se o adresu URL zpětného volání, adresu URL služby, na kterou dovednost odpovídá. (Příjemce dovedností musí spárovat kód, který obdrží požadavek metody HTTP z dovednosti s obslužnou rutinou dovedností.)
  • Dovednost vyžaduje přidání logiky k odeslání endOfConversation aktivity po jejím dokončení, aby spotřebitel dovedností věděl, kdy se mají aktivity do dovednosti přestat předávat.

Tento diagram popisuje tok aktivit od uživatele k kořenovému robotovi do dovednosti a zpět.

Obrázek toho, jak aktivity proudí z uživatele do dovednosti a zpět

  1. Adaptér kořenového robota přijímá od uživatele aktivity a předává je obslužné rutině aktivity kořenového robota. (Aktivity od uživatele se přijímají v koncovém bodu zasílání zpráv kořenového robota.)
  2. Kořenový robot používá k odeslání aktivity do dovednosti dovednost klienta HTTP. Klient získá informace o konverzaci s uživatelskými dovednostmi z definice dovednosti a z továrny ID konverzace dovedností. To zahrnuje adresu URL služby, kterou dovednost použije k odpovídání na aktivitu.
  3. Adaptér dovednosti přijímá aktivity od příjemce dovedností a předává je obslužné rutině aktivity dovednosti. (Aktivity od příjemce se přijímají na koncovém bodu zasílání zpráv robota dovedností.)
  4. Když dovednost reaguje, obslužná rutina dovedností kořenového robota obdrží aktivitu. Získá informace o konverzaci uživatele root z továrny ID konverzace dovedností. Potom přesměruje aktivitu na adaptér kořenového robota. (Aktivity z dovednosti se přijímají na koncovém bodu hostitele dovedností kořenového robota.)
  5. Adaptér kořenového robota interně vygeneruje proaktivní zprávu, která obnoví konverzaci s uživatelem.
  6. Adaptér kořenového robota odesílá všem zprávám od dovednosti uživateli.

Tyto objekty pomáhají spravovat dovednosti a směrovat provoz dovedností:

  • Dovednost služby Bot Framework popisuje informace o směrování dovednosti a lze je číst z konfiguračního souboru uživatele dovednosti.
  • Dovednost klient HTTP odesílá aktivity do dovednosti.
  • Obslužná rutina dovedností přijímá aktivity z dovednosti.
  • Továrna ID konverzace dovedností se překládá mezi odkazem na uživatelskou kořenovou konverzaci a odkazem na konverzaci s kořenovou dovedností.
  • Služba Bot Connector poskytuje ověřování mezi kanály i roboty. Pomocí objektu konfigurace ověřování můžete přidat ověřování deklarací identity do dovednosti nebo příjemce dovedností, abyste omezili, ke kterým aplikacím nebo uživatelům má přístup.

Objekty klienta dovedností i obslužné rutiny dovedností používají továrnu ID konverzace k překladu mezi konverzací, pomocí které kořenový robot komunikuje s uživatelem, a konverzací, která kořenový robot používá k interakci s dovedností.

Manifesty dovedností

Manifest dovednosti je soubor JSON, který popisuje akce, které může dovednost provádět, její vstupní a výstupní parametry, koncové body dovednosti a modely odeslání pro danou dovednost.

Informace o schématu manifestu dovedností najdete v článku o tom, jak napsat manifest dovednosti.

Komunikace mezi roboty

Je důležité porozumět určitým aspektům tohoto návrhu, nezávisle na tom, kterého robota navrhujete.

Akce dovednosti

Některé dovednosti můžou provádět více úkolů nebo akcí. Dovednost úkolů může například umožnit vytvářet, aktualizovat, zobrazovat a odstraňovat aktivity, ke kterým lze přistupovat jako diskrétní konverzace.

Odkazy na konverzace

Uživatelská kořenová konverzace se liší od konverzace s kořenovou dovedností.

Továrna PRO ID konverzace pomáhá spravovat provoz mezi dovednostmi a dovednostmi. Továrna překládá mezi ID konverzace, která má kořen s uživatelem, a ten, který má s dovedností. Jinými slovy, vygeneruje ID konverzace pro použití mezi kořenem a dovedností a obnoví původní ID kořenové konverzace uživatelem z ID kořenové konverzace.

Koordinace mezi servery

Kořenové roboty a roboti dovedností komunikují přes protokol HTTP. Instance kořenového robota, který přijímá aktivitu z dovednosti, tedy nemusí být stejnou instancí, která odeslala iniciační aktivitu; Jinými slovy, tyto dva požadavky mohou zpracovávat různé servery.

  • Před předáním aktivity dovednostem do dovednosti vždy uložte stav. Tím se zajistí, že instance, která přijímá provoz z dovednosti, může vyzvednout místo, kde předchozí instance skončila předtím, než volala dovednost.
  • Když obslužná rutina dovednosti obdrží aktivitu z dovednosti, přeloží ji do formuláře vhodného pro příjemce dovednosti a předá ji adaptéru příjemce.

Stav dovednosti a konzumenta dovedností

Dovednost spotřebitel a dovednost spravují svůj vlastní stát samostatně. Příjemce ale vytvoří ID konverzace, které používá ke komunikaci s dovedností. To může mít vliv na stav konverzace v dovednostech.

Důležité

Jak jsme uvedli dříve, když uživatel dovednosti deleguje aktivitu uživatele na dovednost, může jiná instance příjemce obdržet odpověď na dovednosti. Spotřebitel by měl vždy uložit stav konverzace bezprostředně před předáním aktivity dovednosti.

Ověřování robota k robotovi

K otestování dovednosti a příjemce dovedností v emulátoru bot Frameworku nepotřebujete ID a heslo aplikace. K nasazení dovedností do Azure se stále vyžaduje předplatné Azure.

Ověřování na úrovni služby spravuje služba Bot Connector. Architektura používá nosné tokeny a ID aplikací robota k ověření identity jednotlivých robotů. (Bot Framework používá objekt konfigurace ověřování k ověření hlavičky ověřování u příchozích požadavků.)

Důležité

To vyžaduje, aby všichni nasazení roboti (uživatel dovednosti a všechny dovednosti, které využívá), měli platné přihlašovací údaje aplikace.

Ověřování deklarací identity

Do konfigurace ověřování musíte přidat validátor deklarací identity. Deklarace identity se vyhodnocují za hlavičkou ověřování. Vyvolání chyby nebo výjimky v ověřovacím kódu pro odmítnutí požadavku.

Poznámka:

Robot provádí ověřování deklarací identity, pokud má ID a heslo aplikace; jinak se neprovádí ověřování deklarací identity.

Existuje několik důvodů, proč můžete odmítnout jinak ověřený požadavek:

  • Když by spotřebitel dovedností měl přijímat provoz pouze z dovedností, se kterými mohl zahájit konverzaci.
  • Pokud je dovednost součástí placené služby a uživatelé, kteří nejsou v databázi, by neměli mít přístup.
  • Pokud chcete omezit přístup ke dovednosti konkrétním uživatelům dovedností.

Důležité

Pokud neposkytujete validátor deklarací identity, robot při příjmu aktivity od jiného robota vygeneruje chybu nebo výjimku bez ohledu na to, jestli je robot dovedností nebo příjemcem dovedností.

Ladění konverzací dovedností

Vzhledem k tomu, že se ověřuje provoz mezi dovednostmi a uživateli dovedností, při ladění takových robotů existují další kroky.

  • Dovednost konzument a všechny dovednosti, které využívá, přímo nebo nepřímo, musí být spuštěné.
  • Pokud jsou roboti spuštěni místně a pokud některý z robotů má ID a heslo aplikace, musí mít všichni roboti platné ID a hesla.
  • Pokud jsou roboti všichni nasazeni, podívejte se , jak ladit robota z libovolného kanálu pomocí devtunnelu.
  • Pokud některé roboty běží místně a některé se nasadí, podívejte se , jak ladit dovednosti nebo příjemce dovedností.

Jinak můžete ladit dovednost uživatele nebo dovednosti podobně jako ostatní roboty. Další informace naleznete v tématu Ladění robota a ladění pomocí bot Framework Emulator.

Další informace

Z pohledu uživatele komunikuje s kořenovým robotem. Z pohledu dovednosti je příjemce dovedností kanál, přes který komunikuje s uživatelem.

  • Další informace o spotřebiteli dovedností najdete v tématu o spotřebiteli dovedností.