App 类
主要的 Teams 应用程序业务流程协调程序。
管理Microsoft Teams应用的插件、令牌和应用程序生命周期。
构造函数
App(**options: Unpack[AppOptions])
方法
| event |
修饰器,用于使用自动类型推理注册事件处理程序。 可通过多种方式使用:
|
| func |
将函数注册为远程可调用终结点的修饰器。 |
| get_app_graph |
获取使用应用令牌配置的Microsoft Graph客户端。 此客户端可用于不需要用户上下文的仅限应用操作。 对于多租户应用,传递tenant_id以获取特定于租户的令牌。 |
| initialize |
在不启动 HTTP 服务器的情况下初始化 Teams 应用程序。 此方法设置凭据、令牌管理器、活动发送者和插件,使你能够在不运行服务器的情况下使用 app.send()进行主动消息传送。 |
| page |
注册静态页面以在特定路径中提供。 Args: name: page 的唯一名称 dir_path: 包含静态文件的目录page_path: 用于提供页面的可选路径 (默认值为 /pages/{name}) |
| reply |
将活动主动发送到会话,可以选择作为线程回复。
3-arg 形式
2-arg 窗体 |
| send |
主动将活动发送到对话。 发送到提供的确切聊天 ID。 对于通道线程,会话 ID 必须包含 |
| start |
启动 Teams 应用程序并开始提供 HTTP 请求。 此方法将阻止应用程序并使其保持运行,直到停止。 这是运行 Teams 应用的主要入口点。 |
| stop |
停止 Teams 应用程序。 |
| tab |
添加/更新静态选项卡。选项卡将托管在 http://localhost:<PORT>/tabs/<name> 或 https://<BOT_DOMAIN>/tabs/<name> Scopes 默认为“personal”。 |
| use |
添加中间件以在所有活动上运行。 |
event
修饰器,用于使用自动类型推理注册事件处理程序。
可通过多种方式使用:
- @app.event (从类型提示自动检测)
- @app.event(“activity”)
event(func_or_event_type: F) -> F
参数
| 名称 | 说明 |
|---|---|
|
func_or_event_type
|
要修饰的函数或事件类型字符串 默认值: None
|
|
event_type
必需
|
显式事件类型(仅限关键字) |
返回
| 类型 | 说明 |
|---|---|
|
修饰的函数或修饰器 |
示例
“'<<>>'<<python @app.event 异步 def handle_activity(event: ActivityEvent):
print(f“Activity: {event.activity}”)
@app.event(“error”) 异步 def handle_error(event: ErrorEvent):
print(f“Error: {event.error}”)
''<<>>'<<
func
将函数注册为远程可调用终结点的修饰器。
func(name_or_func: str | FCtx | None = None) -> FCtx | Callable[[FCtx], FCtx]
参数
| 名称 | 说明 |
|---|---|
|
name_or_func
|
默认值: None
|
|
str
必需
|
<xref:<xref:->>
终结点的显式名称 |
|
Callable
必需
|
<xref:<xref:->>
直接修饰函数,终结点名称默认为函数的名称 |
示例
“'<<>>'<<python @app.func 异步 def post_to_chat(ctx: FunctionContext[Any]):
await ctx.send(ctx.data[“message”])
''<<>>'<<
get_app_graph
获取使用应用令牌配置的Microsoft Graph客户端。
此客户端可用于不需要用户上下文的仅限应用操作。 对于多租户应用,传递tenant_id以获取特定于租户的令牌。
get_app_graph(tenant_id: str | None = None) -> GraphServiceClient
参数
| 名称 | 说明 |
|---|---|
|
tenant_id
|
可选租户 ID。 如果未提供,请使用应用的默认租户。 默认值: None
|
例外
| 类型 | 说明 |
|---|---|
|
如果未安装图形依赖项。 |
initialize
在不启动 HTTP 服务器的情况下初始化 Teams 应用程序。
此方法设置凭据、令牌管理器、活动发送者和插件,使你能够在不运行服务器的情况下使用 app.send()进行主动消息传送。
async initialize() -> None
page
注册静态页面以在特定路径中提供。
Args: name: page 的唯一名称 dir_path: 包含静态文件的目录page_path: 用于提供页面的可选路径 (默认值为 /pages/{name})
page(name: str, dir_path: str, page_path: str | None = None) -> None
参数
| 名称 | 说明 |
|---|---|
|
name
必需
|
|
|
dir_path
必需
|
|
|
page_path
|
默认值: None
|
示例
python app.page("customform", os.path.join(os.path.dirname(__file__), "views", "customform"), "/tabs/dialog-form")
reply
将活动主动发送到会话,可以选择作为线程回复。
3-arg 形式reply(conversation_id, message_id, activity):通过并 to_threaded_conversation_id 发送到该线程构造线程会话 ID。 该服务确定给定会话类型是否支持线程处理。
2-arg 窗体reply(conversation_id, activity):如果会话 ID 包含 ;messageid=,则发送到提供的确切会话 ID,否则为平面。
async reply(conversation_id: str, message_id: str, activity: str | ActivityParams | AdaptiveCard) -> SentActivity
参数
| 名称 | 说明 |
|---|---|
|
conversation_id
必需
|
会话 ID |
|
message_id
必需
|
线程根消息 ID (3-arg 窗体) 或活动 (2-arg 窗体) |
|
activity
|
要发送的活动(仅以 3 元形式) 默认值: None
|
send
主动将活动发送到对话。
发送到提供的确切聊天 ID。 对于通道线程,会话 ID 必须包含 ;messageid= - 用于 to_threaded_conversation_id 构造它,或使用 reply 自动处理此 ID。
async send(conversation_id: str, activity: str | MessageActivityInput | MessageReactionActivityInput | TypingActivityInput | AdaptiveCard)
参数
| 名称 | 说明 |
|---|---|
|
conversation_id
必需
|
|
|
activity
必需
|
|
start
启动 Teams 应用程序并开始提供 HTTP 请求。
此方法将阻止应用程序并使其保持运行,直到停止。 这是运行 Teams 应用的主要入口点。
async start(port: int | None = None) -> None
参数
| 名称 | 说明 |
|---|---|
|
port
|
要侦听的端口(默认为 PORT env var 或 3978) 默认值: None
|
stop
停止 Teams 应用程序。
async stop() -> None
tab
添加/更新静态选项卡。选项卡将托管在 http://localhost:<PORT>/tabs/<name> 或 https://<BOT_DOMAIN>/tabs/<name> Scopes 默认为“personal”。
tab(name: str, path: str) -> None
参数
| 名称 | 说明 |
|---|---|
|
displays.
必需
|
<xref:<xref:name A unique identifier for the entity which the tab>>
|
|
content
必需
|
<xref:<xref:path The path to the directory containing the tab's>>
|
|
name
必需
|
|
|
path
必需
|
|
use
添加中间件以在所有活动上运行。
use(middleware: Callable[[ActivityContext[Activity]], Awaitable[None]]) -> None
参数
| 名称 | 说明 |
|---|---|
|
middleware
必需
|
|
属性
events
应用使用的事件发出器实例。
id
应用的 ID 来自凭据。
port
端口应用正在运行。
router
活动路由器实例。