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 方法,我想通过 POST 请求而不是 GET 传递我的自定义参数. 另外,我可能必须使用已经通过 POST 注册的请求 URL 的 AppSID。

有没有办法使用 POST 方法传递自定义参数?

4

3 回答 3

5

最后,我收到了 Twilio Support 的回复:

不幸的是,您不能添加自定义参数,如下所示。您是正确的,您能够做到这一点的唯一方法是将参数添加到查询字符串中,我们只需将这些参数传递给您的应用程序。

然后我向他们发送了一个功能请求:

我认为这应该考虑到未来的发布。

他们回复我:

如果此功能请求尚不存在。我会添加它。

敬请期待未来的发布。

于 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);

现在,我的处理程序 servlet 代码如下所示:

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 回答
0

可能没有办法在POST. 发送的唯一方法是构造URLin GET

最后一个参数数组只能包含特定的keys即SendDigits、IfMachine、Timeout。

文档供参考

于 2015-05-25T06:44:42.973 回答