mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-08 23:33:16 +08:00
本次迁移将网关/通道/工具/技能/脚本与协议资源集中到新结构,统一路径常量与脚本转发机制,减少顶层噪音并保证运行与测试行为一致。 Made-with: Cursor
41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from oclaw.runtime.extensions.telegram import (
|
|
normalize_telegram_messaging_target,
|
|
parse_telegram_reply_to_message_id,
|
|
parse_telegram_target,
|
|
parse_telegram_thread_id,
|
|
)
|
|
|
|
|
|
def normalize_transport_target_for_channel(
|
|
*,
|
|
channel: str,
|
|
to: str,
|
|
params: dict[str, Any],
|
|
) -> tuple[str, dict[str, Any]]:
|
|
"""Normalize channel transport target payload for outbound paths."""
|
|
extra: dict[str, Any] = {}
|
|
if channel != "telegram":
|
|
return to, extra
|
|
|
|
normalized_target = normalize_telegram_messaging_target(to)
|
|
parsed_target = parse_telegram_target(normalized_target or to)
|
|
normalized_to = normalized_target or f"telegram:{parsed_target.chat_id}".lower()
|
|
reply_to_id = parse_telegram_reply_to_message_id(params.get("replyToId"))
|
|
thread_id = parse_telegram_thread_id(
|
|
params.get("threadId") if params.get("threadId") is not None else parsed_target.message_thread_id
|
|
)
|
|
|
|
extra = {
|
|
"target": {
|
|
"chatId": parsed_target.chat_id,
|
|
"chatType": parsed_target.chat_type,
|
|
**({"messageThreadId": parsed_target.message_thread_id} if parsed_target.message_thread_id is not None else {}),
|
|
},
|
|
**({"threadId": thread_id} if thread_id is not None else {}),
|
|
**({"replyToMessageId": reply_to_id} if reply_to_id is not None else {}),
|
|
}
|
|
return normalized_to, extra
|