【问题标题】:Getting StatusCallback events from Twilio in Java only仅在 Java 中从 Twilio 获取 StatusCallback 事件
【发布时间】:2016-08-08 11:05:35
【问题描述】:

我正在尝试来自 Twilio 的短信和电话。我能够从我的 Java 代码发送短信和拨打电话。但我不知道如何在相同的 Java 代码中获取状态回调。

有什么方法可以在我的 java 代码中获取状态回调事件?

params.add(new BasicNameValuePair("StatusCallback", "https://www.myapp.com/events"));
params.add(new BasicNameValuePair("StatusCallbackMethod", "POST"));
params.add(new BasicNameValuePair("StatusCallbackEvent", "initiated"));
params.add(new BasicNameValuePair("StatusCallbackEvent", "ringing"));
params.add(new BasicNameValuePair("StatusCallbackEvent", "answered"));
params.add(new BasicNameValuePair("StatusCallbackEvent", "completed"));

另外,我们有什么方法可以在 Java 的函数调用函数中提供 TwiML 数据(用于语音呼叫的 xml),而不是给它一个指向 TwiML/XML 文件的 URL。 params.add(new BasicNameValuePair("Url", "http://demo.twilio.com/docs/voice.xml"));

CallFactory callFactory = client.getAccount().getCallFactory();
Call call = callFactory.create(params);

【问题讨论】:

    标签: java twilio twilio-api


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    Twilio 执行 status callbacks as webhooks,就像您在 receive an incoming callmessage 时得到的一样。为了接收这些 webhook,您的应用程序需要能够被 Twilio 访问。

    如果您在本地遇到困难,那么您可能有兴趣查看ngrok,即a great tool for exposing your local development environment to external services like Twilio

    在回答您的其他问题时,您无法在 API 请求中向 Twilio 提供您的 TwiML。您需要有一个服务器,当呼叫连接时,Twilio 可以从中请求 TwiML。

    【讨论】:

    • 感谢@philnash 的回答。在我的 Java 应用程序中获取状态回调看起来有点复杂。更好的是,我将使用 PHP 脚本作为最简单的回调方法。
    • 您不必放弃Java!这是一个tutorial on sending and receiving messages in Java,可能有助于使事情更清楚。或者quick start guide for Java 也可能有帮助。
    • 谢谢@philnash。您提到的链接提到了如何接收短信或电话。我到底想要做的是打电话给用户并想要得到调用的结果,无论是连接还是购买还是用户没有接听,这样我就可以在我的数据库中相应地标记它。就像忙碌的人数或用户没有接听电话一样,我想知道反馈是 java 本身的结果,但 API 只接受回调 URL,没有我拨打电话的 java 的回调事件。
    • 不,它不是基于语言中的回调,因为回调本身是异步发生的。因此,您需要实现一个可以接收这些 webhook 的 web 服务器。创建呼叫时,您将获得一个 callSid,即 ID。当您收到一个 webhook 时,您将获得有关您需要的呼叫的所有详细信息,包括 callSid,以便您可以将其与数据库中的内容相匹配。您可以在此处查看有关 Twilio 向您提出的所有请求的详细信息:twilio.com/docs/api/twiml/twilio_request