HttpStream 类

用于Microsoft Teams活动的基于 HTTP 的流式处理实现。

流:

  1. emit() 将活动添加到队列
  2. _flush() 在锁下清空整个队列。
  3. 如果未启动任何消息,则立即发送信息性键入更新。
  4. 消息文本合并为键入区块。
  5. 如果保留更多项,则会计划另一次刷新。
  6. close() 等待队列为空,然后使用 stream_type='stream_final' 发送最终消息

超时取消可确保一次只计划一个刷新操作。 刷新之间的延迟是确保我们不会通过Microsoft Teams达到 API 速率限制。

初始化新的 HttpStream 实例。

构造函数

HttpStream(client: ApiClient, ref: ConversationReference)

参数

名称 说明
client
必需
<xref:microsoft_teams.apps.ApiClient>

用于将活动发送到Microsoft Teams的 API 客户端。

ref
必需
<xref:microsoft_teams.apps.ConversationReference>

对 Teams 对话的引用。

方法

clear_text

放弃到目前为止累积的所有内容,以便调用方可以发出一个新的仅限卡的最终活动。

清除文本缓冲区,删除排队的消息项,以便下一次刷新不会重新填充它,并放弃提升的最终活动,因此,如果调用方从不发出替换,则不会发送任何以前刷新的附件/建议的操作。 流 ID 和通道数据保持不变,因此新的最终活动仍会就地更新流。

close
emit

向流发出新活动。

on_chunk
on_close
update

在发出之前发送状态更新(例如“思考...”)。

clear_text

放弃到目前为止累积的所有内容,以便调用方可以发出一个新的仅限卡的最终活动。

清除文本缓冲区,删除排队的消息项,以便下一次刷新不会重新填充它,并放弃提升的最终活动,因此,如果调用方从不发出替换,则不会发送任何以前刷新的附件/建议的操作。 流 ID 和通道数据保持不变,因此新的最终活动仍会就地更新流。

clear_text() -> None

close

async close() -> SentActivity | None

emit

向流发出新活动。

emit(activity: MessageActivityInput | TypingActivityInput | str) -> None

参数

名称 说明
activity
必需

要发出的活动。

on_chunk

on_chunk(handler: Callable[[SentActivity], Awaitable[None]])

参数

名称 说明
handler
必需

on_close

on_close(handler: Callable[[SentActivity], Awaitable[None]])

参数

名称 说明
handler
必需

update

在发出之前发送状态更新(例如“思考...”)。

update(text: str) -> None

参数

名称 说明
text
必需

要发送的状态文本。

属性

canceled

流是否已取消。 例如,当用户按下“停止”按钮或超过 2 分钟的超时时间时。

closed

是否发送了最终流消息。

count

要发送的区块总数。

sequence

序列号,表示发送的流活动数。