Handle describe-actions message
This commit is contained in:
@@ -63,6 +63,7 @@ class RTVIAction(BaseModel):
|
||||
service: str
|
||||
action: str
|
||||
arguments: List[RTVIActionArgument] = []
|
||||
result: Literal["bool", "number", "string", "array", "object"]
|
||||
handler: Callable[["RTVIProcessor", str, Dict[str, Any]], Awaitable[ActionResult]] = Field(exclude=True)
|
||||
_arguments_dict: Dict[str, RTVIActionArgument] = PrivateAttr(default={})
|
||||
|
||||
@@ -146,6 +147,17 @@ class RTVIDescribeConfig(BaseModel):
|
||||
data: RTVIDescribeConfigData
|
||||
|
||||
|
||||
class RTVIDescribeActionsData(BaseModel):
|
||||
actions: List[RTVIAction]
|
||||
|
||||
|
||||
class RTVIDescribeActions(BaseModel):
|
||||
label: Literal["rtvi-ai"] = "rtvi-ai"
|
||||
type: Literal["actions-available"] = "actions-available"
|
||||
id: str
|
||||
data: RTVIDescribeActionsData
|
||||
|
||||
|
||||
class RTVIConfigResponse(BaseModel):
|
||||
label: Literal["rtvi-ai"] = "rtvi-ai"
|
||||
type: Literal["config"] = "config"
|
||||
@@ -334,6 +346,8 @@ class RTVIProcessor(FrameProcessor):
|
||||
|
||||
try:
|
||||
match message.type:
|
||||
case "describe-actions":
|
||||
await self._handle_describe_actions(message.id)
|
||||
case "describe-config":
|
||||
await self._handle_describe_config(message.id)
|
||||
case "get-config":
|
||||
@@ -360,6 +374,12 @@ class RTVIProcessor(FrameProcessor):
|
||||
frame = TransportMessageFrame(message=message.model_dump(exclude_none=True))
|
||||
await self.push_frame(frame)
|
||||
|
||||
async def _handle_describe_actions(self, request_id: str):
|
||||
actions = list(self._registered_actions.values())
|
||||
message = RTVIDescribeActions(id=request_id, data=RTVIDescribeActionsData(actions=actions))
|
||||
frame = TransportMessageFrame(message=message.model_dump(exclude_none=True))
|
||||
await self.push_frame(frame)
|
||||
|
||||
async def _handle_get_config(self, request_id: str):
|
||||
message = RTVIConfigResponse(id=request_id, data=self._config)
|
||||
frame = TransportMessageFrame(message=message.model_dump(exclude_none=True))
|
||||
|
||||
Reference in New Issue
Block a user