
Explanation:

Dialog RecapThe Bot Framework Composer dialog shown:
* Bot asks: "What is your name?"
* User input stored in user.name.
* Property is user.name with a value expression: =coalesce(@user.Name, @personName)
* Bot asks: "Hello ${user.name}, how old are you?"
* User input stored in user.age.
* user.name is an entity.
* No.
* user.name here is not an entity. It is a property in the bot's memory (user state).
* Entities come from LUIS/CLU recognition, while this is a variable property.
* The dialog asks for a user name and a user age and assigns appropriate values to the user.name and user.
age properties.
* Yes.
* The dialog explicitly prompts for a text input (name) and a number input (age) and assigns them to user.name and user.age.
* The chatbot attempts to take the first non-null entity value for userName or personName and assigns the value to user.name.
* Yes.
* The expression =coalesce(@user.Name, @personName) ensures that if @user.Name exists, it's used; otherwise, it tries @personName. This is exactly first-non-null entity resolution.
Statement Analysis
* user.name is an entity. # No
* The dialog asks for a user name and a user age and assigns appropriate values to the user.name and user.
age properties. # Yes
* The chatbot attempts to take the first non-null entity value for userName or personName and assigns the value to user.name. # Yes Final Answer
* Bot Framework Composer - Memory and Properties
* Expressions and coalesce function
Reference:
https://docs.microsoft.com/en-us/composer/concept-language-generation