我将 Scala 与 Twilio 的 java SDK 结合使用
我正在发送语音消息并配置当前事件以获取枚举 Number.Event 中所有值的 Webhook 响应
public class Number extends TwiML {
public enum Event {
INITIATED("initiated"),
RINGING("ringing"),
ANSWERED("answered"),
COMPLETED("completed");
在进行异步调用后,我可以获得调用的状态,这是一个不同的枚举
public enum Status {
QUEUED("queued"),
RINGING("ringing"),
IN_PROGRESS("in-progress"),
COMPLETED("completed"),
BUSY("busy"),
FAILED("failed"),
NO_ANSWER("no-answer"),
CANCELED("canceled");
我运行了代码,发送了一条语音消息,回复了它,然后让 Twilio 挂断了。
现在,我正在查看 twilio 的监视器 -> 日志 -> 通话。
我可以看到,当我发起请求时,我得到了字段状态:queued
之后,我看到带有 CallStatus 字段的 multilpe webhook 请求: 发起, 铃声, 进行中, 已完成
编辑:格式化
不幸的是,我对Scala不熟悉。但是,您可以按照 StatusCallbackEvent 文档中的说明订阅事件:
如果您在 StatusCallbackEvent 中指定任何呼叫进度事件 参数,Twilio 将向 您在 POST 请求中提供的 StatusCallback URL。
您可以指定的通话进度事件有:
已启动 - Twilio 将您的呼叫从队列中删除并开始拨号。
响铃 - 电话开始响铃。
已接听 - 呼叫已接听。如果指定了此事件,Twilio 将发送正在进行的状态。
已完成 - 呼叫已完成,无论终止状态如何(可以是忙、已取消、已完成、失败或无人应答)。
这里是 Twilio 文档中的代码,显示了如何在 Java 中设置状态回调事件:
// Install the Java helper library from twilio.com/docs/java/install
import com.twilio.Twilio;
import com.twilio.http.HttpMethod;
import com.twilio.rest.api.v2010.account.Call;
import com.twilio.type.PhoneNumber;
import java.net.URI;
import java.util.Arrays;
public class Example {
// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");
public static void main(String[] args) {
Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
Call call = Call.creator(
new com.twilio.type.PhoneNumber("+14155551212"),
new com.twilio.type.PhoneNumber("+18668675310"),
URI.create("http://demo.twilio.com/docs/voice.xml"))
.setMethod(HttpMethod.GET)
.setStatusCallback(URI.create("https://www.myapp.com/events"))
.setStatusCallbackEvent(
Arrays.asList("initiated",
"answered"))
.setStatusCallbackMethod(HttpMethod.POST)
.create();
System.out.println(call.getSid());
}
}
如果您使用上述内容,“https://www.myapp.com/events”端点(您需要自己自定义 url 和主机)将在调用通过各种状态时接收 webhook。