Connection
通常关乎到 client 的整个生命周期。
其中 category 标识为 connection。
Register
在与 runtime 交互的生命周期起始,必须要进行注册,以便 runtime 标识和分发其他内容。
在注册后 client 才可以向 runtime 进行交互信息,否则会抛出错误。
WARNING
即,除 Register 消息外,所有消息均要求 client 已进行注册。
进行注册
此时,client 向 gateway 对应端口发送:
type: string = "register"
data {
client_type: string
client_name: string
client_id: string
}client_type为设备类型,支持的设备类型:IM: 即时通讯实例,例如 Telegram,Discord 等。Client: 自定义的通讯实例,例如本项目的 Pancake。
client_name是一个字符串,该字段会被告知 LLM,建议增加其可读性。client_id是该 client 的唯一标识符。请注意,相同 client 的多次连接应复用同一client_id;为了方便处理,该字段必须使用 uuid。
注意,同一 client 仅能同时拥有一个连接。当新的连接使用相同client_id注册时,gateway 将会拒绝或替换已有连接。
注册成功
而注册成功后,则 gateway 向 client 发送「注册成功」的消息。
type: string = "register_success"
data {
runtime_name: string
runtime_version: string
}其中 runtime_name 为 runtime 的名称;runtime_version 为连接 runtime 的版本号。
注册失败
如果注册失败,则 gateway 会抛出某种特定的错误类型。
type: string = "register_error"
data {
error_type: string
}根据错误类型的不同,error_type 的值会在以下类型中产生:
client_info_error:client_type不在其字段限定中。建议检查字段内容的大小写和拼写。client_conflict: 注册设备冲突,表现为client_id存在重复但client_type不同。建议更换client_id。client_unknown: 未知的设备。即,我们没有看到你的client_id。遇到此问题时,建议重新注册。client_id_invalid:client_id不是合法的 uuid 字段。
Heartbeat
用于 runtime 和 client 互相告知存活信息。
需要至少每 20 秒发送一次;对于时间波动,最多等待 30 秒,否则会触发 runtime 对 client 的自动下线。
必须先发送:
type: string = "heartbeat"
data {}然后得到回复:
type: string = "heartbeat_respond"
data {}Offline
直接消息,对 runtime 发出 client 的主动下线告知。
type: string = "offline"
data {}