private async Task ReadAddressAsync(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var addressActivity = await result;

            var geocodeResult = await _mapApiClient.GetGeocodeData(addressActivity.Text);

            var firstResultAddress = ((Geocode)geocodeResult.Data).results.FirstOrDefault();

            try
            {
                if (geocodeResult.CorrectResponse)
                {
                    Activity replyToConversation = (Activity)context.MakeMessage();

                    _recognizedAddress = firstResultAddress.MapGeocodeToAddressDM();
                    string addressString = _recognizedAddress.ToAddressString();
                    var    cardText      = $"{_confirmText}\r\n_{addressString}_";

                    if (replyToConversation.ChannelId == ChannelIds.Facebook)
                    {
                        var mapImageDataResult = await _mapApiClient.GetMapImageData(addressActivity.Text, zoom : 17);

                        var mapMessage = context.MakeMessage();
                        mapMessage.Attachments.Add(new Attachment {
                            ContentUrl = (string)mapImageDataResult.Data, ContentType = "image/png"
                        });
                        await context.PostAsync(mapMessage);

                        var quickReplies = new List <API.Facebook.Quick_Replies>();;
                        quickReplies.Add(new API.Facebook.Quick_Replies()
                        {
                            content_type = "text", title = "Ano", payload = "Ano"
                        });
                        quickReplies.Add(new API.Facebook.Quick_Replies()
                        {
                            content_type = "text", title = "Ne", payload = "Ne"
                        });

                        API.Facebook.QuickReplyData quickReplyData = new API.Facebook.QuickReplyData()
                        {
                            text          = cardText,
                            quick_replies = quickReplies.ToArray()
                        };

                        replyToConversation.ChannelData = quickReplyData;
                    }
                    else
                    {
                        replyToConversation.AttachmentLayout = AttachmentLayoutTypes.List;
                        replyToConversation.Attachments      = new List <Microsoft.Bot.Connector.Attachment>();
                        var plAttachment = await GetAddressConfirmationAttachment(context, addressActivity.Text, cardText);

                        replyToConversation.Attachments.Add(plAttachment);
                    }

                    await context.PostAsync(replyToConversation);

                    context.Wait(ConfirmRecognition);
                }
                else
                {
                    await context.SayAsync(_addressNotFoundByGoogleText);

                    var addressFormDialog = FormDialog.FromForm(AddressForm.BuildAddressForm);
                    context.Call(addressFormDialog, SetAddressFormToDM);
                }
            }
            catch (Exception ex)
            {
                await context.SayAsync(ex.Message);
            }
        }