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