Получение CSV-файлов записей звонков через REST API

Автор: | 16.07.2026

Один из наших клиентов недавно поинтересовался, можем ли мы предоставлять записи звонков в формате CSV через наш API для голосовой связи. Это совершенно разумный запрос, и мы, безусловно, могли бы поддержать его в будущем. Но пока что я подготовил небольшой PHP-скрипт для извлечения XML-записей звонков из нашего REST API и вывода их в формате CSV в стандартный вывод (stdout).

/*

Copyright (c) 2008 Twilio, Inc.Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

*/

# Требует библиотеку TwilioRest Helper Library, расположенную по адресу

# http://www.twilio.com/resources/sdk/twilio-rest-sdk-php-1.0.tar.gz

require “twiliorest.php”;

function usage($msg = null) {

if(strlen($msg))

echo “$msgn”;

echo “Использование: calls-to-csv.php –account-sid accountsid –auth-token authtoken [–caller caller-phone-number] [–called called-phone-number] [–records #]n”;

echo “Выводит CSV-записи звонков в стандартный вывод в формате:n”;

echo “CallSidCallerCalled StartTimeEndTimeDurationCostn”;

die;

}

// инициализация количества страниц для выборки

$records = 50;

// начало списка параметров URL-строки запроса для отправки с запросом

$params = array();

array_shift($argv);

while($arg = array_shift($argv)) {

switch($arg) {

case “–caller”:

$params[“Caller”] = array_shift($argv);

break;

case “–called”:

$params[“Called”] = array_shift($argv);

break;

case “–records”:

if(!is_numeric($records = array_shift($argv)))

usage(“Неверное количество записей: $records“);

break;

case “–account-sid”:

$accountSid = array_shift($argv);

break;

case “–auth-token”:

$authToken = array_shift($argv);

break;

default:

usage(“Неизвестный параметр: $arg“);

break;

}

}

// проверка, были ли предоставлены accountsid и authtoken

if(!strlen($accountSid))

usage(“AccountSid обязателен”);

if(!strlen($authToken))

usage(“AuthToken обязателен”);

// вычисление количества страниц по 50 записей в каждой

$pages = ceil($records / 50);

// создание Rest Client

$client = new TwilioRestClient($accountSid, $authToken);

// вывод строки заголовка

fputcsv(STDOUT, array(“Sid”,”Caller”,”Called”,”StartTime”,”EndTime”,”Duration”));

// для заданного количества страниц, получение и вывод CSV

for($i=0; $i<$pages; $i++) { // добавление нужной страницы в строку запроса $params[“page”] = $i; // выполнение запроса и парсинг XML-ответа $response = $client->request(“/2008-08-01/Accounts/$accountSid/Calls”, “GET”, $params);

if($response->IsError)

die(“Ошибка при обращении к Twilio API: {$response->ErrorMessage}“);

// вывод нужных параметров в формате CSV

foreach($response->ResponseXml->Calls->Call AS $call)

fputcsv(STDOUT, array($call->Sid, $call->Caller, $call->Called, $call->StartTime, $call->EndTime, $call->Duration));

// если достигнуто общее количество страниц, досрочно выйти

if((int)$response->ResponseXml->Calls[‘page’] == (int)$response->ResponseXml->Calls[‘numpages’]-1)

break;

}

?>

— Скачайте скрипт (скопируйте и вставьте)

— Скачайте библиотеку Twilio Helper Library для PHP здесь, если вы еще этого не сделали. Поместите ее в тот же каталог, что и вышеуказанный скрипт, или измените скрипт, чтобы он указывал на расположение файла twiliorest.php на вашем сервере.

— Запустите скрипт с именованными аргументами. Для справки просто запустите с флагом –help. Аргументы –account-sid и –auth-token являются обязательными по очевидным причинам. Другие аргументы необязательны.

— Скорее всего, вы захотите сохранить CSV в файл, просто перенаправьте стандартный вывод в файл: php calls-to-csv.php –account-sid XXX –auth-token XXX > my-calls.csv

Удачи!