共用方式為


關於技能取用者

適用于: SDK v4

技能取用者 是可呼叫一或多個技能的 Bot。 就技能而言, 根 Bot 是使用者面向的 Bot ,也是技能取用者。

從使用者的觀點來看,根 Bot 是他們與之互動的 Bot。 從技能的觀點來看,技能取用者是與使用者通訊的通道。 (如需詳細資訊,請參閱 技能概觀

身為技能取用者,根 Bot 包含一些額外的邏輯來管理其與技能之間的流量:

  • 根目錄所使用的每個技能的組態資訊。
  • 交談識別碼處理站 ,可讓根目錄在與使用者交談之間來回切換,以及其具有技能的交談。
  • 技能用戶端 ,可將活動封裝並轉送至技能 Bot。
  • 技能處理常式 ,可從技能 Bot 接收要求和解除封裝活動。

管理技能

開始並讓單一技能執行完成,是透過對技能取用者的一些新增功能來管理。 使用多個技能或交談執行緒,可能會有更複雜的案例。

技能取用者會實作至少兩個 HTTP 端點:

  • 訊端點 會從使用者或通道接收活動。 這是所有 Bot 實作的一般傳訊端點。
  • 從技能接收活動的技能主機端點 。 這可作為回呼 URL,即技能所回復的服務 URL。 (技能取用者需要配對程式碼,以使用技能處理常式從技能接收 HTTP 方法要求。

技能描述

針對每個技能,將 Bot Framework 技能 物件新增 至技能取用者的組態檔。 每個識別碼、應用程式識別碼,以及技能的端點。

屬性 說明
識別碼 技能取用者特有的技能識別碼或金鑰。
應用程式識別碼 appId在 Azure 上註冊技能時,指派給 Bot 資源的 。
技能端點 技能的傳訊端點。 這是取用者用來與技能通訊的 URL。

技能用戶端和技能處理常式

技能取用者會使用技能用戶端將活動傳送至技能。 用戶端:

  • 接受活動以從使用者或取用者產生傳送至技能。
  • 設定活動上傳送至技能的服務 URL 給取用者的技能主機端點。
  • 將原始交談參考取代為取用者技能交談的參考。
  • 新增 Bot 對 Bot 驗證權杖。
  • 將更新的活動傳送至技能。

技能取用者會使用技能處理常式從技能接收活動。 處理常式:

  • 處理通道服務 REST API 方法。
  • 強制執行驗證和宣告驗證。
  • 擷取原始交談參考。
  • 產生取用者配接器的活動。 此活動會發出技能已完成或要轉送給使用者的活動訊號。

直接管理技能

您必須將邏輯新增至技能取用者,以追蹤任何作用中的技能。 由取用者決定如何管理一般技能、是否可以平行維護多個作用中技能等等。 要考慮的特定案例包括:

  • 起始新的取用者技能交談。 (這會與特定的取用者-使用者交談相關聯。
    • 若要將參數傳遞至技能,請將 初始活動中的 value 屬性設定為技能。
  • 繼續現有的取用者技能交談。
  • endOfConversation 識技能中的活動,表示取用者技能交談的結束。
    • 若要從技能擷取任何傳回值,請檢查活動的 value 屬性。
    • 若要檢查技能結束的原因,請檢查活動的 程式碼 參數,這可能表示技能發生錯誤。
  • 藉由將活動傳送 endOfConversation 至技能,從取用者取消技能。

瞭解如何 為直接管理技能的取用者實作技能 取用者。

使用技能對話方塊管理技能

如果您使用 對話方塊程式庫 ,您可以使用 技能對話方塊 來管理技能。 雖然技能對話是作用中的對話,但它會將活動轉送至相關聯的技能。

  • 當您建立技能對話時,請使用 對話方塊選項 參數來提供對話管理技能所需的所有資訊,例如取用者的應用程式識別碼和回呼 URL、要使用的交談識別碼處理站、技能的屬性等等。
    • 如果您想要以對話方式管理多個技能,您必須為每個技能建立個別的技能對話方塊。
    • 您通常會將技能對話方塊新增至元件對話方塊。
  • 若要啟動技能對話,請使用對話內容的 begin 方法,並提供技能對話的識別碼。 使用 options 參數來提供取用者將傳送為技能的第一個活動的活動。
  • 您可以取消或中斷技能對話,就像任何其他對話一樣。 如需範例,請參閱如何處理 使用者中斷

瞭解如何 使用對話方塊來取用使用對話方塊來管理技能 的取用者。

使用預期回復的傳遞模式

Bot 和技能會透過 HTTPS 使用業界標準的 REST 和 JSON 進行通訊。 一般活動處理流程會在根 Bot 從其 傳訊端點 的通道收到貼文時啟動。 接著,根 Bot 會將活動傳送至技能進行處理。 技能的回復會張貼回根 Bot 的 技能主機端點 ,而不是其傳訊端點。 最後,系統會進一步處理回復,或由根 Bot 張貼回信道。 藉由變更傳送至技能的活動傳遞模式 ,即可改變 此一般流程。 如果 傳遞模式 設定為 「ExpectReplies」,技能將不會回傳至技能主機端點。 相反地,所有回復活動都會序列化為回應主體。 接著,根 Bot 會逐一查看這些活動,並處理它們,類似于技能主機端點處理它們的方式。

如需詳細資訊,請參閱 活動規格中的傳遞模式