chainlit
chainlit copied to clipboard
`AskUserAction`/`AskActionMessage` does not work as expected
Hi, according to the API reference, when using AskUserAction, if the user does not answer in time (see timeout), a TimeoutError will be raised, or None will be returned, depending on the raise_on_timeout parameter. I am passing time_out=5 for testing. To my understanding, it will return None, but I see the chat print messages Timed out: no action was taken when using a while loop (see the screenshot). For AskFileMessage, the provided example seems to work. I want to wait for an answer without seeing any message. Any idea what the issue is, or is this the expected behavior?
Code snippet
`@cl.on_chat_start async def on_chat_start(): res = None while res is None: res = await cl.AskActionMessage( content="Select an option:", actions=[ cl.Action(name="Name 1", value="Value 1", label="Label 1"), cl.Action(name="Name 2", value="Value 2", label="Label 2"), ], raise_on_timeout=False, timeout=5, ).send()
if res:
await cl.Message(
content="All set!",
).send()
cl.user_session.set("location", res.get("value"))
`
Output:
AskFileMessage example:
`@cl.on_chat_start async def start(): files = None
# Wait for the user to upload a file
while files == None:
files = await cl.AskFileMessage(
content="Please upload a text file to begin!", accept=["text/plain"]
).send()
text_file = files[0]
with open(text_file.path, "r", encoding="utf-8") as f:
text = f.read()
# Let the user know that the system is ready
await cl.Message(
content=f"`{text_file.name}` uploaded, it contains {len(text)} characters!"
).send()
`
Chainlit version: 1.1.402