Twilio API 在获取会议时响应缓慢

Twilio API has slow response when getting conferences

我不知道是我做错了什么,还是 Twilio 在请求记录时天生就慢。当请求包含 php 的会议列表时,响应最多可能需要 5-7 分钟,这对于任何类型的应用程序来说似乎都不可行。

这是我使用的代码示例:

$conferences = $client->account->conferences->getIterator(0, 50, array(
    ));
    foreach ($conferences as $conference) {
        $conferenceRoom = $client->account->conferences->get($conference->sid);
        $date1 = new DateTime($conference->date_created);
        $date2 = new DateTime($conference->date_updated);
        $interval = $date1->diff($date2);
        $page = $conferenceRoom->participants->getPage(0, 50);
        $participants = $page->participants;
        $participantCount = count($participants);
        $result['conferences'][$conference->sid]['friendly_name'] = $conference->friendly_name;
        $result['conferences'][$conference->sid]['sid']           = $conference->sid;
        $result['conferences'][$conference->sid]['participants']  = $participantCount;
        $result['conferences'][$conference->sid]['status']        = $conference->status;
        $result['conferences'][$conference->sid]['duration']      = $interval->format('%H:%I:%S%');
        $result['conferences'][$conference->sid]['date_created']  = strtotime($conference->date_created);
        $result['conferences'][$conference->sid]['date']          = $conference->date_created;
}
echo json_encode($result);

虽然我认为代码没有问题,但在处理 API 时,通常最好有一个单独的服务(例如 CRON 作业或单独的线程)来调用 API 并缓存结果。然后您的实时应用程序将从缓存的结果中读取...这样您的网站速度就不会受到第 3 方网站的影响。显示一个小笔记可能是个好主意,类似于 "Results last updated on XYZ"

导致页面加载缓慢的原因有很多。

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

您正在对 PHP 库中的会议资源使用 getIterator 方法。 getIterator return 是一个为您处理分页的交互器,所以只要您继续循环它,它就会不断从 Twilio API 请求页面。我的猜测是你有很多会议所以你一直在寻呼一段时间。

此外,对于每个会议,您都可以为会议资源发出 API 呼叫,并为呼叫中的参与者发出另一个 API 呼叫。即使您的帐户中只有 10 个会议,您也会拨打 30 API 个电话。

因此,虽然 Twilio 不会花 5-7 分钟来 return 一个响应,但您的脚本正在对 API 进行大量工作,这需要很长时间。

我同意 Half Crazed(顺便提一下,这个名字很棒)关于缓存结果的建议。您可以通过设置 event callback URL for your calls 在您自己的系统中更新会议 object,以便 Twilio 可以向您发送有关电话会议的状态更新,您可以在此时保存有关它的详细信息。