protected override async Task MessageReceivedInternalAsync()

in CSharp/BotBuilderLocation/Dialogs/FavoriteLocationRetrieverDialog.cs [58:91]


        protected override async Task MessageReceivedInternalAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
        {
            var messageText = (await result).Text.Trim();
            FavoriteLocation value = null;
            string command = null;

            if (StringComparer.OrdinalIgnoreCase.Equals(messageText, this.ResourceManager.OtherComand))
            {
                this.SwitchToLocationRetriever(context);
            }
            else if (this.TryParseSelection(context, messageText, out value))
            {
                await this.ProcessRetrievedLocation(context, value.Location);
            }
            else if (this.TryParseCommandSelection(context, messageText, out value, out command) &&
                (StringComparer.OrdinalIgnoreCase.Equals(command, this.ResourceManager.DeleteCommand)
                || StringComparer.OrdinalIgnoreCase.Equals(command, this.ResourceManager.EditCommand)))
            {
                if (StringComparer.OrdinalIgnoreCase.Equals(command, this.ResourceManager.DeleteCommand))
                {
                    TryConfirmAndDelete(context, value);
                }
                else
                {
                    var editDialog = this.locationDialogFactory.CreateDialog(BranchType.EditFavoriteLocation, value.Location, value.Name);
                    context.Call(editDialog, this.ResumeAfterChildDialogAsync);
                }
            }
            else
            {
                await context.PostAsync(string.Format(this.ResourceManager.InvalidFavoriteLocationSelection, messageText));
                context.Wait(this.MessageReceivedAsync);
            }
        }