Como usar serviços de voz e SMS via Twilio

A Twilio está impulsionando o futuro da comunicação empresarial ao permitir que os desenvolvedores incorporem voz, VoIP e mensagens a aplicativos. Eles virtualizam toda a infraestrutura necessária em um ambiente global baseado em nuvem, que é exposta por meio da plataforma de API de comunicações da Twilio. Os aplicativos são fáceis de criar e escalonáveis. Tenha flexibilidade com um modelo de pagamento por utilização e aproveite a confiabilidade da nuvem.

O Twilio Voice permite que seu aplicativo faça e receba ligações telefônicas. Com o Twilio SMS, ele envia e recebe mensagens de texto. Já o Twilio Client habilita ligações VoIP de qualquer celular, tablet ou navegador, além de ser compatível com WebRTC.

Preços

Os clientes do Google App Engine recebem créditos gratuitos (em inglês) para mensagens SMS ou minutos de ligações recebidas ao fazer o upgrade.

O Twilio é um serviço com pagamento por utilização. Não há taxas de configuração, e você pode encerrar a conta quando quiser. Veja mais detalhes em Preços do Twilio (em inglês).

Plataforma

A plataforma do Twilio é formada pela Twilio Markup Language (TwiML), uma API RESTful e SDKs de VoIP para navegadores da Web, Android e iOS. Bibliotecas auxiliares estão disponíveis em várias linguagens. Você encontra a lista completa em bibliotecas auxiliares do Twilio (em inglês).

TwiML

A TwiML é um conjunto de instruções que define o que acontece quando você recebe uma ligação ou SMS no número de telefone do Twilio. Quando isso ocorre, o Twilio procura o URL associado a esse número e faz uma solicitação para ele. O Twilio lê as instruções TwiML no URL para determinar o que fazer:

  • <Say>: converte texto em voz.
  • <Record>: grava a ligação.
  • <Play>: reproduz uma mensagem para o autor da ligação.
  • <Gather>: solicita que o autor da ligação use o teclado.
  • <Message>: envia uma mensagem.

Saiba mais sobre os outros verbos e recursos na documentação da Twilio Markup Language (em inglês).

API REST

Com a API REST do Twilio, você consulta metadados sobre sua conta, números de telefone, ligações, mensagens de texto e gravações. Você também pode fazer outras coisas legais, como fazer ligações e enviar mensagens de texto.

Como a API é baseada nos princípios REST, é muito fácil escrever e testar os aplicativos. É possível usar o navegador para acessar os URLs e praticamente todos os clientes HTTP em qualquer linguagem de programação para interagir com a API. Para mais informações, confira a API REST do Twilio (em inglês).

Como copiar o código de amostra

Está disponível no GitHub um código de amostra completo que mostra a integração com o Twilio. Se quiser usar este código de amostra, copie-o para a máquina local:

go get -u -d -v github.com/GoogleCloudPlatform/golang-samples/twilio
cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/appengine_flexible/twilio

Configuração

Se quiser usar o Twilio para receber ligações e enviar ou receber um SMS:

  1. Crie um projeto. Para mais informações, consulte "Hello, World!" para Go no App Engine.

  2. Crie uma conta do Twilio (em inglês).

  3. No Twilio, crie um número. Configure os respectivos URLs, conforme necessário ao aplicativo. Por exemplo, para o código de amostra:

    • Configure o URL da solicitação de voz como https://[your-app-id].appspot.com/call/receive.
    • Configure o URL da solicitação de SMS como https://[your-app-id].appspot.com/sms/receive.
  4. Defina as configurações do Twilio na seção de variáveis de ambiente em app.yaml. Por exemplo:

    env_variables:
      TWILIO_ACCOUNT_SID: your-account-sid
      TWILIO_AUTH_TOKEN: your-auth-token
      TWILIO_NUMBER: your-twilio-number

  5. Faça o download dos pacotes do Twilio na máquina local usando a linha de comando. Por exemplo:

    go get -u bitbucket.org/ckvist/twilio/twiml
    go get -u bitbucket.org/ckvist/twilio/twirest
    
  6. Inclua o pacote do Twilio na instrução de importação do aplicativo. Por exemplo:

    import (
    	"bitbucket.org/ckvist/twilio/twiml"
    	"bitbucket.org/ckvist/twilio/twirest"
    )
    

  7. Prepare-se para os testes locais do aplicativo: configure as variáveis de ambiente na máquina local usando a linha de comando. Por exemplo, para o código de amostra, use:

    export TWILIO_ACCOUNT_SID=[your-twilio-account-sid]
    export TWILIO_AUTH_TOKEN=[your-twilio-auth-token]
    export TWILIO_NUMBER=[your-twilio-number]
    
  8. É possível executar o aplicativo no local para testar os callbacks e o envio de SMS. Por exemplo:

    go run twilio.go
    

Como receber uma ligação

Depois de concluir a configuração, crie o primeiro aplicativo:

A função receiveCallHandler em twilio.go mostra como responder a uma chamada recebida e retornar instruções TwiML:

func receiveCallHandler(w http.ResponseWriter, r *http.Request) {
	resp := twiml.NewResponse()
	resp.Action(twiml.Say{Text: "Hello from App Engine!"})
	resp.Send(w)
}
O gerenciador /call/receive em app.rb mostra como responder a uma ligação e retornar as instruções TwiML:

# Answers a call and replies with a simple greeting.
post "/call/receive" do
  content_type :xml

  response = Twilio::TwiML::VoiceResponse.new do |r|
    r.say(message: "Hello from Twilio!")
  end

  response.to_s
end
  1. Implante o projeto no App Engine. Em seguida, envie uma solicitação POST HTTP para http://your-app-id.appspot.com/call/receive, que retorna o seguinte texto:

    <?xml version="1.0" encoding="UTF-8"?>
      <Response>
        <Say>Hello from Twilio!</Say>
      </Response>
    
  2. Copie e cole o URL http://your-app-id.appspot.com/call/receive na caixa "Voice URL", localizada na página "Numbers" da conta do Twilio.

  3. Agora ligue para seu número do Twilio. Você ouvirá uma mensagem que diz "Hello from Twilio" em resposta. Quando você faz uma ligação, seu URL é buscado, e as instruções XML listadas acima são executadas. Depois, a ligação é encerrada porque não há mais instruções.

Como enviar um SMS

A função sendSMSHandler em twilio.go mostra como enviar um SMS:

func sendSMSHandler(w http.ResponseWriter, r *http.Request) {
	to := r.FormValue("to")
	if to == "" {
		http.Error(w, "Missing 'to' parameter.", http.StatusBadRequest)
		return
	}

	msg := twirest.SendMessage{
		Text: "Hello from App Engine!",
		From: twilioNumber,
		To:   to,
	}

	resp, err := twilioClient.Request(msg)
	if err != nil {
		http.Error(w, fmt.Sprintf("Could not send SMS: %v", err), 500)
		return
	}

	fmt.Fprintf(w, "SMS sent successfully. Response:\n%#v", resp.Message)
}
  1. Altere o parâmetro to para usar um número de telefone real. O to pode ser qualquer número de saída, como um número de celular.

  2. Implante o código atualizado e envie o SMS, colocando este URL em um navegador da Web: http://your-app-id.appspot.com/sms/send

Como receber um SMS

Para receber um SMS usando o Twilio, utilize o pacote do Twilio Go (em inglês).

A função receiveSMSHandler em twilio.go mostra como responder a um SMS recebido e retornar instruções TwiML:


func receiveSMSHandler(w http.ResponseWriter, r *http.Request) {
	sender := r.FormValue("From")
	body := r.FormValue("Body")

	resp := twiml.NewResponse()
	resp.Action(twiml.Message{
		Body: fmt.Sprintf("Hello, %s, you said: %s", sender, body),
		From: twilioNumber,
		To:   sender,
	})
	resp.Send(w)
}

Implante o código atualizado no App Engine e, em seguida, envie um SMS para o número do Twilio. Você receberá uma saudação como resposta.

Saiba mais sobre o Twilio

Agora que você já usou alguns recursos básicos, conheça outros, além de algumas práticas recomendadas para criar aplicativos seguros e escalonáveis:

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente flexível do App Engine para Go