BotFrameworkAdapter class

警告

现已弃用此 API。

Use CloudAdapter instead.

Extends

BotAdapter

构造函数

BotFrameworkAdapter(Partial<BotFrameworkAdapterSettings>)

创建 BotFrameworkAdapter 类的新实例。

属性

isStreamingConnectionOpen

在流式处理上下文中使用,用于检查流连接是否仍然打开,以便机器人发送活动。

TokenApiClientCredentialsKey

继承属性

BotIdentityKey
ConnectorClientKey
OAuthScopeKey
onTurnError

方法

continueConversation(Partial<ConversationReference>, (context: TurnContext) => Promise<void>)

可能经过一段时间后,异步恢复与用户的对话。

continueConversation(Partial<ConversationReference>, string, (context: TurnContext) => Promise<void>)

可能经过一段时间后,异步恢复与用户的对话。

createConnectorClient(string)

创建连接器客户端。

createConnectorClientWithIdentity(string, ClaimsIdentity)

使用 ClaimsIdentity 创建 ConnectorClient。

createConnectorClientWithIdentity(string, ClaimsIdentity, string)

创建具有 ClaimsIdentity 和显式受众的 ConnectorClient。

createConversation(Partial<ConversationReference>, (context: TurnContext) => Promise<void>)

异步创建并启动与通道上的用户的对话。

createConversation(Partial<ConversationReference>, Partial<ConversationParameters>, (context: TurnContext) => Promise<void>)

异步创建并启动与通道上的用户的对话。

deleteActivity(TurnContext, Partial<ConversationReference>)

异步删除现有活动。 此接口支持框架,不应直接为代码调用。 使用 TurnContext.deleteActivity 从机器人代码中删除活动。

deleteConversationMember(TurnContext, string)

从当前会话中异步删除成员。

emulateOAuthCards(TurnContext | string, boolean)

异步发送通道的模拟 OAuth 卡。 此方法支持 框架,不应直接为代码调用此方法。

exchangeToken(TurnContext, string, string, TokenExchangeRequest, CoreAppCredentials)

异步执行令牌交换操作,例如单一登录。

getAadTokens(TurnContext, string, string[])

从令牌服务器异步注销用户。

getAadTokens(TurnContext, string, string[], CoreAppCredentials)
getActivityMembers(TurnContext, string)

异步列出给定活动的成员。

getConversationMembers(TurnContext)

异步列出当前对话的成员。

getConversations(TurnContext | string, string)

对于指定的通道,异步获取此机器人参与的对话页。

getSignInLink(TurnContext, string, AppCredentials, string, string)

异步从令牌服务器获取登录链接,该链接可以作为 SigninCard 的一部分发送。

getSignInLink(TurnContext, string, CoreAppCredentials, string, string)
getSignInResource(TurnContext, string, string, string, CoreAppCredentials)

异步获取要发送给用户进行登录的原始登录资源。

getTokenStatus(TurnContext, string, string)

为给定用户异步检索每个已配置连接的令牌状态。

getTokenStatus(TurnContext, string, string, CoreAppCredentials)
getUserToken(TurnContext, string, string)

异步尝试检索登录流中的用户的令牌。

getUserToken(TurnContext, string, string, CoreAppCredentials)
process(Request, INodeSocket, INodeBuffer, (context: TurnContext) => Promise<void>)

通过将逻辑函数应用于每个流式处理请求来处理 Web 套接字连接。

process(Request, Response, (context: TurnContext) => Promise<void>)

通过应用逻辑函数处理 Web 请求。

processActivity(WebRequest, WebResponse, (context: TurnContext) => Promise<any>)

异步创建轮次上下文并为传入活动运行中间件管道。

processActivityDirect(Activity, (context: TurnContext) => Promise<any>)

异步创建轮次上下文并为传入活动运行中间件管道。

processRequest(IReceiveRequest)

检查请求的有效性,并尝试将其映射到正确的虚拟终结点,然后生成并返回响应(如果适用)。

sendActivities(TurnContext, Partial<Activity>[])

以异步方式将一组传出活动发送到通道服务器。 此方法支持框架,不打算直接为代码调用此方法。 从机器人代码使用轮次上下文的 sendActivitysendActivities 方法。

signOutUser(TurnContext, string, string)

从令牌服务器异步注销用户。

signOutUser(TurnContext, string, string, CoreAppCredentials)
updateActivity(TurnContext, Partial<Activity>)

以异步方式将以前的活动替换为更新的版本。 此接口支持框架,不应直接为代码调用此接口。 使用 TurnContext.updateActivity 从机器人代码更新活动。

useNamedPipe((context: TurnContext) => Promise<any>, string, number, () => void)

将处理程序连接到命名管道服务器,并开始侦听传入的请求。

useWebSocket(WebRequest, INodeSocket, INodeBuffer, (context: TurnContext) => Promise<any>)

处理初始请求以通过流式处理服务器建立长期连接。

继承的方法

continueConversationAsync(ClaimsIdentity, Partial<ConversationReference>, (context: TurnContext) => Promise<void>)

可能经过一段时间后,异步恢复与用户的对话。

continueConversationAsync(ClaimsIdentity, Partial<ConversationReference>, string, (context: TurnContext) => Promise<void>)

可能经过一段时间后,异步恢复与用户的对话。

continueConversationAsync(string, Partial<ConversationReference>, (context: TurnContext) => Promise<void>)

可能经过一段时间后,异步恢复与用户的对话。

createConversationAsync(string, string, string, string, ConversationParameters, (context: TurnContext) => Promise<void>)

在指定通道上创建会话。

use((context: TurnContext, next: () => Promise<void>) => Promise<void> | Middleware[])

将中间件添加到适配器的管道。

构造函数详细信息

BotFrameworkAdapter(Partial<BotFrameworkAdapterSettings>)

创建 BotFrameworkAdapter 类的新实例。

new BotFrameworkAdapter(settings?: Partial<BotFrameworkAdapterSettings>)

参数

settings

Partial<BotFrameworkAdapterSettings>

可选。 要用于此适配器实例的设置。

注解

settings如果参数不包括 channelServiceopenIdMetadata 值,则构造函数会检查进程的环境变量中是否有这些值。 当在 Azure 上预配机器人时,可以设置这些值,如果需要,机器人才能在全球云或国家云中正常工作。

BotFrameworkAdapterSettings 类定义可用的适配器设置。

属性详细信息

isStreamingConnectionOpen

在流式处理上下文中使用,用于检查流连接是否仍然打开,以便机器人发送活动。

boolean isStreamingConnectionOpen

属性值

boolean

如果流式连接处于打开状态,则为 True,否则为 false。

TokenApiClientCredentialsKey

TokenApiClientCredentialsKey: symbol

属性值

symbol

继承属性详细信息

BotIdentityKey

BotIdentityKey: symbol

属性值

symbol

继承自 BotAdapter.BotIdentityKey

ConnectorClientKey

ConnectorClientKey: symbol

属性值

symbol

继承自 BotAdapter.ConnectorClientKey

OAuthScopeKey

OAuthScopeKey: symbol

属性值

symbol

继承自 BotAdapter.OAuthScopeKey

onTurnError

onTurnError: (context: TurnContext, error: Error) => Promise<void>

属性值

(context: TurnContext, error: Error) => Promise<void>

继承自 BotAdapter.onTurnError

方法详细信息

continueConversation(Partial<ConversationReference>, (context: TurnContext) => Promise<void>)

可能经过一段时间后,异步恢复与用户的对话。

function continueConversation(reference: Partial<ConversationReference>, logic: (context: TurnContext) => Promise<void>): Promise<void>

参数

reference

Partial<ConversationReference>

对要继续的对话的引用。

logic

(context: TurnContext) => Promise<void>

适配器中间件运行后要调用的异步方法。

返回

Promise<void>

注解

这通常称为 主动通知,机器人可以主动向对话或用户发送消息,而无需等待传入消息。 例如,机器人可以使用此方法向用户发送通知或优惠券。

发送主动消息:

  1. 从传入活动保存 ConversationReference 的副本。 例如,可以将会话引用存储在数据库中。
  2. 调用此方法以在以后恢复会话。 使用保存的引用访问会话。
  3. 成功后,适配器将生成 TurnContext 对象并调用 logic 函数处理程序。 logic使用 函数发送主动消息。

若要从对话中的任何传入活动复制引用,请使用 TurnContext.getConversationReference 方法。

此方法类似于 processActivity 方法。 适配器创建 一个 TurnContext, 并在调用处理程序之前通过其中间件路由它 logic 。 创建的活动的类型为“event”,名称为“continueConversation”。

例如:

server.post('/api/notifyUser', async (req, res) => {
   // Lookup previously saved conversation reference.
   const reference = await findReference(req.body.refId);

   // Proactively notify the user.
   if (reference) {
      await adapter.continueConversation(reference, async (context) => {
         await context.sendActivity(req.body.message);
      });
      res.send(200);
   } else {
      res.send(404);
   }
});

continueConversation(Partial<ConversationReference>, string, (context: TurnContext) => Promise<void>)

可能经过一段时间后,异步恢复与用户的对话。

function continueConversation(reference: Partial<ConversationReference>, oAuthScope: string, logic: (context: TurnContext) => Promise<void>): Promise<void>

参数

reference

Partial<ConversationReference>

(xref:botframework-schema。ConversationReference) 对话继续。

oAuthScope

string

任何已发送活动的预定接收方或要调用以继续会话的函数。

logic

(context: TurnContext) => Promise<void>

可选。 适配器中间件运行后要调用的异步方法。

返回

Promise<void>

createConnectorClient(string)

创建连接器客户端。

function createConnectorClient(serviceUrl: string): ConnectorClient

参数

serviceUrl

string

客户端的服务 URL。

返回

ConnectorClient

ConnectorClient 实例。

注解

在派生类中重写此项,以创建用于单元测试的模拟连接器客户端。

createConnectorClientWithIdentity(string, ClaimsIdentity)

使用 ClaimsIdentity 创建 ConnectorClient。

function createConnectorClientWithIdentity(serviceUrl: string, identity: ClaimsIdentity): Promise<ConnectorClient>

参数

serviceUrl

string

客户端的服务 URL。

identity

ClaimsIdentity

ClaimsIdentity

返回

Promise<ConnectorClient>

注解

如果 ClaimsIdentity 包含 Skills 请求的声明,请创建与 Skills 一起使用的 ConnectorClient。 从 ClaimsIdentity 或实例的凭据属性派生正确的受众。

createConnectorClientWithIdentity(string, ClaimsIdentity, string)

创建具有 ClaimsIdentity 和显式受众的 ConnectorClient。

function createConnectorClientWithIdentity(serviceUrl: string, identity: ClaimsIdentity, audience: string): Promise<ConnectorClient>

参数

serviceUrl

string

客户端的服务 URL。

identity

ClaimsIdentity

ClaimsIdentity

audience

string

ConnectorClient 消息的收件人。 通常为 Bot Framework 通道服务或其他机器人的 AppId。

返回

Promise<ConnectorClient>

注解

如果剪裁的受众不是非零长度字符串,则访问群体将派生自 ClaimsIdentity 或实例的凭据属性。

createConversation(Partial<ConversationReference>, (context: TurnContext) => Promise<void>)

异步创建并启动与通道上的用户的对话。

function createConversation(reference: Partial<ConversationReference>, logic: (context: TurnContext) => Promise<void>): Promise<void>

参数

reference

Partial<ConversationReference>

要创建的会话的引用。

logic

(context: TurnContext) => Promise<void>

适配器中间件运行后要调用的异步方法。

返回

Promise<void>

表示异步操作的承诺

createConversation(Partial<ConversationReference>, Partial<ConversationParameters>, (context: TurnContext) => Promise<void>)

异步创建并启动与通道上的用户的对话。

function createConversation(reference: Partial<ConversationReference>, parameters: Partial<ConversationParameters>, logic: (context: TurnContext) => Promise<void>): Promise<void>

参数

reference

Partial<ConversationReference>

要创建的会话的引用。

parameters

Partial<ConversationParameters>

创建聊天时使用的参数

logic

(context: TurnContext) => Promise<void>

适配器中间件运行后要调用的异步方法。

返回

Promise<void>

表示异步操作的承诺

deleteActivity(TurnContext, Partial<ConversationReference>)

异步删除现有活动。 此接口支持框架,不应直接为代码调用。 使用 TurnContext.deleteActivity 从机器人代码中删除活动。

function deleteActivity(context: TurnContext, reference: Partial<ConversationReference>): Promise<void>

参数

context

TurnContext

轮次的上下文对象。

reference

Partial<ConversationReference>

要删除的活动的对话参考信息。

返回

Promise<void>

注解

并非所有通道都支持此操作。 对于没有的通道,此调用可能会引发异常。

deleteConversationMember(TurnContext, string)

从当前会话中异步删除成员。

function deleteConversationMember(context: TurnContext, memberId: string): Promise<void>

参数

context

TurnContext

轮次的上下文对象。

memberId

string

要从对话中删除的成员的 ID。

返回

Promise<void>

注解

从对话中删除成员的身份信息。

并非所有通道都支持此操作。 对于没有的通道,此调用可能会引发异常。

emulateOAuthCards(TurnContext | string, boolean)

异步发送通道的模拟 OAuth 卡。 此方法支持 框架,不应直接为代码调用此方法。

function emulateOAuthCards(contextOrServiceUrl: TurnContext | string, emulate: boolean): Promise<void>

参数

contextOrServiceUrl

TurnContext | string

模拟器的 URL。

emulate

boolean

true 将模拟的 OAuth 卡发送到仿真器;或 false 不发送卡。

返回

Promise<void>

注解

在Bot Framework Emulator中测试机器人时,此方法可以模拟 OAuth 卡交互。

exchangeToken(TurnContext, string, string, TokenExchangeRequest, CoreAppCredentials)

异步执行令牌交换操作,例如单一登录。

function exchangeToken(context: TurnContext, connectionName: string, userId: string, tokenExchangeRequest: TokenExchangeRequest, appCredentials?: CoreAppCredentials): Promise<TokenResponse>

参数

context

TurnContext

与用户当前轮次对话的上下文。

connectionName

string

要使用的身份验证连接的名称。

userId

string

将与令牌关联的用户 ID。

tokenExchangeRequest

TokenExchangeRequest

交换请求详细信息,要交换的令牌或要交换的 URI。

appCredentials

CoreAppCredentials

可选。 适用于 OAuth 的 CoreAppCredentials。

返回

Promise<TokenResponse>

getAadTokens(TurnContext, string, string[])

从令牌服务器异步注销用户。

function getAadTokens(context: TurnContext, connectionName: string, resourceUrls: string[]): Promise<[key: string]: TokenResponse>

参数

context

TurnContext

轮次的上下文对象。

connectionName

string

要使用的身份验证连接的名称。

resourceUrls

string[]

要为其检索令牌的资源 URL 列表。

返回

Promise<[key: string]: TokenResponse>

按资源 URL 显示 TokenResponse 对象的映射。

getAadTokens(TurnContext, string, string[], CoreAppCredentials)

function getAadTokens(context: TurnContext, connectionName: string, resourceUrls: string[], oAuthAppCredentials?: CoreAppCredentials): Promise<[key: string]: TokenResponse>

参数

context

TurnContext

connectionName

string

resourceUrls

string[]

oAuthAppCredentials

CoreAppCredentials

返回

Promise<[key: string]: TokenResponse>

getActivityMembers(TurnContext, string)

异步列出给定活动的成员。

function getActivityMembers(context: TurnContext, activityId?: string): Promise<ChannelAccount[]>

参数

context

TurnContext

轮次的上下文对象。

activityId

string

可选。 要获取其成员的活动的 ID。 如果未指定,则使用当前活动 ID。

返回

Promise<ChannelAccount[]>

给定活动中涉及的用户的 ChannelAccount 对象的数组。

注解

返回给定活动中涉及的用户的 ChannelAccount 对象的数组。

这与 getConversationMembers 不同,因为它将仅返回直接参与活动的那些用户,而不是对话的所有成员。

getConversationMembers(TurnContext)

异步列出当前对话的成员。

function getConversationMembers(context: TurnContext): Promise<ChannelAccount[]>

参数

context

TurnContext

轮次的上下文对象。

返回

Promise<ChannelAccount[]>

聊天中当前涉及的所有用户的 ChannelAccount 对象的数组。

注解

返回聊天中当前涉及的所有用户的 ChannelAccount 对象的数组。

这与 getActivityMembers 不同,因为它将返回会话的所有成员,而不仅仅是直接参与特定活动的成员。

getConversations(TurnContext | string, string)

对于指定的通道,异步获取此机器人参与的对话页。

function getConversations(contextOrServiceUrl: TurnContext | string, continuationToken?: string): Promise<ConversationsResult>

参数

contextOrServiceUrl

TurnContext | string

要查询的通道服务器的 URL 或来自通道上的会话的 TurnContext 对象。

continuationToken

string

可选。 结果上一页的延续标记。 省略此参数或使用 undefined 检索结果的第一页。

返回

Promise<ConversationsResult>

一个 ConversationsResult 对象,其中包含结果页和延续标记。

注解

返回值的 conversations 属性包含 一页 ConversationMembers 对象。 每个对象的 ID 都是机器人参与此通道的会话的 ID。 可以从会话上下文外部调用此方法,因为只需要机器人的服务 URL 和凭据。

通道以页为单位批处理结果。 如果结果的 continuationToken 属性不为空,则还有更多页面需要获取。 使用返回的令牌获取下一页的结果。 contextOrServiceUrl如果 参数为 TurnContext,则从 contextOrServiceUrl检索通道服务器的 URL。活动serviceUrl

异步从令牌服务器获取登录链接,该链接可以作为 SigninCard 的一部分发送。

function getSignInLink(context: TurnContext, connectionName: string, oAuthAppCredentials?: AppCredentials, userId?: string, finalRedirect?: string): Promise<string>

参数

context

TurnContext

轮次的上下文对象。

connectionName

string

要使用的身份验证连接的名称。

oAuthAppCredentials

AppCredentials

适用于 OAuth 的 AppCredentials。

userId

string

将与令牌关联的用户 ID。

finalRedirect

string

OAuth 流将重定向到的最终 URL。

返回

Promise<string>

function getSignInLink(context: TurnContext, connectionName: string, oAuthAppCredentials?: CoreAppCredentials, userId?: string, finalRedirect?: string): Promise<string>

参数

context

TurnContext

connectionName

string

oAuthAppCredentials

CoreAppCredentials

userId

string

finalRedirect

string

返回

Promise<string>

getSignInResource(TurnContext, string, string, string, CoreAppCredentials)

异步获取要发送给用户进行登录的原始登录资源。

function getSignInResource(context: TurnContext, connectionName: string, userId?: string, finalRedirect?: string, appCredentials?: CoreAppCredentials): Promise<SignInUrlResponse>

参数

context

TurnContext

轮次的上下文对象。

connectionName

string

要使用的身份验证连接的名称。

userId

string

将与令牌关联的用户 ID。

finalRedirect

string

OAuth 流将重定向到的最终 URL。

appCredentials

CoreAppCredentials

可选。 适用于 OAuth 的 CoreAppCredentials。

返回

Promise<SignInUrlResponse>

BotSignInGetSignInResourceResponse 对象。

getTokenStatus(TurnContext, string, string)

为给定用户异步检索每个已配置连接的令牌状态。

function getTokenStatus(context: TurnContext, userId?: string, includeFilter?: string): Promise<TokenStatus[]>

参数

context

TurnContext

轮次的上下文对象。

userId

string

可选。 如果存在,则为要检索其令牌状态的用户的 ID。 否则,将使用发送当前活动的用户的 ID。

includeFilter

string

可选。 要包含的连接的逗号分隔列表。 如果存在,参数 includeFilter 会限制此方法返回的标记。

返回

Promise<TokenStatus[]>

检索到的 TokenStatus 对象。

getTokenStatus(TurnContext, string, string, CoreAppCredentials)

function getTokenStatus(context: TurnContext, userId?: string, includeFilter?: string, oAuthAppCredentials?: CoreAppCredentials): Promise<TokenStatus[]>

参数

context

TurnContext

userId

string

includeFilter

string

oAuthAppCredentials

CoreAppCredentials

返回

Promise<TokenStatus[]>

getUserToken(TurnContext, string, string)

异步尝试检索登录流中的用户的令牌。

function getUserToken(context: TurnContext, connectionName: string, magicCode?: string): Promise<TokenResponse>

参数

context

TurnContext

轮次的上下文对象。

connectionName

string

要使用的身份验证连接的名称。

magicCode

string

可选。 用户输入的验证代码。

返回

Promise<TokenResponse>

包含用户令牌的 TokenResponse 对象。

getUserToken(TurnContext, string, string, CoreAppCredentials)

function getUserToken(context: TurnContext, connectionName: string, magicCode?: string, oAuthAppCredentials?: CoreAppCredentials): Promise<TokenResponse>

参数

context

TurnContext

connectionName

string

magicCode

string

oAuthAppCredentials

CoreAppCredentials

返回

Promise<TokenResponse>

process(Request, INodeSocket, INodeBuffer, (context: TurnContext) => Promise<void>)

通过将逻辑函数应用于每个流式处理请求来处理 Web 套接字连接。

function process(req: Request, socket: INodeSocket, head: INodeBuffer, logic: (context: TurnContext) => Promise<void>): Promise<void>

参数

req
Request

传入的 HTTP 请求

socket

INodeSocket

相应的 INodeSocket

head

INodeBuffer

相应的 INodeBuffer

logic

(context: TurnContext) => Promise<void>

要应用的逻辑函数

返回

Promise<void>

表示异步操作的承诺。

process(Request, Response, (context: TurnContext) => Promise<void>)

通过应用逻辑函数处理 Web 请求。

function process(req: Request, res: Response, logic: (context: TurnContext) => Promise<void>): Promise<void>

参数

req
Request

传入的 HTTP 请求

res
Response

相应的 HTTP 响应

logic

(context: TurnContext) => Promise<void>

要应用的逻辑函数

返回

Promise<void>

表示异步操作的承诺。

processActivity(WebRequest, WebResponse, (context: TurnContext) => Promise<any>)

异步创建轮次上下文并为传入活动运行中间件管道。

function processActivity(req: WebRequest, res: WebResponse, logic: (context: TurnContext) => Promise<any>): Promise<void>

参数

req
WebRequest

Express 或 Restify 样式请求对象。

res
WebResponse

Express 或 Restify 样式响应对象。

logic

(context: TurnContext) => Promise<any>

在中间件管道末尾调用的函数。

返回

Promise<void>

注解

这是机器人接收传入消息并在对话中定义轮次的主要方式。 此方法:

  1. 分析和验证传入请求。
    • 从传入请求的正文中读取活动。 如果无法分析活动,将返回错误。
    • 使用机器人 appId 的 和 appPassword将发送方标识作为模拟器或有效的 Microsoft 服务器进行身份验证。 如果未验证发送方的身份,请求将被拒绝。
  2. 为收到的活动创建 TurnContext 对象。
    • 此对象使用 可吊销代理进行包装。
    • 此方法完成后,将吊销代理。
  3. 通过适配器的中间件管道发送轮次上下文。
  4. 将轮次上下文发送到 logic 函数。
    • 机器人此时可能会执行其他路由或处理。 返回承诺 (或提供 async 处理程序) 将导致适配器等待任何异步操作完成。
    • 函数 logic 完成后,将解析中间件设置的承诺链。

提示

如果在机器人的控制台输出中看到错误 TypeError: Cannot perform 'set' on a proxy that has been revoked ,则可能是使用了异步函数而不使用 await 关键字。 确保所有异步函数都使用 await!

中间件可能会使一个回合 短路 。 发生这种情况时,不会调用后续中间件和 logic 函数;但是,在此之前的所有中间件仍运行到完成。 有关中间件管道的详细信息,请参阅 机器人的工作原理中间件 文章。 使用适配器的 use 方法将中间件添加到适配器。

例如:

server.post('/api/messages', (req, res) => {
   // Route received request to adapter for processing
   adapter.processActivity(req, res, async (context) => {
       // Process any messages received
       if (context.activity.type === ActivityTypes.Message) {
           await context.sendActivity(`Hello World`);
       }
   });
});

processActivityDirect(Activity, (context: TurnContext) => Promise<any>)

异步创建轮次上下文并为传入活动运行中间件管道。

function processActivityDirect(activity: Activity, logic: (context: TurnContext) => Promise<any>): Promise<void>

参数

activity

Activity

要处理的活动。

logic

(context: TurnContext) => Promise<any>

在中间件管道末尾调用的函数。

返回

Promise<void>

注解

这是机器人接收传入消息并在对话中定义轮次的主要方式。 此方法:

  1. 为收到的活动创建 TurnContext 对象。
    • 此对象使用 可吊销代理进行包装。
    • 此方法完成后,将吊销代理。
  2. 通过适配器的中间件管道发送轮次上下文。
  3. 将轮次上下文发送到 logic 函数。
    • 机器人此时可能会执行其他路由或处理。 返回承诺 (或提供 async 处理程序) 将导致适配器等待任何异步操作完成。
    • 函数 logic 完成后,将解析中间件设置的承诺链。

中间件可能会使一个回合 短路 。 发生这种情况时,不会调用后续中间件和 logic 函数;但是,在此之前的所有中间件仍运行到完成。 有关中间件管道的详细信息,请参阅 机器人的工作原理中间件 文章。 使用适配器的 use 方法将中间件添加到适配器。

processRequest(IReceiveRequest)

检查请求的有效性,并尝试将其映射到正确的虚拟终结点,然后生成并返回响应(如果适用)。

function processRequest(request: IReceiveRequest): Promise<StreamingResponse>

参数

request

IReceiveRequest

来自已连接通道的 ReceiveRequest。

返回

Promise<StreamingResponse>

BotAdapter 创建的响应,该响应将发送到发出请求的客户端。

sendActivities(TurnContext, Partial<Activity>[])

以异步方式将一组传出活动发送到通道服务器。 此方法支持框架,不打算直接为代码调用此方法。 从机器人代码使用轮次上下文的 sendActivitysendActivities 方法。

function sendActivities(context: TurnContext, activities: Partial<Activity>[]): Promise<ResourceResponse[]>

参数

context

TurnContext

轮次的上下文对象。

activities

Partial<Activity>[]

要发送的活动。

返回

Promise<ResourceResponse[]>

ResourceResponse 数组

注解

活动将按接收顺序逐个发送。 将为每个发送的活动返回一个响应对象。 对于 message 活动,这将包含已传递消息的 ID。

signOutUser(TurnContext, string, string)

从令牌服务器异步注销用户。

function signOutUser(context: TurnContext, connectionName?: string, userId?: string): Promise<void>

参数

context

TurnContext

轮次的上下文对象。

connectionName

string

要使用的身份验证连接的名称。

userId

string

要注销的用户的 ID。

返回

Promise<void>

signOutUser(TurnContext, string, string, CoreAppCredentials)

function signOutUser(context: TurnContext, connectionName?: string, userId?: string, oAuthAppCredentials?: CoreAppCredentials): Promise<void>

参数

context

TurnContext

connectionName

string

userId

string

oAuthAppCredentials

CoreAppCredentials

返回

Promise<void>

updateActivity(TurnContext, Partial<Activity>)

以异步方式将以前的活动替换为更新的版本。 此接口支持框架,不应直接为代码调用此接口。 使用 TurnContext.updateActivity 从机器人代码更新活动。

function updateActivity(context: TurnContext, activity: Partial<Activity>): Promise<ResourceResponse | void>

参数

context

TurnContext

轮次的上下文对象。

activity

Partial<Activity>

要替换的活动的更新版本。

返回

Promise<ResourceResponse | void>

一个 Promise ,表示操作的 ResourceResponse

注解

并非所有通道都支持此操作。 对于不调用的通道,此调用可能会引发异常。

useNamedPipe((context: TurnContext) => Promise<any>, string, number, () => void)

将处理程序连接到命名管道服务器,并开始侦听传入的请求。

function useNamedPipe(logic: (context: TurnContext) => Promise<any>, pipeName?: string, retryCount?: number, onListen?: () => void): Promise<void>

参数

logic

(context: TurnContext) => Promise<any>

将处理传入请求的逻辑。

pipeName

string

创建服务器时要使用的命名管道的名称。

retryCount

number

尝试绑定传入和传出管道的次数

onListen

() => void

当服务器同时侦听传入和传出管道时触发一次的可选回调

返回

Promise<void>

useWebSocket(WebRequest, INodeSocket, INodeBuffer, (context: TurnContext) => Promise<any>)

处理初始请求以通过流式处理服务器建立长期连接。

function useWebSocket(req: WebRequest, socket: INodeSocket, head: INodeBuffer, logic: (context: TurnContext) => Promise<any>): Promise<void>

参数

req
WebRequest

连接请求。

socket

INodeSocket

机器人 (服务器) 与通道/调用方之间的原始套接字连接, (客户端) 。

head

INodeBuffer

升级后的流的第一个数据包。

logic

(context: TurnContext) => Promise<any>

在 WebSocket 连接生存期内处理传入流式处理请求的逻辑。

返回

Promise<void>

继承的方法详细信息

continueConversationAsync(ClaimsIdentity, Partial<ConversationReference>, (context: TurnContext) => Promise<void>)

可能经过一段时间后,异步恢复与用户的对话。

function continueConversationAsync(claimsIdentity: ClaimsIdentity, reference: Partial<ConversationReference>, logic: (context: TurnContext) => Promise<void>): Promise<void>

参数

claimsIdentity

ClaimsIdentity

会话 的 ClaimsIdentity

reference

Partial<ConversationReference>

部分 ConversationReference 以继续对话。

logic

(context: TurnContext) => Promise<void>

适配器中间件运行后要调用的异步方法。

返回

Promise<void>

表示异步操作的承诺

继承自 BotAdapter.continueConversationAsync

continueConversationAsync(ClaimsIdentity, Partial<ConversationReference>, string, (context: TurnContext) => Promise<void>)

可能经过一段时间后,异步恢复与用户的对话。

function continueConversationAsync(claimsIdentity: ClaimsIdentity, reference: Partial<ConversationReference>, audience: string, logic: (context: TurnContext) => Promise<void>): Promise<void>

参数

claimsIdentity

ClaimsIdentity

会话 的 ClaimsIdentity

reference

Partial<ConversationReference>

部分 ConversationReference 以继续对话。

audience

string

一个值,表示主动消息的接收方。

logic

(context: TurnContext) => Promise<void>

适配器中间件运行后要调用的异步方法。

返回

Promise<void>

表示异步操作的承诺

继承自 BotAdapter.continueConversationAsync

continueConversationAsync(string, Partial<ConversationReference>, (context: TurnContext) => Promise<void>)

可能经过一段时间后,异步恢复与用户的对话。

function continueConversationAsync(botAppId: string, reference: Partial<ConversationReference>, logic: (context: TurnContext) => Promise<void>): Promise<void>

参数

botAppId

string

机器人的应用程序 ID。 此参数在单个租户中忽略适配器 (控制台、测试等) 但对于多租户感知的 BotFrameworkAdapter 至关重要。

reference

Partial<ConversationReference>

部分 ConversationReference 以继续对话。

logic

(context: TurnContext) => Promise<void>

适配器中间件运行后要调用的异步方法。

返回

Promise<void>

表示异步操作的承诺

继承自 BotAdapter.continueConversationAsync

createConversationAsync(string, string, string, string, ConversationParameters, (context: TurnContext) => Promise<void>)

在指定通道上创建会话。

function createConversationAsync(_botAppId: string, _channelId: string, _serviceUrl: string, _audience: string, _conversationParameters: ConversationParameters, _logic: (context: TurnContext) => Promise<void>): Promise<void>

参数

_botAppId

string

机器人的应用程序 ID。

_channelId

string

通道的 ID。

_serviceUrl

string

通道的 ID。

_audience

string

连接器的受众。

_conversationParameters

ConversationParameters

用于创建对话的对话信息

_logic

(context: TurnContext) => Promise<void>

要为生成的机器人轮次调用的方法。

返回

Promise<void>

表示异步操作的承诺

注解

若要开始聊天,机器人必须知道其帐户信息和该通道上的用户帐户信息。 大多数_channels仅支持启动直接消息 (非组) 对话。

适配器尝试在通道上创建新会话,然后通过其中间件管道将活动发送到 conversationUpdate 逻辑方法。

如果与指定用户建立会话,则活动对话的 ID 将包含新会话的 ID。

继承自 BotAdapter.createConversationAsync

use((context: TurnContext, next: () => Promise<void>) => Promise<void> | Middleware[])

将中间件添加到适配器的管道。

function use(middlewares: (context: TurnContext, next: () => Promise<void>) => Promise<void> | Middleware[]): this

参数

middlewares

(context: TurnContext, next: () => Promise<void>) => Promise<void> | Middleware[]

要添加的中间件或中间件处理程序。

返回

this

更新的适配器对象。

注解

中间件在初始化时添加到适配器。 适配器在每个轮次都按照添加它的顺序调用其中间件。

继承自 BotAdapter.use