使用 Nexmo 的网络浏览器音频通话 PHP Laravel

Web browser audio call using Nexmo PHP Laravel

我想从网络应用程序 (PHP/Laravel) 拨打来自(购买的 Nexmo 号码)的任何手机号码。这就像一个 two-way 通信调用。

该场景假定在 web 应用程序 (PHP/Laravel) 页面中显示呼叫 driver 选项放置呼叫图标。一旦客户点击呼叫图标,然后从(购买的 Nexmo 号码)拨打 driver 号码。

我已经用这个 API 创建了一个调用。

    $ncco = [
      [
        'action' => 'talk',
        'voiceName' => 'Joey',
        'text' => 'This is a text-to-speech test message.'
      ]
    ];

    $call = new \Nexmo\Call\Call();
    $call->setTo('XXXXXXXXXXXX')
      ->setFrom('XXXXXXXXXXXX')
      ->setNcco($ncco);

    $response = $client->calls()->create($call);
    echo $response->getId();

Nexmo Voice API 此处 one-way 通信仅对我有效。例如,文本到语音呼叫对我有用,上面的语音 API 代码 运行 呼叫自动到达目的地号码(购买的 Nexmo 号码)。

有人做过这个场景吗?当您单击 phone 图标时,它会呼叫客户 + 您可以使用门户网站与客户交谈?

有两种方法可以解决这个问题。

呼叫桥接

您可以通过让系统呼叫您来将两个号码连接在一起,如果您接听然后呼叫其他人将它们连接起来。这一切都可以在服务器端完成,就像您在上面所做的一样,NCCO 只是略有变化。

$ncco = [
    [
        'action' => 'connect',
        'endpoint' => [
            [
                'type' => 'phone',
                'number' => DRIVER_NUMBER
            ]
        ]
    ]
];

$call = new \Nexmo\Call\Call();
$call->setTo(CUSTOMER_NUMBER)
  ->setFrom(VONAGE_NUMBER)
  ->setNcco($ncco);

$response = $client->calls()->create($call);
echo $response->getId();

唯一真正的问题是用户体验。用户可能希望呼叫像真正的 phone 呼叫一样工作(单击按钮,听到铃声,希望驱动程序连接)。您将需要添加一些额外的 NCCO 选项,例如流式传输铃声、检查对方是否拒绝呼叫或从不接听并做出适当响应等,但这可以通过推动一些 NCCO 并观察语音事件来完成。

在Browser/In应用中

另一种选择是我们的Client SDK, which is available for front-end JavaScript, iOS, and Android. This can be used to place a call from a browser or app, and do functionally the same but from within a dedicated interface. A short tutorial can be found at https://developer.nexmo.com/client-sdk/tutorials/app-to-phone/introduction/javascript