/// <summary>
        /// Método responsável pela busca de mensagens recebidas considerando o filtro informado como parâmetros de busca.
        /// </summary>
        /// <param name="filter">Objeto do tipo <see cref="ReceivedMessageFilter"/> contendo os parâmetros usados para a busca.</param>
        /// <returns>Objeto do tipo <see cref="ReceivedMessageResponse"/> contendo as mensagens encontradas na busca.</returns>
        public async Task <ReceivedMessageResponse> SearchReceivedMessages(ReceivedMessageFilter filter)
        {
            UsernameOrPasswordEmpty();
            try
            {
                String url = this.SearchReceivedMessagesUrl + "/" + filter.Start.ToString(Properties.Resources.DATE_PATTERN) + "/" + filter.End.ToString(Properties.Resources.DATE_PATTERN) + "";

                Dictionary <string, string> urlParams = new Dictionary <string, string>();
                if (filter.DefinesReferenceMessageId)
                {
                    urlParams.Add("mtId", filter.ReferenceMessageId);
                }
                if (filter.DefinesMobile)
                {
                    urlParams.Add("mobile", filter.Mobile);
                }

                ReceivedMessageResponse result = await this.CallGetAsync <ReceivedMessageResponse>(url, urlParams);

                return(result);
            }
            catch (Exception ex)
            {
                throw new ZenviaException("Falha no envio da requisição: " + ex.Message, ex);
            }
        }
        /// <summary>
        /// Método que busca e retorna todas as mensagens SMS recebidas e não lidas pela plataforma.
        /// Nota: De acordo com a documentação Zenvia, ao buscar estas mensagens as mesmas serão
        /// consideradas como lidas e não serão mais retornadas por este método.
        /// </summary>
        /// <returns>Objeto do tipo <see cref="ReceivedMessageResponse"/> que contem as mensagens recebidas
        /// até o instante da requisição.</returns>
        public async Task <ReceivedMessageResponse> ListUnreadMessages()
        {
            UsernameOrPasswordEmpty();
            try
            {
                ReceivedMessageResponse result = await CallPostAsync <ReceivedMessageResponse>(this.ListUnreadMessagesUrl, null);

                return(result);
            }
            catch (Exception ex)
            {
                throw new ZenviaException("Falha no envio da requisição: " + ex.Message, ex);
            }
        }