You are viewing the Portuguese (Brazil) site, but your language preference is set to English. Switch to English site →

Menu

Expand
Classifique esta página:

Receber e baixar imagens de mensagens MMS recebidas com Node.js

Você sabe como receber e responder a mensagens SMS. E se você receber uma mensagem MMS contendo uma imagem que gostaria de baixar? Vamos aprender como podemos capturar essa imagem e qualquer outra mídia MMS recebida usando Node.js.

Criar projeto de processamento de MMS

Crie um aplicativo em Express

Quando a Twilio recebe uma mensagem para seu número de telefone, ela pode fazer uma chamada HTTP para um webhook criado por você. A maneira mais fácil de lidar com solicitações HTTP com Node é usar Express.

A Twilio espera, no mínimo, que o webhook retorne uma resposta 200 OK se tudo estiver em ordem. No entanto, você também retornará alguns TwiML em sua resposta muitas vezes. TwiML é apenas um conjunto de comandos XML que informa a Twilio como você gostaria que ela respondesse à sua mensagem. Em vez de gerar manualmente o XML, usaremos o módulo Twilio.twiml.MessagingResponse na biblioteca auxiliar, que pode facilitar bastante a geração do TwiML e do resto da estrutura de webhook.

Para instalar a biblioteca, execute:

npm install twilio

Crie um roteador

Adicione um novo roteador chamado MessagingRouter que processa uma solicitação SMS recebida.

Loading Code Sample...
        
        

        Roteador Express

        Receber mensagem MMS e imagens

        Obtenha detalhes da mensagem recebida

        Quando a Twilio chama seu webhook, ela envia vários parâmetros sobre a mensagem que você acabou de receber. A maioria deles, como o número de telefone "To", o número de telefone "From" e o "Body" da mensagem, estão disponíveis como propriedades do corpo da solicitação.

        Obtenha URLs para a mídia

        Como uma mensagem MMS pode ter vários anexos, a Twilio nos enviará variáveis de formulário chamadas MediaUrlX, em que X é um índice baseado em zero. Então, por exemplo, o URL do primeiro anexo de mídia estará no parâmetro MediaUrl0, o segundo no MediaUrl1 e assim por diante.

        Para lidar com um número dinâmico de anexos, extraímos os URLs da solicitação de corpo desta forma:

        Loading Code Sample...
              
              

              Extraia URLs de mídia do corpo da solicitação

              Determine o tipo de conteúdo da mídia

              Os anexos a mensagens MMS podem ser de vários tipos de arquivo diferentes. Imagens JPG e GIF, bem como arquivos MP4 e 3GP, são comuns. A Twilio lida com a determinação do tipo de arquivo para você, que pode obter o tipo mime padrão do parâmetro MediaContentTypeX. Se você estiver esperando fotos, provavelmente verá muitos anexos com o tipo mime image/jpeg.

              Loading Code Sample...
                    
                    

                    Mapeie o tipo MIME para a extensão de arquivo

                    Processar imagens MMS

                    Salve os URLs de mídia

                    Dependendo do seu caso de uso, armazenar os URLs das imagens (ou vídeos, ou qualquer outro) pode ser tudo o que você precisa. Há dois recursos principais para esses URLs que os tornam muito flexíveis para uso em apps:

                    1. Eles são acessíveis publicamente sem a necessidade de autenticação para facilitar o compartilhamento.
                    2. Eles são permanentes (a menos que você exclua explicitamente a mídia).

                    Por exemplo, se você estiver criando um app baseado em navegador que precisa exibir as imagens, tudo o que deve fazer é inserir uma tag <img src="twilio url to your image"> na página. Se isso funciona para você, talvez tudo o que você precisa seja armazenar o URL em um campo de caractere de banco de dados.

                    Salve a mídia no sistema de arquivos local

                    Se quiser salvar os anexos de mídia em um arquivo, será necessário fazer uma solicitação HTTP para o URL de mídia e gravar o fluxo de resposta em um arquivo. Se você precisar de um nome de arquivo exclusivo, poderá usar a última parte do URL da mídia. Por exemplo, suponha que o URL da mídia seja o seguinte:

                    https://api.twilio.com/2010-04-01/Accounts/ACxxxx/Messages/MMxxxx/Media/ME27be8a708784242c0daee207ff73db67

                    Você pode usar essa última parte do URL como um nome de arquivo exclusivo e procurar a extensão de arquivo correspondente para o tipo mime.

                    Loading Code Sample...
                          
                          

                          Salve a mídia do URL

                          Outra ideia para esses arquivos de imagem pode ser carregá‐los em um serviço de armazenamento em nuvem, como Azure Blob Storage ou Amazon S3. Você também pode salvá‐los em um banco de dados, se necessário. São apenas arquivos regulares neste momento. Varie. Nesse caso, estamos salvando‐os no diretório público para utilizá‐los mais tarde.

                          Exclua a mídia da Twilio

                          Se você estiver baixando os anexos e não precisar mais deles para serem armazenados pela Twilio, poderá excluí‐los facilmente. Você pode enviar uma solicitação HTTP DELETE para o URL da mídia e ele será excluído, mas você precisará ser autenticado para fazer isso. Para facilitar isso, você pode usar a Biblioteca auxiliar para Node da Twilio. Conforme mostrado aqui:

                          Loading Code Sample...
                                
                                

                                Exclua a mídia dos servidores Twilio

                                Proteja seus webhooks

                                A Twilio é compatível com HTTP básico e Autenticação Digest. A autenticação permite proteger com senha seus URLs TwiML no servidor da Web para que somente você e a Twilio possam acessá‐los. Saiba mais sobre a autenticação HTTP e a validação de pedidos recebidos aqui.

                                O que vem a seguir?

                                Todo o código, em um projeto de trabalho completo, está disponível no GitHub. Se você precisa se aprofundar um pouco mais, pode seguir para nossa Referência de API e saber mais sobre a solicitação de webhook da Twilio e o recurso de mídia da API REST. Além disso, você deve estar ciente do preço de armazenamento de todos os arquivos de mídia que mantém nos servidores da Twilio.

                                Adoraríamos saber o que você cria com isso.

                                Jose Oliveros Kevin Segovia Daniel Erazo
                                Classifique esta página:

                                Precisa de ajuda?

                                Às vezes, todos nós precisamos; a programação é difícil. Receba ajuda agora da nossa equipe de suporte, ou confie na sabedoria da multidão navegando pelo Stack Overflow Collective da Twilio ou buscando a tag Twilio no Stack Overflow.

                                Loading Code Sample...
                                      
                                      
                                      

                                      Obrigado pelo seu feedback!

                                      Selecione o(s) motivo(s) para seu feedback. As informações adicionais que você fornece nos ajudam a melhorar nossa documentação:

                                      Enviando seu feedback...
                                      🎉 Obrigado pelo seu feedback!
                                      Algo deu errado. Tente novamente.

                                      Obrigado pelo seu feedback!

                                      thanks-feedback-gif