共用方式為


Library class

用於路由之相關對話的連結庫。 連結庫可以鏈結在一起,以啟用複雜 Bot 的開發。 UniversalBot 類別本身是構成此鏈結根目錄的連結庫。 您可以藉由建立新的連結庫實例和新增對話框,來開發可重複使用元件的連結庫,就像您將一樣。 您的連結庫應該具有對應至連結庫網站或 NPM 模組名稱的唯一名稱。 接著,Bot 只要使用 UniversalBot.library(),將元件庫實例新增至其 Bot,即可重複使用您的連結庫。 如果您的連結庫本身相依於其他連結庫,您應該使用 Library.library() 將連結庫新增至連結庫作為相依性,。 您可以將版本號碼新增至連結庫名稱,輕鬆地管理連結庫的多個版本。

若要在連結庫 Bot 中叫用對話,則必須呼叫 session.beginDialog(),其格式為 ':' 的完整對話標識符。 您通常會藉由從其模塊公開函式來啟動對話,以隱藏開發人員的這個。 因此,呼叫類似 myLib.someDialog(session, { arg: '' }); 的東西最終會在幕後呼叫 session.beginDialog('myLib:someDialog', args);

值得注意的是,對話一律會在目前的對話框中叫用,因此一旦您從連結庫的對話框內,就不需要在每個 beginDialog() 前面加上您的連結庫名稱。 只有在從某個連結庫內容到另一個連結庫內容時,才需要包含連結庫名稱前置詞。

建構函式

Library(string)

建立連結庫的新實例。

屬性

name

連結庫的唯一命名空間。 這是用來解決連結庫對話框和當地語系化提示。

RouteTypes

根據預設,從 findRoutes() findRoutes()傳回的 routeType 值。

方法

addRouteResult(IRouteResult, IRouteResult[])

從各種路由尋找方法呼叫的協助程式方法,以管理將候選路由新增至結果集。

  • 如果分數更大,則會傳回集合中目前最符合的新結果集,只包含新的相符專案。
  • 如果分數等於目前的最佳比對,則會新增至現有的集合。
  • 如果分數小於目前的最佳比對,則會忽略它。
beginDialogAction(string, string, IDialogActionOptions)

註冊全域動作,每當觸發對話框時就會啟動另一個對話框。 新的對話框會推送至堆疊,因此不會自動結束任何目前的工作。 新的對話框結束時,將會繼續目前的工作。 內建提示會在發生此情況時自動重新提示使用者,但藉由在呼叫內建提示時設定 promptAfterAction 旗標,即可停用該行為。

bestRouteResult(IRouteResult[], IDialogState[], string)

尋找在結果集中使用的最佳路由,其中包含多個模棱兩可的路由。 將會使用下列釐清策略:

  1. :自定義路由類型是最高優先順序,而且會優先使用。 這可讓開發人員以非常強大的方式覆寫 Bot 內的路由。
  2. ActiveDialog:使用中的對話框是下一個最高優先順序。
  3. StackAction:堆疊動作是下一個最高優先順序,且會傳回具有最深層堆棧位置的動作。
  4. GlobalAction:全域動作是最低優先順序。 如果 dialogStack 在堆疊最深的連結庫動作中已過去,則會受到青睞。 否則會傳回第一個 。
clone(Library, string)

傳回現有連結庫的複本。

customAction(IDialogActionOptions)

註冊自定義全域動作,以在觸發時呼叫傳入 onSelectAction 處理程式。

dialog(string, Dialog | IDialogWaterfallStep[] | IDialogWaterfallStep, boolean)

從連結庫註冊或傳回對話框。

endConversationAction(string, TextOrMessageType, ICancelActionOptions)

註冊全域動作,以在觸發時結束與使用者的交談。

findActiveDialogRoutes(IRecognizeContext, (err: Error, routes: IRouteResult[]) => void, IDialogState[])

取得作用中對話框的信賴度,它瞭解目前的訊息。 對話框必須是目前連結庫的成員,否則會傳回0.0的分數。

findDialog(string, string)

搜尋連結庫及其所有相依性中是否有特定對話框。 如果找到,則傳回對話框,否則傳回 null。

findGlobalActionRoutes(IRecognizeContext, (err: Error, routes: IRouteResult[]) => void)

搜尋連結庫,以查看是否已觸發任何全域動作。

findRoutes(IRecognizeContext, (err: Error, routes: IRouteResult[]) => void)

搜尋候選路由以處理目前的訊息。 若要實際起始訊息的處理,您應該呼叫 selectRoute() 其中一個傳回的結果。 您可以使用 onFindRoute() 覆寫預設搜尋邏輯,而且只會搜尋目前的連結庫,因此您應該分別呼叫階層內每個連結庫 findRoutes()

findStackActionRoutes(IRecognizeContext, (err: Error, routes: IRouteResult[]) => void, IDialogState[])

搜尋工作階段對話框堆疊,以查看是否已觸發任何動作。

forEachDialog((dialog: Dialog, id: string) => void)

列舉所有連結庫對話框。

forEachLibrary((library: Library) => void)

列舉所有連結庫子連結庫。 呼叫端應該採取適當的步驟,以避免列舉階層時循環參考。 在大部分情況下,呼叫 libraryList() 是較佳的選擇,因為它已經包含可避免迴圈的邏輯。

library(Library | string)

註冊或傳回連結庫相依性。

libraryList(boolean)

傳回階層內唯一連結庫的清單。 應該在連結庫階層的根目錄上呼叫,並避免在兩個子連結庫參考相同的相依連結庫時所建立的迴圈。

localePath(string)

取得或設定連結庫 「/locale/」 資料夾的路徑,其中包含其當地語系化提示。 連結庫的提示應該儲存在此路徑下的 “/locale/<IETF_TAG>/.json” 檔案中,其中 “<IETF_TAG>” 代表地區設定的 2-3 位數語言 tage,而 “” 是符合連結庫命名空間的檔名。

onFindRoutes(IFindRoutesHandler)

以自定義實作取代 findRoutes() 預設路由搜尋邏輯。

onSelectRoute(ISelectRouteHandler)

以自定義實作取代 selectRoute() 的預設邏輯。

recognize(IRecognizeContext, (err: Error, result: IIntentRecognizerResult) => void)

嘗試使用連結庫辨識器,比對用戶文字語句與意圖。 如需詳細資訊,請參閱 IIntentRecognizer.recognize()

recognizer(IIntentRecognizer)

將新的辨識器外掛程式新增至連結庫。

selectActiveDialogRoute(Session, IRouteResult, IDialogState[])

將目前訊息路由傳送至使用中的對話框。

selectGlobalActionRoute(Session, IRouteResult, IDialogState[])

將目前訊息路由傳送至觸發的全域動作。

selectRoute(Session, IRouteResult)

使用選取的路由觸發目前訊息的處理。 您可以使用 onSelectRoute()覆寫默認邏輯。

selectStackActionRoute(Session, IRouteResult, IDialogState[])

將目前的訊息路由傳送至觸發的堆疊動作。

建構函式詳細資料

Library(string)

建立連結庫的新實例。

new Library(name: string)

參數

name

string

連結庫的唯一命名空間。

屬性詳細資料

name

連結庫的唯一命名空間。 這是用來解決連結庫對話框和當地語系化提示。

name: string

屬性值

string

RouteTypes

根據預設,從 findRoutes() findRoutes()傳回的 routeType 值。

static RouteTypes: Object

屬性值

Object

方法詳細資料

addRouteResult(IRouteResult, IRouteResult[])

從各種路由尋找方法呼叫的協助程式方法,以管理將候選路由新增至結果集。

  • 如果分數更大,則會傳回集合中目前最符合的新結果集,只包含新的相符專案。
  • 如果分數等於目前的最佳比對,則會新增至現有的集合。
  • 如果分數小於目前的最佳比對,則會忽略它。
static function addRouteResult(route: IRouteResult, current?: IRouteResult[])

參數

route
IRouteResult

要新增至集合的候選路由。

current

IRouteResult[]

(選擇性) 結果集也新增路由。 如果遺失,則會傳回只傳迴路由的新集合。

傳回

beginDialogAction(string, string, IDialogActionOptions)

註冊全域動作,每當觸發對話框時就會啟動另一個對話框。 新的對話框會推送至堆疊,因此不會自動結束任何目前的工作。 新的對話框結束時,將會繼續目前的工作。 內建提示會在發生此情況時自動重新提示使用者,但藉由在呼叫內建提示時設定 promptAfterAction 旗標,即可停用該行為。

function beginDialogAction(name: string, id: string, options?: IDialogActionOptions)

參數

name

string

要指派動作的唯一名稱。

id

string

要啟動之對話框的識別碼。

options
IDialogActionOptions

(選擇性) 用來設定動作的選項。 如果指定 符合,動作會接聽使用者說出觸發動作的單字或片語,否則動作必須使用 CardAction.dialogAction() 系結至按鈕以觸發動作。 您也可以使用 dialogArgs,將其他參數傳遞至正在啟動的對話方塊。

傳回

bestRouteResult(IRouteResult[], IDialogState[], string)

尋找在結果集中使用的最佳路由,其中包含多個模棱兩可的路由。 將會使用下列釐清策略:

  1. :自定義路由類型是最高優先順序,而且會優先使用。 這可讓開發人員以非常強大的方式覆寫 Bot 內的路由。
  2. ActiveDialog:使用中的對話框是下一個最高優先順序。
  3. StackAction:堆疊動作是下一個最高優先順序,且會傳回具有最深層堆棧位置的動作。
  4. GlobalAction:全域動作是最低優先順序。 如果 dialogStack 在堆疊最深的連結庫動作中已過去,則會受到青睞。 否則會傳回第一個 。
static function bestRouteResult(routes: IRouteResult[], dialogStack?: IDialogState[], rootLibraryName?: string)

參數

routes

IRouteResult[]

要篩選的候選路由陣列。

dialogStack

IDialogState[]

(選擇性) 對話框堆疊,用來判斷要偏好哪些連結庫全域動作。

rootLibraryName

string

(選擇性) 連結庫命名空間在釐清全域動作時偏好,而且堆疊上沒有對話框。

傳回

clone(Library, string)

傳回現有連結庫的複本。

function clone(copyTo?: Library, newName?: string)

參數

copyTo
Library

(選擇性) 實例,將目前的 物件複製到 。 如果遺失新的實例,將會建立。

newName

string

(選擇性)如果指定傳回的複本將會重新命名為新的名稱。

傳回

customAction(IDialogActionOptions)

註冊自定義全域動作,以在觸發時呼叫傳入 onSelectAction 處理程式。

function customAction(options: IDialogActionOptions)

參數

options
IDialogActionOptions

用來設定動作的選項。 如果指定 符合,動作會接聽使用者說出觸發動作的單字或片語。 您可以使用 onFindAction提供自定義比對邏輯。

傳回

dialog(string, Dialog | IDialogWaterfallStep[] | IDialogWaterfallStep, boolean)

從連結庫註冊或傳回對話框。

function dialog(id: string, dialog?: Dialog | IDialogWaterfallStep[] | IDialogWaterfallStep, replace?: boolean)

參數

id

string

要註冊或擷取之對話框的唯一標識碼。

dialog

Dialog | IDialogWaterfallStep[] | IDialogWaterfallStep

(選擇性) 對話框或瀑布式登錄。

  • 對話框:{Dialog} - 要新增的對話框。
  • 對話框:{IDialogWaterfallStep[]} - 要執行的步驟瀑布。 如需詳細資訊,請參閱 IDialogWaterfallStep
  • 對話框:{IDialogWaterfallStep} - 單一步驟瀑布圖。 呼叫內建提示或啟動新的對話框會導致目前對話框在子提示/對話框完成時結束。
replace

boolean

(選擇性)如果為 true,則對話框應該在已註冊時取代現有的對話。

傳回

endConversationAction(string, TextOrMessageType, ICancelActionOptions)

註冊全域動作,以在觸發時結束與使用者的交談。

function endConversationAction(name: string, msg?: TextOrMessageType, options?: ICancelActionOptions)

參數

name

string

要指派動作的唯一名稱。

msg
TextOrMessageType

(選擇性) 訊息,在結束交談之前傳送使用者。

options
ICancelActionOptions

(選擇性) 用來設定動作的選項。 如果指定 符合,動作會接聽使用者說出觸發動作的單字或片語,否則動作必須使用 CardAction.dialogAction() 系結至按鈕以觸發動作。

傳回

findActiveDialogRoutes(IRecognizeContext, (err: Error, routes: IRouteResult[]) => void, IDialogState[])

取得作用中對話框的信賴度,它瞭解目前的訊息。 對話框必須是目前連結庫的成員,否則會傳回0.0的分數。

function findActiveDialogRoutes(context: IRecognizeContext, callback: (err: Error, routes: IRouteResult[]) => void, dialogStack?: IDialogState[])

參數

context
IRecognizeContext

目前交談的唯讀辨識器內容。

callback

(err: Error, routes: IRouteResult[]) => void

應該使用找到的路由叫用的函式。

dialogStack

IDialogState[]

(選擇性) 對話框堆疊以搜尋。 默認行為是搜尋目前對話堆疊的會話。

findDialog(string, string)

搜尋連結庫及其所有相依性中是否有特定對話框。 如果找到,則傳回對話框,否則傳回 null。

function findDialog(libName: string, dialogId: string)

參數

libName

string

包含對話框的連結庫名稱。

dialogId

string

連結庫內對話框的唯一標識符。

傳回

findGlobalActionRoutes(IRecognizeContext, (err: Error, routes: IRouteResult[]) => void)

搜尋連結庫,以查看是否已觸發任何全域動作。

function findGlobalActionRoutes(context: IRecognizeContext, callback: (err: Error, routes: IRouteResult[]) => void)

參數

context
IRecognizeContext

目前交談的唯讀辨識器內容。

callback

(err: Error, routes: IRouteResult[]) => void

應該使用找到的路由叫用的函式。

findRoutes(IRecognizeContext, (err: Error, routes: IRouteResult[]) => void)

搜尋候選路由以處理目前的訊息。 若要實際起始訊息的處理,您應該呼叫 selectRoute() 其中一個傳回的結果。 您可以使用 onFindRoute() 覆寫預設搜尋邏輯,而且只會搜尋目前的連結庫,因此您應該分別呼叫階層內每個連結庫 findRoutes()

function findRoutes(context: IRecognizeContext, callback: (err: Error, routes: IRouteResult[]) => void)

參數

context
IRecognizeContext

目前交談的唯讀辨識器內容。

callback

(err: Error, routes: IRouteResult[]) => void

應該使用找到的路由叫用的函式。

findStackActionRoutes(IRecognizeContext, (err: Error, routes: IRouteResult[]) => void, IDialogState[])

搜尋工作階段對話框堆疊,以查看是否已觸發任何動作。

function findStackActionRoutes(context: IRecognizeContext, callback: (err: Error, routes: IRouteResult[]) => void, dialogStack?: IDialogState[])

參數

context
IRecognizeContext

目前交談的唯讀辨識器內容。

callback

(err: Error, routes: IRouteResult[]) => void

應該使用找到的路由叫用的函式。

dialogStack

IDialogState[]

(選擇性) 對話框堆疊以搜尋。 默認行為是搜尋目前對話堆疊的會話。

forEachDialog((dialog: Dialog, id: string) => void)

列舉所有連結庫對話框。

function forEachDialog(callback: (dialog: Dialog, id: string) => void)

參數

callback

(dialog: Dialog, id: string) => void

反覆運算器函式,以使用每個對話框呼叫。

forEachLibrary((library: Library) => void)

列舉所有連結庫子連結庫。 呼叫端應該採取適當的步驟,以避免列舉階層時循環參考。 在大部分情況下,呼叫 libraryList() 是較佳的選擇,因為它已經包含可避免迴圈的邏輯。

function forEachLibrary(callback: (library: Library) => void)

參數

callback

(library: Library) => void

反覆運算器函式,以與每個子連結庫一起呼叫。

library(Library | string)

註冊或傳回連結庫相依性。

function library(lib: Library | string)

參數

lib

Library | string

  • 連結庫:{Library} - 要註冊為相依性的連結庫。
  • 連結庫:{string} - 要查閱的連結庫唯一名稱。 也會搜尋所有相依性。

傳回

libraryList(boolean)

傳回階層內唯一連結庫的清單。 應該在連結庫階層的根目錄上呼叫,並避免在兩個子連結庫參考相同的相依連結庫時所建立的迴圈。

function libraryList(reverse?: boolean)

參數

reverse

boolean

(選擇性)如果 true 清單會從樹葉產生,表示根庫最後會列出。 默認值為 false,表示它會從根目錄產生,而根庫會先列出。

傳回

localePath(string)

取得或設定連結庫 「/locale/」 資料夾的路徑,其中包含其當地語系化提示。 連結庫的提示應該儲存在此路徑下的 “/locale/<IETF_TAG>/.json” 檔案中,其中 “<IETF_TAG>” 代表地區設定的 2-3 位數語言 tage,而 “” 是符合連結庫命名空間的檔名。

function localePath(path?: string)

參數

path

string

(選擇性) 連結庫 「/locale/」 資料夾的路徑。 如果指定,這會更新連結庫路徑。

傳回

string

onFindRoutes(IFindRoutesHandler)

以自定義實作取代 findRoutes() 預設路由搜尋邏輯。

function onFindRoutes(handler: IFindRoutesHandler)

參數

handler
IFindRoutesHandler

每當針對連結庫呼叫 findRoutes() 時叫用的函式。

onSelectRoute(ISelectRouteHandler)

以自定義實作取代 selectRoute() 的預設邏輯。

function onSelectRoute(handler: ISelectRouteHandler)

參數

handler
ISelectRouteHandler

呼叫 selectRoute() 時叫用的函式。

recognize(IRecognizeContext, (err: Error, result: IIntentRecognizerResult) => void)

嘗試使用連結庫辨識器,比對用戶文字語句與意圖。 如需詳細資訊,請參閱 IIntentRecognizer.recognize()

function recognize(context: IRecognizeContext, callback: (err: Error, result: IIntentRecognizerResult) => void)

參數

context
IRecognizeContext

目前交談的唯讀辨識器內容。

callback

(err: Error, result: IIntentRecognizerResult) => void

完成辨識時應叫用的函式。

recognizer(IIntentRecognizer)

將新的辨識器外掛程式新增至連結庫。

function recognizer(plugin: IIntentRecognizer)

參數

plugin
IIntentRecognizer

要加入的辨識器。

傳回

selectActiveDialogRoute(Session, IRouteResult, IDialogState[])

將目前訊息路由傳送至使用中的對話框。

function selectActiveDialogRoute(session: Session, route: IRouteResult, newStack?: IDialogState[])

參數

session
Session

目前交談的會話物件。

newStack

IDialogState[]

selectGlobalActionRoute(Session, IRouteResult, IDialogState[])

將目前訊息路由傳送至觸發的全域動作。

function selectGlobalActionRoute(session: Session, route: IRouteResult, newStack?: IDialogState[])

參數

session
Session

目前交談的會話物件。

route
IRouteResult

從先前呼叫 傳回給 findRoutes()findGlobalActionRoutes()的路由結果。

newStack

IDialogState[]

selectRoute(Session, IRouteResult)

使用選取的路由觸發目前訊息的處理。 您可以使用 onSelectRoute()覆寫默認邏輯。

function selectRoute(session: Session, route: IRouteResult)

參數

session
Session

目前交談的會話物件。

route
IRouteResult

從先前呼叫傳回的路由結果,findRoutes()

selectStackActionRoute(Session, IRouteResult, IDialogState[])

將目前的訊息路由傳送至觸發的堆疊動作。

function selectStackActionRoute(session: Session, route: IRouteResult, newStack?: IDialogState[])

參數

session
Session

目前交談的會話物件。

newStack

IDialogState[]