java - 控制 Twilio 调用的事件
问题描述
在下一个示例代码中,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 的事件。
参考这个
编辑:如果您还需要来自嵌套动词的事件,请为其定义属性“动作”。
IE
<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());
}
请参阅:IVR - 示例
推荐阅读
- java - 如何在我的应用程序可执行 jar 文件中增加 JVM 堆大小?项目类型为 Maven 项目
- r - R bs 函数,数值解释
- c++ - 没有模板特化的模板阶乘函数
- jquery - 使用 JSOM 的自定义视图
- django - django中的form_valid()是否默认保存ModelForm实例?
- asp.net - 开发者签署凭证的风险
- r - 在绘制具有预定 y 坐标的树状网络时确定节点的“最佳”x 坐标
- typescript - 关于 X 类型参数的 getParam 错误不可分配给“导航”类型的参数 | “屏幕道具” | “导航选项”'
- visual-studio - 使 Visual Studio 2019 始终从开始栏以管理员身份运行最近的解决方案列表
- ruby-on-rails - 重构列表排序方法的控制器代码