Como usar serviços de voz e SMS via Twilio

A Twilio está impulsionando o futuro da comunicação empresarial permitindo 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 escalonar. 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 chamadas VoIP de qualquer telefone, tablet ou navegador, além de ser compatível com WebRTC.

Preços

Os clientes do Google App Engine recebem créditos gratuitos para mensagens SMS ou minutos de chamadas 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.

Plataforma

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

TwiML

O TwiML é um conjunto de instruções que define o que acontece quando você recebe uma chamada 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 do TwiML no URL para determinar o que fazer:

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

Saiba mais sobre os outros verbos e recursos na documentação da Twilio Markup Language.

REST API

Com a REST API do Twilio, você consulta metadados sobre sua conta, números de telefone, chamadas, mensagens de texto e gravações. Você também faz outras coisas incríveis como realizar chamadas 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 saber mais, consulte a REST API do Twilio.

Como copiar o código de amostra

Uma amostra de código completa mostrando a integração com o Twilio está disponível no GitHub. Se quiser usar esse código de amostra, copie-o para a máquina local:

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

Configurar

Se quiser usar o Twilio para receber chamadas e enviar ou receber um SMS:

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

  2. Crie uma conta do Twilio.

  3. No Twilio, crie um número. Configure os URLs dele conforme necessário para seu 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 do 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. Para se preparar para testes locais do aplicativo, defina 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 retornos de chamada e o envio de SMS. Por exemplo:

    go run twilio.go
    

Como receber uma chamada

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 chamada e retornar as instruções do 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. Depois de implantá-lo, envie uma solicitação POST 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 sua 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, o Twilio busca seu URL e executa as instruções XML listadas acima. 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 o seu número de telefone 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 recebido usando o Twilio, você pode usar o pacote Twilio Go.

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 em 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