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