We are all familiar with the paradigm of being asked for our shipping address on a form. Generally, there is a second step which is to get the billing address. On well designed sites, this information is hidden or filled out and there is a checkbox that is pre-checked that says something like "same as shipping address". This paradigm came about because it's best not to ask the user the same information twice as that becomes frustrating, leads to more user work, and ultimately decreases conversions.
So, what is the parallel in chat? We believe it's very similar. Once you've asked the user a question once, then for the rest of their chat session, you should confirm that choice rather than ask them again. For instance, if someone is on facebook messenger, you should never just ask them for their name, you should always say something like "is your name John Doe" and ask them to confirm. Likewise if they have already given you some information, you should confirm it. For one of our clients there are many areas where we ask for their email address - such as for looking up an order, printing a return slip, and leaving a message. When the user has already filled in their email for one of the functions, it simply asks "do you want to use email@example.com as you email address?" in all other places where email is required.
One final point on this paradigm is the length of the session. With many chat apps, it requires the user to be logged in (such as fb messenger). One of the great things about chat is that it is a persistent conversation where all the old interactions can be looked at. Given that, we believe that the "session" should remain active while the user is logged in - so even if they come back a few days later, it should still keep all their information handy so they don't need to fill this in again.
The exception to this rule is personal and confidential information. Things like social security number, credit card info, ccv, etc. should not be remembered or stored locally.