メニュー

Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Android クイックスタート:自分のアプリケーションにパラメーターを渡す

Android アプリケーションから TwiML スクリプトへデータを渡すことで、もっと便利な Twilio アプリケーションを作成できます。

クイックスタートで使用しているアプリケーションでは、すでにそれを実現しています。アプリケーションのテキストフィールドの値を受け取り、Device.connect() メソッドでパラメーターとして渡しています。

...

// Create an outgoing connection
connect(contact.getText().toString(), isPhoneNumber);  // <- capture the value of the Text Field

...

private void connect(String contact, boolean isPhoneNumber) {
    // Determine if you're calling another client or a phone number
    if (!isPhoneNumber) {
        contact = "client:" + contact.trim();
    }

    Map<String, String> params = new HashMap<String, String>();
    params.put("To", contact); // <- and send it to Twilio!

    ...
}

テキストフィールドの値は取得済みなので、それを Twilio に送信しています。実際には、Twilio もそれをウェブサーバーに送信する処理をすでに実行しています。ただし、今は、サーバー側でその値を無視しています。それを変更してみましょう。

それには、アプリケーションの /call エンドポイントを参照するように、TwiML アプリケーションを変更する必要があります。アカウントポータルの TwiML アプリページに移動して、サーバーの /call エンドポイントを参照するように、アプリケーションの Voice URL を、たとえば次のように変更します。

https://bosco-baracus-1201.herokuapp.com/call

そして、変更を保存します。

デバイス上でもう一度アプリケーションを実行します。今回は、実在の電話番号をテキストボックスに入力し、「Dial」ボタンを押します。電話がかかり、自分と話すことができます ! できましたね !

電話がかかってきませんか ? 米国在住ではない場合、国際通話パーミッションを確認してください。また、モニターでエラーを確認してください。

仕組みは以下のとおりです。アプリケーションが Twilio に接続すると、TwiML アプリの Voice URL が python サーバーの /call エンドポイントをポイントし、以下のコードを実行します。

server.py

@app.route('/call', methods=['GET', 'POST'])
def call():
  resp = twilio.twiml.Response()
  from_value = request.values.get('From')
  to = request.values.get('To')

  if not (from_value and to):
    return str(resp.say("Invalid request"))

  from_client = from_value.startswith('client')
  caller_id = os.environ.get("CALLER_ID", CALLER_ID)

  if not from_client:
    # PSTN -> client
    resp.dial(callerId=from_value).client(CLIENT)
  elif to.startswith("client:"):
    # client -> client
    resp.dial(callerId=from_value).client(to[7:])
  else:
    # client -> PSTN
    resp.dial(to, callerId=caller_id)

  return str(resp)

このコードは、Twilio からのリクエスト内の From パラメーターを調べます。接続が Android アプリケーションからの場合、アプリケーションで渡された To パラメーターを取得し、その番号をダイヤルします。

通話が PSTN 電話番号からの場合は、多少状況が変わります。これを掘り下げてみましょう。そろそろ、アプリを鳴らしてみましょう。

次のセクション : 着信通話を受ける »

Rate this page:

ヘルプが必要ですか?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.