首页 > 解决方案 > 如何在 Flutter 中使用 Twilio API 连接调用方和接收方

问题描述

我刚刚在我的颤振项目中设置了 Twilio API,我已经能够拨打国际电话号码,但是我遇到了一个问题,我希望有人能指出我正确的方向。当我的颤振应用程序发出呼叫并成功注册为接收者手机上的呼叫时,我如何连接我的颤振应用程序以在接听电话后与接收者进行实时通话?

下面是执行 API 调用的代码

Future<http.Response> accessTwilioAPI() async {
    http.Response response = await http.post(
      Uri.https("api.twilio.com",
          "/2010-04-01/Accounts/ACCOUNT_SID_GOES_HERE/Calls/.json"),
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Authorization': 'Basic ' +
            toAuthCredentials("ACCOUNT_SID_GOES_HERE",
                "AUTH_TOKEN_GOES_HERE")
      },
      body: {
        //body goes here

        "From": "TWILIO_NUMBER",
        "To": "RECIPIENT",
        "Url":
            "TWIML_BIN_URL",
        "duration": "30",
      },
    );

    print(response.body);
  }

更新所以我已经能够建立双向通信,但它还不是我想要的。我所做的是首先拨打我的电话号码(不是 twilio 电话号码),然后我使用 Dial TwiML 动词将呼叫连接到另一个人,它有效,但这种方法的限制是呼叫者必须接听电话在它被路由到接收器之前。

标签: androidiosfluttertwiliovoip

解决方案


Twilio 开发人员布道者在这里。

您可以使用Twilio Voice SDK直接从本机移动应用程序拨打电话。有适用于 iOS、Android 和 JavaScript 的 SDK。Voice SDK 允许您在应用程序中拨打和接听电话,并且可以连接到本机 UI,例如 iOS 上的 CallKit。

就 Flutter 而言,您可以自己集成平台(这个Stack Overflow 答案有描述如何在 Android 中这样做)或查看社区为原生 SDK 构建的 Flutter 包装器。有flutter_twilio_voiceflutter_voice


响应您到目前为止的代码,这是一个坏主意,原因有几个。首先,正如您所发现的,调用是在应用程序的上下文之外进行的。其次,从应用程序内部发出 API 请求意味着您的应用程序将包含或公开您的 API 凭证。如果恶意用户要反编译应用程序,他们可能会提取您的凭据并滥用您的帐户。


推荐阅读