我正在使用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方法传递自定义参数?
答案 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。