メールの配信状況を確認する
配信予約したメールの現在のステータスを確認するには POST /api/v1/get_delivery_status を使用します。
リクエスト
| キー | データ型 | 必須 | 説明 |
|---|---|---|---|
delivery_id | Integer | ○ | 状況を確認したい配信のID。 |
レスポンス
レスポンスは配列形式で、以下の情報が含まれます。
| 添字 | データ型 | 説明 |
|---|---|---|
| 0 | Integer | 配信フェーズを数値で返します。詳細は下表を参照。 |
| 1 | String | 「引き渡し中」「引き渡し終了」フェーズの補足情報(例: 配信対象数 3054 (37%完了))。 |
配信フェーズの補足情報について
1 番目の添字に返される数値は以下の意味を持ちます。
| 数値 | 名称 | 説明 |
|---|---|---|
0 | 配信予約中 | 配信予約がされている状態。配信処理はまだ行われていません。 |
1 | 配信リスト作成中 | 配信時刻になり、配信対象となる会員リストを作成している状態です。 |
2 | 引き渡し中 | 配信処理を実行している状態です。 |
3 | 引き渡し終了 | 配信処理が完了した状態です。 |
サンプルコード
配信予約を行い、配信処理が完了するまで 10 秒ごとにステータスを確認し続ける例です。
- PHP
<?php
// ... (配信予約までの処理は前のサンプルを参照) ...
$deliveryId = 1; // 実際の配信IDに置き換えてください
$environmentId = getenv("ENV_ID");
$apiUrl = "https://krs.bz/$environmentId/api/v1/get_delivery_status";
$apiToken = getenv("API_TOKEN");
$isFinish = false;
$currentPhase = -1;
while (!$isFinish) {
$params = ['delivery_id' => $deliveryId];
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiToken,
'Content-Type: application/json',
]);
$response_body = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code !== 200) {
echo 'APIエラー: ', $response_body, PHP_EOL;
break;
}
$response = json_decode($response_body);
// レスポンスは配列形式: [phase, desc]
$newPhase = $response[0];
if ($currentPhase !== $newPhase) {
$currentPhase = $newPhase;
switch ($currentPhase) {
case 0:
echo '配信予約中です', PHP_EOL;
break;
case 1:
echo '配信リスト作成中です', PHP_EOL;
break;
case 2:
echo '引き渡し中です (', $response[1], ')', PHP_EOL;
break;
case 3:
echo '配信処理が完了しました', PHP_EOL;
$isFinish = true;
break;
}
}
if (!$isFinish) {
sleep(10);
}
}