diff --git a/client_examples/hello_client.py b/client_examples/hello_client.py index e1b25bb..5c10086 100644 --- a/client_examples/hello_client.py +++ b/client_examples/hello_client.py @@ -6,7 +6,7 @@ import asyncio from contextlib import aclosing import os -from hippolyzer.lib.base.message.message import Message, Block +from hippolyzer.lib.base.message.message import Message from hippolyzer.lib.base.templates import ChatType, ChatSourceType from hippolyzer.lib.client.hippo_client import HippoClient @@ -21,13 +21,7 @@ async def amain(): return if "hello" not in str(message["ChatData"]["Message"]).lower(): return - await client.session.main_region.circuit.send_reliable( - Message( - "ChatFromViewer", - Block("AgentData", SessionID=client.session.id, AgentID=client.session.agent_id), - Block("ChatData", Message=f'Hello {message["ChatData"]["FromName"]}!', Channel=0, Type=ChatType.SHOUT), - ) - ) + await client.send_chat(f'Hello {message["ChatData"]["FromName"]}!', chat_type=ChatType.SHOUT) async with aclosing(client): await client.login( @@ -36,25 +30,13 @@ async def amain(): start_location=os.environ.get("HIPPO_START_LOCATION", "home"), ) print("I'm here") - await client.session.main_region.circuit.send_reliable( - Message( - "ChatFromViewer", - Block("AgentData", SessionID=client.session.id, AgentID=client.session.agent_id), - Block("ChatData", Message="Hello World!", Channel=0, Type=ChatType.SHOUT), - ) - ) + await client.send_chat("Hello World!", chat_type=ChatType.SHOUT) client.session.message_handler.subscribe("ChatFromSimulator", _respond_to_chat) while True: try: await asyncio.sleep(0.001) except (KeyboardInterrupt, asyncio.CancelledError): - await client.session.main_region.circuit.send_reliable( - Message( - "ChatFromViewer", - Block("AgentData", SessionID=client.session.id, AgentID=client.session.agent_id), - Block("ChatData", Message="Goodbye World!", Channel=0, Type=ChatType.SHOUT), - ) - ) + await client.send_chat("Goodbye World!", chat_type=ChatType.SHOUT) return if __name__ == "__main__": diff --git a/hippolyzer/lib/client/hippo_client.py b/hippolyzer/lib/client/hippo_client.py index df77aa4..5256641 100644 --- a/hippolyzer/lib/client/hippo_client.py +++ b/hippolyzer/lib/client/hippo_client.py @@ -22,7 +22,7 @@ from hippolyzer.lib.base.message.udpdeserializer import UDPMessageDeserializer from hippolyzer.lib.base.network.caps_client import CapsClient, CAPS_DICT from hippolyzer.lib.base.network.transport import ADDR_TUPLE, Direction, SocketUDPTransport, AbstractUDPTransport from hippolyzer.lib.base.settings import Settings, SettingDescriptor -from hippolyzer.lib.base.templates import RegionHandshakeReplyFlags +from hippolyzer.lib.base.templates import RegionHandshakeReplyFlags, ChatType from hippolyzer.lib.base.transfer_manager import TransferManager from hippolyzer.lib.base.xfer_manager import XferManager from hippolyzer.lib.client.asset_uploader import AssetUploader @@ -482,6 +482,13 @@ class HippoClient(BaseClientSessionManager): ) session.transport.close() + def send_chat(self, message: Union[bytes, str], channel: int = 0, chat_type=ChatType.NORMAL) -> asyncio.Future: + return self.session.main_region.circuit.send_reliable(Message( + "ChatFromViewer", + Block("AgentData", SessionID=self.session.id, AgentID=self.session.agent_id), + Block("ChatData", Message=message, Channel=channel, Type=chat_type), + )) + async def _attempt_resends(self): while True: await asyncio.sleep(0.5)