你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:拨出电话

通过使用通信服务呼叫 SDK 向应用添加 PSTN 呼叫,开启 Azure 通信服务使用旅程。

重要

Azure 通信服务仅支持拨打美国、波多黎各、加拿大、丹麦、英国和澳大利亚的紧急号码。

Azure 通信服务的语音呼叫 (PSTN) 功能可用于拨打美国、波多黎各和加拿大的紧急号码 911,丹麦的紧急号码 112,澳大利亚的紧急号码 000,以及英国的紧急号码 999 和 112。 Azure 通信服务目前不支持从这些国家或地区之外拨打这些紧急号码,也不支持拨打其他国家或地区的紧急服务。

代码示例

GitHub 上查找此快速入门的最终代码

注意

可以使用 Azure 通信服务 UI 库访问对电话号码的出站呼叫。 借助 UI 库,开发人员只需几行代码即可将启用了 PSTN 的呼叫客户端添加到其应用程序中。

先决条件

设置

创建新的 Node.js 应用程序

打开终端或命令窗口,为应用创建一个新目录,并导航到该目录。

mkdir calling-quickstart
cd calling-quickstart

运行 npm init -y 以使用默认设置创建 package.json 文件。

npm init -y

安装包

使用 npm install 命令安装适用于 JavaScript 的 Azure 通信服务通话 SDK。

npm install @azure/communication-common --save
npm install @azure/communication-calling --save

--save 选项将该库作为 package.json 文件中的依赖项列出。

设置应用框架

本快速入门使用 Parcel 捆绑应用程序资产。 运行以下命令以安装它,并将其列出为 package.json 中的开发依赖项:

npm install parcel --save-dev

在项目的根目录中创建一个 index.html 文件。 我们将使用此文件来配置基本布局,该布局允许用户拨打电话。

代码如下:

<!DOCTYPE html>
<html>
  <head>
    <title>Communication Client - Calling Sample</title>
  </head>
  <body>
    <h4>Azure Communication Services</h4>
    <h1>Calling Quickstart</h1>
    <input 
      id="callee-phone-input"
      type="text"
      placeholder="Who would you like to call?"
      style="margin-bottom:1em; width: 230px;"
    />
    <div>
      <button id="call-phone-button" type="button">
        Start Call
      </button>
      &nbsp;
      <button id="hang-up-phone-button" type="button" disabled="true">
        Hang Up
      </button>
    </div>
    <script src="./app.js" type="module"></script>
  </body>
</html>

在名为 app.js 的项目的根目录中创建一个文件,以包含此快速入门的应用程序逻辑。 添加以下代码以导入呼叫客户端,并获取对 DOM 元素的引用,以便我们可以附加业务逻辑。

import { CallClient, CallAgent } from "@azure/communication-calling";
import { AzureCommunicationTokenCredential } from '@azure/communication-common';

let call;
let callAgent;

const calleePhoneInput = document.getElementById("callee-phone-input");
const callPhoneButton = document.getElementById("call-phone-button");
const hangUpPhoneButton = document.getElementById("hang-up-phone-button");

async function init() {
    const callClient = new CallClient();
    const tokenCredential = new AzureCommunicationTokenCredential('<USER ACCESS TOKEN with VoIP scope>');
    callAgent = await callClient.createCallAgent(tokenCredential);
    //callPhoneButton.disabled = false;
}

init();

发起电话呼叫

指定在通信服务资源中获取的电话号码,该号码将用于发起呼叫:

警告

电话号码应采用 E.164 国际标准格式。 (例如:+12223334444)

添加事件处理程序,以在单击 callPhoneButton 时向你提供的电话号码发起呼叫:

callPhoneButton.addEventListener("click", () => {
  // start a call to phone
  const phoneToCall = calleePhoneInput.value;
  call = callAgent.startCall(
    [{phoneNumber: phoneToCall}], { alternateCallerId: {phoneNumber: 'YOUR AZURE REGISTERED PHONE NUMBER HERE: +12223334444'}
  });
  // toggle button states
  hangUpPhoneButton.disabled = false;
  callPhoneButton.disabled = true;
});

结束电话呼叫

添加事件侦听器,以便在单击 hangUpPhoneButton 时结束当前呼叫:

hangUpPhoneButton.addEventListener("click", () => {
  // end the current call
  call.hangUp({
    forEveryone: true
  });

  // toggle button states
  hangUpPhoneButton.disabled = true;
  callPhoneButton.disabled = false;
});

forEveryone 属性结束所有呼叫参与者的呼叫。

运行代码

使用命令 npx parcel index.html 生成并运行应用。

打开浏览器并导航到 http://localhost:1234/。 你应该会看到以下 Web 应用程序:

已完成的 JavaScript 应用程序的屏幕截图。

可以通过在添加的文本字段中提供电话号码,然后单击“发起电话呼叫”按钮来呼叫真实电话号码。

重要

Azure 通信服务仅支持拨打美国、波多黎各、加拿大、丹麦、英国和澳大利亚的紧急号码。

Azure 通信服务的语音呼叫 (PSTN) 功能可用于拨打美国、波多黎各和加拿大的紧急号码 911,丹麦的紧急号码 112,澳大利亚的紧急号码 000,以及英国的紧急号码 999 和 112。 Azure 通信服务目前不支持从这些国家或地区之外拨打这些紧急号码,也不支持拨打其他国家或地区的紧急服务。

代码示例

GitHub 上查找此快速入门的最终代码

先决条件

先决条件检查

  • 若要查看与通信服务资源关联的电话号码,请登录到 Azure 门户,找到通信服务资源,然后从左侧导航窗格中打开“电话号码”选项卡。

设置

向应用添加 PSTN 功能

通过修改 MainActivity.java,将 PhoneNumber 类型添加到应用中:

import com.azure.android.communication.common.PhoneNumberIdentifier;

发起电话呼叫

指定从通信服务资源中获取的电话号码。 此号码将用作呼叫方 ID 来发起呼叫:

警告

请注意,电话号码应采用 E.164 国际标准格式。 (例如:+12223334444)

修改 MainActivity.java 中的 startCall() 事件处理程序,使其处理电话呼叫:

    private void startCall() {
        EditText calleePhoneView = findViewById(R.id.callee_id);
        String calleePhone = calleePhoneView.getText().toString();
        PhoneNumberIdentifier callerPhone = new PhoneNumberIdentifier("+12223334444");
        StartCallOptions options = new StartCallOptions();
        options.setAlternateCallerId(callerPhone);
        options.setVideoOptions(new VideoOptions(null));
        call = agent.startCall(
                getApplicationContext(),
                new PhoneNumberIdentifier[] {new PhoneNumberIdentifier(calleePhone)},
                options);
    }

启动应用并呼叫回显机器人

现在可以使用工具栏上的“运行应用”按钮 (Shift+F10) 启动应用。 若要进行呼叫,请在添加的文本字段中提供电话号码,然后选择“呼叫”按钮。

警告

请注意,电话号码应采用 E.164 国际标准格式。 (例如:+12223334444)

显示已完成应用程序的屏幕截图。

重要

Azure 通信服务仅支持拨打美国、波多黎各、加拿大、丹麦、英国和澳大利亚的紧急号码。

Azure 通信服务的语音呼叫 (PSTN) 功能可用于拨打美国、波多黎各和加拿大的紧急号码 911,丹麦的紧急号码 112,澳大利亚的紧急号码 000,以及英国的紧急号码 999 和 112。 Azure 通信服务目前不支持从这些国家或地区之外拨打这些紧急号码,也不支持拨打其他国家或地区的紧急服务。

先决条件

先决条件检查

  • 若要查看与通信服务资源关联的电话号码,请登录到 Azure 门户,找到通信服务资源,然后从左侧导航窗格中打开“电话号码”选项卡。
  • 你可以通过适用于 iOS 的 Azure 通信服务通话 SDK 来生成和运行应用:

设置

发起电话呼叫

指定在通信服务资源中获取的电话号码,该号码将用于发起呼叫:

警告

请注意,电话号码应采用 E.164 国际标准格式。 (例如:+12223334444)

修改点击“开始呼叫”按钮时执行的 startCall 事件处理程序:

func startCall() {
        // Ask permissions
        AVAudioSession.sharedInstance().requestRecordPermission { (granted) in
            if granted {
                let startCallOptions = StartCallOptions()
                startCallOptions.alternateCallerId = PhoneNumberIdentifier(phoneNumber: "<YOUR AZURE REGISTERED PHONE NUMBER>")
                self.callAgent!.startCall(participants: [PhoneNumberIdentifier(phoneNumber: self.callee)], options: startCallOptions) { (call, error) in
                    if (error == nil) {
                        self.call = call
                    } else {
                        print("Failed to get call object")
                    }
                }
            }
        }
    }

运行代码

可以通过选择“产品”>“运行”或使用 (⌘-R) 键盘快捷方式,在 iOS 模拟器上生成并运行应用。

快速入门应用的最终外观

你可以通过在添加的文本字段中提供电话号码,然后单击“开始呼叫”按钮来拨打电话。

警告

请注意,电话号码应采用 E.164 国际标准格式。 (例如:+12223334444)

注意

首次发出呼叫时,系统将提示你提供麦克风访问权限。 在生产应用程序中,应使用 AVAudioSession API 检查权限状态,并在未授予权限时正常更新应用程序的行为。

清理资源

如果想要清理并删除通信服务订阅,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。 了解有关清理资源的详细信息。

后续步骤

有关详细信息,请参阅以下文章: