關於技能取用者

適用于: SDK v4

「技能取用者」是可呼叫一或多項技能的 Bot。 就技能而言,「根 Bot」是使用者對應的 Bot,也是技能取用者。

從使用者的觀點來看,根目錄 Bot 是與其互動的 Bot。 從技能的觀點來看,技能取用者是與使用者通訊的通道。 (如需詳細資訊,請參閱技能概觀關於技能 Bot。)

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

  • 根所使用的每項技能組態資訊。
  • 「交談識別碼中心」可讓根在與使用者及技能的交談之間來回切換。
  • 「技能用戶端」可以將活動封裝和轉送至技能 Bot。
  • 「技能處理常式」可接收來自技能 Bot 的要求和解除封裝活動。

管理技能

啟動並讓單一技能執行完成,只需要對技能取用者進行一些新增作業。 若使用多個技能或交談執行緒,則可能會有更複雜的案例。

技能取用者會至少執行兩個 HTTP 端點:

  • 訊息端點 會接收來自使用者或通道的活動。 這是所有 bot 都會執行的一般訊息端點。
  • 用於從技能接收活動的 技能主機端點 。 這會作為回呼 URL,這是技能回復的服務 URL。 (技能取用者必須將從技能接收 HTTP 方法要求的程式碼與技能處理常式進行配對。 )

技能描述

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

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

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

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

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

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

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

直接管理技能

您必須將邏輯新增至技能取用者,才能追蹤任何有效的技能。 這取決於取用者通常如何管理技能、是否可以平行維護多項作用中技能等等。 需要考慮的特定案例包括:

  • 起始新的取用者技能交談。 (這會與特定的取用者使用者交談相關聯)。
    • 若要將參數傳遞至技能,請將初始活動中的「值」屬性設定為技能。
  • 繼續現有的取用者技能交談。
  • 辨識來自技能的 endOfConversation 活動,以通知取用者技能交談結束。
    • 若要取出技能的所有傳回值,請檢查活動的「值」屬性。
    • 若要檢查技能的結束原因,請檢查活動的 code 參數,這裡可能會指出技能發生錯誤。
  • endOfConversation 活動傳送至技能,以取消取用者的技能。

了解如何實作技能取用者,讓取用者可以直接管理技能。

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

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

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

了解如何使用對話方塊來取用技能,讓取用者可使用對話方塊來管理技能。

使用預期回復的傳遞模式

Bot 和技能使用業界標準的 REST 和 JSON over HTTPS 進行通訊。 一般活動處理流程會在根 bot 從其 訊息端點 接收來自通道的 post 時開始。 然後,根 bot 會將活動傳送至技能以進行處理。 技能的回復會回傳至根 bot 的 技能主機端點,而不是其訊息端點。 最後,系統會進一步處理回復,或透過根 bot 將回復回傳給通道。 藉由變更傳送至技能的活動 傳遞模式 ,可以改變這個一般流程。 如果 傳遞模式 設定為 "ExpectReplies",技能將不會回傳至技能主機端點。 相反地,所有回復活動都會序列化為回應的主體。 然後,根 bot 會逐一查看這些活動,以類似于技能主機端點處理這些活動的方式進行處理。

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