public async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument) { var message = await argument; if (message.IsValidTextMessage()) { try { var json = JObject.Parse(message.Text); var action = json.GetValue("ActionType"); switch (action.ToString()) { case BotActionTypes.ContinueShopping: await context.PostAsync(TextResources.You_can_continue_shopping); context.Done <object>(false); break; case BotActionTypes.BasketCheckout: context.Call(dialogFactory.CreateOrderDialog(), AfterOrderAsync); break; } } catch (JsonReaderException) { // is not a Json await context.PostAsync(TextResources.Please_make_a_selection); context.Wait(MessageReceivedAsync); } } else { // file sent await context.PostAsync(TextResources.Please_make_a_selection); context.Wait(MessageReceivedAsync); } }