5

私は Twilio PHP ライブラリを使用していますが、問題は実際には言語に依存しません。私は次のようなことをしようとしました:

$client = new Services_Twilio('MyAccountSID', 'My auth token');
$client->account->calls->create($from_number, $to_number, $url_or_AppSID, array(
    'TwilioParam1' => 'value1',
    'TwilioParam2' => 'value2',
    'MyCustomParameter1' => 'CustomValue1',
    'MyCustomParamete2' => 'CustomValue2'
));

次に、Twilio が $url_or_AppSID (私の TwiML アプリ) を要求したときに、これらのパラメーターを受け取ることを期待していましたが、そうではありませんでした。これを行うには、これらのパラメーターをクエリ文字列に追加してカスタム URL を $url_or_AppSID パラメーターに渡す URL を作成する方法があることを知っていますが、これにより GET メソッドを設定する必要があり、GET ではなく POST 要求を介してカスタム パラメーターを渡したいと考えています。 . また、POST 経由で登録された要求 URL が既にある AppSID を使用する必要がある可能性があります。

POST メソッドを使用してカスタム パラメータを渡す方法はありますか?

4

3 に答える 3

5

最後に、Twilio サポートから応答を受け取りました。

残念ながら、以下のようなカスタム パラメータを追加することはできません。これを行う唯一の方法は、パラメーターをクエリ文字列に追加することであり、それらのパラメーターをアプリケーションに渡すだけであるという点で、あなたは正しいです。

それから私は彼らに機能要求を送りました:

これは、今後のリリースで考慮する必要があると思います。

彼らは私にこう答えました:

この機能リクエストがまだ存在しない場合。追加します。

今後のリリースにご期待ください。

于 2015-05-26T00:14:03.070 に答える
3

Twilio は、一意の呼び出し SID を各呼び出しに関連付けます。このパラメーターは、呼び出しが作成されるときと、Twilio がハンドラーに要求を送信するときの両方で使用できるため、独自のデータベースを使用してパラメーターを渡すことができます。

データベースを使用することはかなりのオーバーヘッドのように思えるかもしれませんが、通話の「結果」も保存したい場合 (たとえば、顧客は電話に出ましたか? 自動化されたマシンにたどり着きましたか?)、私はすでにすべてを実装しています。とにかく必要な機能。

したがって、呼び出しを行うための私の Java コードは次のようになります。

Map<String, String> params = new HashMap<String, String>();
params.put("From", myTwilioPhoneNumber);
params.put("To", customerPhone);
params.put("Url", myHandlerUrl));
Call call = client.getAccount().getCallFactory().create(params);
// THE LINE BELOW IS THE KEY TO PARAMETER PASSING
db.store(call.getSid(), myCustomParametersJSON);

さて、私のハンドラー サーブレット コードは次のように始まります。

Sting callSid = request.getParameter("CallSid");
// Optionally sleep 20 ms to make sure that data written by
// db.store(call.getSid(), myCustomParametersJSON);
// can now be read.
CustomData customData = parseJSON(db.fetchKey(callSid));
TwiMLResponse twimlResponse = new TwiMLResponse();
Say sayMessage = new Say(makeCustomMessage(customData));
twimlResponse.append(sayMessage);
...
于 2016-02-10T15:13:13.907 に答える