透過 Twilio 使用簡訊和語音服務

您可以使用 Twilio 在應用程式中嵌入語音、VoIP 和訊息傳遞功能。Twilio 平台包含 Twilio 標記語言 (TwiML)RESTful API 和適用於網路瀏覽器、Android 和 iOS 的 VoIP SDK。輔助程式庫支援多種語言

TwiML 會指示 Twilio 在您接到來電或收到簡訊時要採取的行動。如果有人撥打電話或傳送簡訊至您其中一組 Twilio 號碼,Twilio 會查詢與該電話號碼相關的網址、發出要求,然後在該網址讀取 TwiML 指示,以決定要採取的行動,如記錄通話或傳送簡訊。

您可以使用 Twilio REST API 查詢與您的帳戶、電話號碼、通話、簡訊和錄音檔相關的中繼資料,也可以撥打電話及傳送簡訊。

定價

詳情請參閱 Twilio 定價

事前準備

    選取或建立 Google Cloud Platform 專案。

    前往「Manage resources」(管理資源) 頁面

設定

如要使用 Twilio 接聽來電及收發簡訊:

  1. 建立 Twilio 帳戶
  2. 在 Twilio 中建立號碼。視應用程式的需求,為您的 Twilio 號碼設定網址。以範例程式碼為例,您可以:
    • 將語音要求網址設定為 https://[your-app-id].appspot.com/call/receive
    • 將簡訊要求網址設定為 https://[your-app-id].appspot.com/sms/receive
  3. appengine-web.xml 中的環境變數區段內配置您的 Twilio 設定。例如:
    Java 7
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <application>YOUR-PROJECT-ID</application>
      <version>YOUR-VERSION-ID</version>
      <threadsafe>true</threadsafe>
      <env-variables>
        <env-var name="TWILIO_ACCOUNT_SID" value="YOUR-TWILIO-ACCOUNT-SID" />
        <env-var name="TWILIO_AUTH_TOKEN" value="YOUR-TWILIO-AUTH-TOKEN" />
        <env-var name="TWILIO_NUMBER" value="YOUR-TWILIO-NUMBER" />
      </env-variables>
    </appengine-web-app>
    Java 8
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <runtime>java8</runtime>
      <threadsafe>true</threadsafe>
      <env-variables>
        <env-var name="TWILIO_ACCOUNT_SID" value="YOUR-TWILIO-ACCOUNT-SID" />
        <env-var name="TWILIO_AUTH_TOKEN" value="YOUR-TWILIO-AUTH-TOKEN" />
        <env-var name="TWILIO_NUMBER" value="YOUR-TWILIO-NUMBER" />
      </env-variables>
    </appengine-web-app>
  4. 將 Twilio 的 Java 程式庫新增至應用程式。例如,如果您使用 Maven,可將程式庫新增至專案的 pom.xml
    <dependency>
      <groupId>com.twilio.sdk</groupId>
      <artifactId>twilio-java-sdk</artifactId>
      <version>6.3.0</version>
    </dependency>
    系統會在您部署應用程式時,安裝所有在 pom.xml 中宣告的依附元件。
  5. 如要為您的應用程式準備本機測試,請使用指令列在本機電腦上設定環境變數。以範例程式碼為例:
    export TWILIO_ACCOUNT_SID=[your-twilio-account-sid]
    export TWILIO_AUTH_TOKEN=[your-twilio-auth-token]
    export TWILIO_NUMBER=[your-twilio-number]
    
  6. 您可以在本機上執行應用程式,以測試回呼和簡訊傳送功能,例如使用 Maven:
    mvn clean jetty:run

複製範例程式碼

您可以在 GitHub 找到與 Twilio 整合的完整程式碼範例。如果您想要使用此範例程式碼,請將範例程式碼複製到您的本機電腦:

Java 7
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/appengine/twilio
Java 8
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/appengine-java8/twilio

接聽來電

如何透過 Twilio 建立您的第一個應用程式:

  1. 設定您的應用程式,以回應來電並傳回 TwiML 指示。在此範例中,TwiML 會指示 Twilio 使用 Say 動詞,將指定的文字轉換成語音:
    @SuppressWarnings("serial")
    public class ReceiveCallServlet extends HttpServlet {
    
      @Override
      public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException,
          ServletException {
        TwiMLResponse twiml = new TwiMLResponse();
        Say say = new Say("Hello from Twilio!");
        try {
          twiml.append(say);
        } catch (TwiMLException e) {
          throw new ServletException("Twilio error", e);
        }
    
        resp.setContentType("application/xml");
        resp.getWriter().print(twiml.toXML());
      }
    }
  2. 將您的專案部署至 App Engine
  3. 將 HTTP POST 要求傳送至 http://your-app-id.appspot.com/call/receive,該網址就會傳回下列文字: ... Hello from Twilio!
  4. 複製 http://your-app-id.appspot.com/call/receive 網址,然後前往 Twilio 帳戶的「Numbers」頁面,將網址貼到「Voice URL」方塊中。
  5. 現在,請撥打您的 Twilio 號碼!您應該會聽見「Hello from Twilio!」的語音回應。當您撥打電話時,Twilio 會擷取您的網址,然後執行上述 XML 指示。如果沒有聽到其他指示,Twilio 就會掛斷電話。

傳送簡訊

如要使用 Twilio 傳送簡訊,您可以使用 Twilio Java 輔助程式庫,以及 JAR 檔案中包含的 Java 類別。

  1. 設定您的應用程式以傳送簡訊。例如,SendSmsServlet.java 會傳送簡訊問候語:
    @SuppressWarnings("serial")
    public class SendSmsServlet extends HttpServlet {
    
      @Override
      public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException,
          ServletException {
        final String twilioAccountSid = System.getenv("TWILIO_ACCOUNT_SID");
        final String twilioAuthToken = System.getenv("TWILIO_AUTH_TOKEN");
        final String twilioNumber = System.getenv("TWILIO_NUMBER");
        final String toNumber = (String) req.getParameter("to");
        if (toNumber == null) {
          resp.getWriter()
              .print("Please provide the number to message in the \"to\" query string parameter.");
          return;
        }
        TwilioRestClient client = new TwilioRestClient(twilioAccountSid, twilioAuthToken);
        Account account = client.getAccount();
        MessageFactory messageFactory = account.getMessageFactory();
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("To", toNumber));
        params.add(new BasicNameValuePair("From", twilioNumber));
        params.add(new BasicNameValuePair("Body", "Hello from Twilio!"));
        try {
          Message sms = messageFactory.create(params);
          resp.getWriter().print(sms.getBody());
        } catch (TwilioRestException e) {
          throw new ServletException("Twilio error", e);
        }
      }
    }
  2. to 參數變更為使用真實的電話號碼。to 號碼可以是任何外撥電話號碼,例如您的手機號碼。
  3. 部署更新過的程式碼,然後針對您的應用程式載入下列要求路徑,藉此觸發簡訊:
    http://.appspot.com/send_sms
    

接收簡訊

如要使用 Twilio 接收傳入的簡訊,請使用 Twilio Java 輔助程式庫

  1. 設定您的應用程式,以回應傳入的簡訊並傳回 TwiML 指示。例如:
    @SuppressWarnings("serial")
    public class ReceiveSmsServlet extends HttpServlet {
    
      @Override
      public void service(HttpServletRequest request, HttpServletResponse response) throws IOException,
          ServletException {
        String fromNumber = request.getParameter("From");
        String body = request.getParameter("Body");
        String message = String.format("Hello, %s, you said %s", fromNumber, body);
    
        TwiMLResponse twiml = new TwiMLResponse();
        Message sms = new Message(message);
        try {
          twiml.append(sms);
        } catch (TwiMLException e) {
          throw new ServletException("Twilio error", e);
        }
    
        response.setContentType("application/xml");
        response.getWriter().print(twiml.toXML());
      }
    }
  2. 將更新過的程式碼部署至 App Engine。
  3. 傳送簡訊至您的 Twilio 號碼,您就會收到回應的問候語。

後續步驟

您已瞭解一些基本功能,接下來您可以進一步瞭解其他功能,以及打造安全可擴充應用程式的最佳做法:

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Java 適用的 App Engine 標準環境