HttpStream 类
用于Microsoft Teams活动的基于 HTTP 的流式处理实现。
流:
- emit() 将活动添加到队列
- _flush() 在锁下清空整个队列。
- 如果未启动任何消息,则立即发送信息性键入更新。
- 消息文本合并为键入区块。
- 如果保留更多项,则会计划另一次刷新。
- 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
序列号,表示发送的流活动数。