在下一个示例代码中,Twilio 将 OPERATOR_PHONE_NUMBER 置于与 CLIENT_PHONE_NUMBER 的对话中,并记录通话。
但我不知道应该用什么代码来控制某些东西,一部或两部手机......:
不存在。
存在但可以通信。
存在,不通信但不接听。
存在,不通信,接听并进行对话。
import com.twilio.Twilio; import com.twilio.rest.api.v2010.account.Call; import com.twilio.rest.api.v2010.account.CallCreator; import com.twilio.type.PhoneNumber; import com.twilio.type.Twiml; public class SimpleCallWithRecording2 { private static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; private static final String AUTH_TOKEN = "9ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; private static final String ASSIGNED_PHONE_NUMBER = "+15999999999999"; //Must be verified numbers in trial account private static final String OPERATOR_PHONE_NUMBER = "+34888888888"; private static final String CLIENT_PHONE_NUMBER = "+34777777777"; public static void main(String[] args) throws Exception { Twilio.init(ACCOUNT_SID, AUTH_TOKEN); PhoneNumber to = new PhoneNumber(OPERATOR_PHONE_NUMBER); PhoneNumber from = new PhoneNumber(ASSIGNED_PHONE_NUMBER); Twiml twiml = new Twiml( "<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + "<Response> " + " <Say voice=\"woman\">This is said by a robotic woman</Say> " + " <Dial> " + " <Number> " + CLIENT_PHONE_NUMBER + "</Number> " + " </Dial> " + "</Response> " ); CallCreator callCreator = Call.creator(to, from, twiml); callCreator.setRecord(true); Call call = callCreator.create(); System.out.println(call); }
}
在文档中,我看到可以使用 callCreator.setStatusCallback(URI.create("https://www.myapp.com/events")) 完成一些操作,并对事件进行一些分类: “发起”、“振铃”、“应答”、“完成”。但我还没有找到“另一边”的代码,我的意思是在 https://www.myapp.com/events 中极端 ¿?
最佳答案
您需要设置一个休息端点并将其设置为状态回调 URL。 该 URL 将接收来自 twilio 的事件。
引用this
编辑:如果您还需要嵌套动词中的事件,请为其定义属性“action”。
即
<Dial action="//callbackURL">
<Number> CLIENT_PHONE_NUMBER </Number>
</Dial>
这样你就会知道你的情况 1 ,2 ,3 ,4 。
要“控制”调用,您只需使用所需的 TwiML 响应回调请求即可。希望这能澄清。
edit2:您需要执行以下操作:
//handles callback url
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
{ //...
TwiMLResponse twiml = new TwiMLResponse();
String callSid = request.getParameter("CallSid");
//handle call specific data
switch(request.getParameter("CallStatus")){
case "no-answer": //construct twiML
case "ringing" ://...
}
//...
response.setContentType("application/xml");
response.getWriter().print(twiml.toXML());
}
关于java - 控制 Twilio 调用的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59819093/