java - 控制 Twilio 调用的事件

标签 java twilio

在下一个示例代码中,Twilio 将 OPERATOR_PHONE_NUMBER 置于与 CLIENT_PHONE_NUMBER 的对话中,并记录通话。

但我不知道应该用什么代码来控制某些东西,一部或两部手机......:

  1. 不存在。

  2. 存在但可以通信。

  3. 存在,不通信但不接听。

  4. 存在,不通信,接听并进行对话。

    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());
}

参见:IVR - Example

关于java - 控制 Twilio 调用的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59819093/

相关文章:

java - 能够将 ArrayList<Set<String>> 转换为 ArrayList<String> String 而不会出现类转换异常

twilio - 使用 Twilio 在通话中重定向通话

twilio - 使用 <Dial> 时在 TwiML 中使用 IfMachine

twilio - 可编程聊天 - future 适用于 Windows (UWP) 和 Mac 的 Xamarin Forms Chat App

java - 用于查找 HTML 标记及其内容的正则表达式的否定 - java

java - 如何在 PDF 上打印不常见的字符(使用 pdfbox)

java - ResultSet 转 CSV 格式字符串

Java流API : How to use method reference?

twilio - 在开发环境中测试 twilio webhooks

android - 单击以调用带有分机的链接?