Handle describe-actions message

This commit is contained in:
marcus-daily
2024-08-13 12:18:29 +01:00
committed by Marcus
parent 358c287db2
commit 0b8a1ab5d1

View File

@@ -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))