有没有办法在使用Twilio拨打电话时传递自定义参数?

时间:2015-05-25 01:54:51

标签: twilio twilio-php

我正在使用Twilio PHP库,但问题实际上与语言无关。我试着做以下事情:

def sort_key(x):
    return x[1]

sorted(d.items(), key=sort_key)

然后我希望在Twilio请求我的$ url_or_AppSID(我的TwiML应用程序)时收到这些参数,但它没有发生。 我知道一种可行的方法是构建一个URL,在查询字符串中添加这些参数并传递我的自定义URL $ url_or_AppSID参数,但这迫使我设置GET方法,我想通过POST请求传递我的自定义参数,而不是GET。 此外,我可能需要使用已经通过POST注册的请求URL的AppSID。

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

3 个答案:

答案 0 :(得分:5)

最后,我收到了Twilio支持部门的回复:

很遗憾,您无法添加自定义参数,如下所示。你是对的,唯一能做到这一点的方法是将参数添加到查询字符串中,我们只是将这些参数传递给你的应用程序。

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

我认为应该考虑将来的版本。

他们回答我:

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

敬请期待未来的发布。

答案 1 :(得分: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);
...

答案 2 :(得分:0)

可能无法在POST中发送自定义参数。唯一的发送方式是在URL中构建GET

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

Docs for reference

相关问题