gpt4 book ai didi

java - 控制 Twilio 调用的事件

转载 作者:行者123 更新时间:2023-12-02 09:05:50 25 4
gpt4 key购买 nike

在下一个示例代码中,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com