SUPPORT.TWILIO.COM END OF LIFE NOTICE: This site, support.twilio.com, is scheduled to go End of Life on February 27, 2024. All Twilio Support content has been migrated to help.twilio.com, where you can continue to find helpful Support articles, API docs, and Twilio blog content, and escalate your issues to our Support team. We encourage you to update your bookmarks and begin using the new site today for all your Twilio Support needs.

Twilio SMS および Callログのエクスポート

本記事はオリジナルのヘルプ記事を翻訳したものになります。

もしTwilio SMSまたはCallの"生ログ"をお求めの場合、もしくは解析や、解析の為の指標、レポーティングについて情報をお探しの場合は、本ヘルプ記事ではなく、こちらの"Twilioデータで解析FAQ"をご覧ください。

目次

コンソールもしくはAPIを介した、バルクエクスポート

Twilioでは、コンソールまたはAPIを介してデータのバルクエクスポーティングを行うことができます。このプロセスは主に1,000件以上のログに利用されます。

コンソールを介する場合、以下からSMSとCallのバルクエクスポート方法をご確認頂けます。

BulkExport APIは、ご利用のTwilioプラットフォーム上での全アクティビティの、継続的もしくは1回限りのログ取得の効率的なメカニズムを提供します。詳細はBulk Export API Overviewをご覧ください。

1,000件より少量ログのエクスポート

1,000件より少ないCallログの取得を行うには:

  1. 以下のURLをお手持ちのテキストエディタへコピーします。
    https://api.twilio.com/2010-04-01/Accounts/AC12345/Calls.csv?PageSize=1000
  2. 'AC12345'はダミーのAccount SIDです。ご自身のアカウントのAccount SIDへ書き換えて下さい。
  3. 書き換えたURLをブラウザのURLバーへ貼り付け、エンターを押下下さい。
  4. "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"によるページングプロセスを通し、ログ取得する流れとなります。

API Explorer を使うと、"nextpageuri"のXMLとJson両方のサンプルをご覧頂くことができます。

CSVフォーマットでは"nextpageuri"はありません。そのため、CSV形式でごく直近のログを取得したい場合、XMLもしくはJsonのどちらかでログを取得したあと、CSVへコンバート頂く必要があります。

Have more questions? Submit a request
Powered by Zendesk