本記事はオリジナルのヘルプ記事を翻訳したものになります。
もしTwilio SMSまたはCallの"生ログ"をお求めの場合、もしくは解析や、解析の為の指標、レポーティングについて情報をお探しの場合は、本ヘルプ記事ではなく、こちらの"Twilioデータで解析FAQ"をご覧ください。
目次
- コンソールもしくはAPIを介した、バルクエクスポート
- 1,000件より少量ログのエクスポート
- 検索条件を絞り込む
- 大量のデータを取得する
- Twilio CLIサンプル(Bash利用)
- PHPコードサンプル
コンソールもしくはAPIを介した、バルクエクスポート
Twilioでは、コンソールまたはAPIを介してデータのバルクエクスポーティングを行うことができます。このプロセスは主に1,000件以上のログに利用されます。
コンソールを介する場合、以下からSMSとCallのバルクエクスポート方法をご確認頂けます。
BulkExport APIは、ご利用のTwilioプラットフォーム上での全アクティビティの、継続的もしくは1回限りのログ取得の効率的なメカニズムを提供します。詳細はBulk Export API Overviewをご覧ください。
1,000件より少量ログのエクスポート
1,000件より少ないCallログの取得を行うには:
- 以下のURLをお手持ちのテキストエディタへコピーします。
https://api.twilio.com/2010-04-01/Accounts/AC12345/Calls.csv?PageSize=1000
- 'AC12345'はダミーのAccount SIDです。ご自身のアカウントのAccount SIDへ書き換えて下さい。
- 書き換えたURLをブラウザのURLバーへ貼り付け、エンターを押下下さい。
- "Username" と "Password"を求めるプロンプトが表示されますので、"Username" へはAccount SID、"Password"にはAuth Tokenを入力します。
いかがでしょうか。上記ステップにより、Calls list resourceへのGETリクエストの実行に成功したことになります。同様のステップでSMSログもダウンロードできます。SMSログの場合は、URLは以下になります。
https://api.twilio.com/2010-04-01/Accounts/AC12345/Messages.csv?PageSize=1000
上記URLを利用すると、Messages List resourceへのGETリクエスト実行となります。
検索条件を絞り込む
上記で試したリクエストは、Twilioプロジェクト上の全てのSMSログもしくはCallログを取得するものです。そかし全てではなく、部分的にログを取得する方法をご紹介します。
例えば、ご利用のTwilio番号のうち、+17813334444への通話のみ、もしくは2012年6月1日に送信されたSMSだけログを取得したい場合、Twilioでは、ログ取得時に"To"、”From” "StartTime"(Callログ取得に利用可) "DateSent"(SMSログ取得に利用可)などのフィルタをご利用頂けます。
https://api.twilio.com/2010-04-01/Accounts/AC12345/Messages.csv?DateSent=2012-06-01&PageSize=1000
ログ取得時にご利用頂けるその他のフィルタは、Calls list documentation と Messages list documentation をご覧ください。
大量のデータを取得する
Twilio APIから、大量のデータをダウンロードしたい場合、Twilio CLIもしくは Twilio Helper Libraries のご利用をおすすめします。
Twilio CLIサンプル(Bash利用)
Twilio CLIと共にBashスクリプトを用いることで、環境設定にかかる労力を最小限に、SMSログを簡単に取得できます。以下のコード実行前に、Twilio CLI とのインストールと CLI経由のログイン が必要です:
twilio api:core:messages:list --no-limit --properties="sid,from,to,body,status,direction" \
| while read -r row ; do
echo "$row" >> data.tsv
done
出力に含めることができるMessageプロパティの全リストは、Twilio Message Resource をご確認ください。
PHPコードサンプル
PHP Helper Library を用いてCSV形式でSMSログを取得するシンプルなサンプルは以下になります。もしこのサンプルを利用してTimeoutになってしまった場合、またログ取得までに時間が非常にかかる場合は、DateSent
フィルタの期間範囲を小さくして再度お試しください。
<?php
/**
* Download the library from: https://github.com/twilio/twilio-php
* Copy the 'Twilio' folder into a directory containing this file.
*/
require __DIR__ . '/Twilio/autoload.php';
use Twilio\Rest\Client;
/* Your Twilio account sid and auth token */
$account_sid = "ACXXXXXXXXX";
$auth_token = "YYYYYYYYYYYY";
/* Download data from Twilio API */
$client = new Client($account_sid, $auth_token);
$messages = $client->messages->stream(
array(
'dateSentAfter' => '2015-05-01',
'dateSentBefore' => '2015-06-01'
)
);
/* Browser magic */
$filename = $account_sid."_sms.csv";
header("Content-Type: application/csv");
header("Content-Disposition: attachment; filename={$filename}");
/* Write headers */
$fields = array( 'SMS Message SID', 'From', 'To', 'Date Sent', 'Status', 'Direction', 'Price', 'Body' );
echo '"'.implode('","', $fields).'"'."\n";
/* Write rows */
foreach ($messages as $sms) {
$row = array(
$sms->sid,
$sms->from,
$sms->to,
$sms->dateSent->format('Y-m-d H:i:s'),
$sms->status,
$sms->direction,
$sms->price,
$sms->body
);
echo '"'.implode('","', $row).'"'."\n";
}
もし公式のHelper Libraryを利用したくない場合、Twilio APIが提供するビルトインAttributeである"nextpageuri"を扱うアプリケーションを独自に開発頂く必要があります。"nextpageuri"は最後に取得したレコードが、どのCallもしくはSMSであるかと追跡するURLであり、開発されたアプリケーションは"nextpageuri"によるページングプロセスを通し、ログ取得する流れとなります。
CSVフォーマットでは"nextpageuri"はありません。そのため、CSV形式でごく直近のログを取得したい場合、XMLもしくはJsonのどちらかでログを取得したあと、CSVへコンバート頂く必要があります。