ver.1サポートサイト


サンクス配信(PHP)

最終更新日:2024年07月17日

サンクスメールの配信設定をするサンプルプログラムです。

本サンプルプログラムは外部呼出し(スパイラル以外のサーバから動作させる場合)と内部呼出し(スパイラル内部で動作させる場合)と分けて記載をしています。

利用する用途によって使用するサンプルプログラムの使い分けを行ってください。

 

※サンクスメールをAPIで配信するには、あらかじめスパイラルの操作画面でサンクスメールの設定を行う必要があります。

 サンクスメールの設定手順は、サポートサイト「サンクス配信(サンクスメール)」をご覧ください。

※外部呼出しに利用するサンプルプログラムにはスパイラル内のWebコンポーネントで使用できない関数などが含まれる場合がありますのでご注意ください。

 使用できないPHPの関数について、PHP利用時の注意事項をご覧ください。

※内部呼出しを利用する場合はアカウント内APIの設定を「ON」に変更する必要があります。

外部呼出しを利用する場合

<?php
// [ 概要 ]
// スパイラルのAPIを使ったサンプルプログラムです。
// [ サンプルで行う事 ]
// - サンクスメールを送信する
// このファイルはUTF8で保存してください。
// [サンプルを動かすための準備]
// 0. PHPにcurlライブラリが組み込まれている必要があります。
// 参考:http://www.php.net/manual/ja/intro.curl.php
// 1. スパイラルの操作画面の「管理グループ」「API設定」で、トークンを発行します。
// 下記、$TOKEN, $SECRET へ設定します。
// 2. スパイラルの操作画面の「DBグループ」「通常DB」で、以下のようなDBを発行します。
// DBタイトル:api_sample
// フィールド:
// No1 フィールド名  :メールアドレス
// フィールドタイプ    :メールアドレス(大・小文字を無視)
// 差替えキーワード    :mail
// No2 フィールド名  :テキストエリア
// フィールドタイプ    :テキストエリア(256bytes)
// 差替えキーワード    :text
// 3. サンクス配信登録で使うため、「Webグループ」「フォーム」で、登録フォームを作成します。
// 実際にフォームは使いませんのでダミーの設定ということになります。
// 4. サンクス配信登録で使うため、「メールグループ」「リスト作成」で、
// 適当な設定でリストを追加します。
// 5. サンクス配信登録で使うため、「メールグループ」「封筒製作:直接入力」で、
// 封筒を追加します。どの封筒形式でもかまいません。
// 6. スパイラルの操作画面の「メールグループ」「サンクス配信登録」で、
// 上記で作成した登録フォームに対して配信設定を追加します。

// サービス用のURL (ロケータから取得できます)
$APIURL = "https://xxxxx.smp.ne.jp/api/service";

// スパイラルの操作画面で発行したトークンを設定します。
$TOKEN = "XXXXXXXXXX";
$SECRET = "YYYYYYYYYY";

// -----------------------------------------------------------------------------
// サンクスメール送信
// -----------------------------------------------------------------------------

// API用のHTTPヘッダ
$api_headers = array(
    "X-SPIRAL-API: deliver_thanks/send/request",
    "Content-Type: application/json; charset=UTF-8",
);

// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN;
$parameters["rule_id"] = "XXXXX"; //サンクスメールの配信ルールID
$parameters["id"] = "YYYYY"; //レコードのid
$parameters["passkey"] = time();

// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);

// 送信用のJSONデータを作成します。
$json = json_encode($parameters);
echo "===> deliver_thanks/send\n";

// curlライブラリを使って送信します。
$curl = curl_init($APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, $api_headers);
curl_exec($curl);

// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);

// 画面に表示
// 配列にしたい時は json_decode($response, true); とします。
print_r(json_decode($response, true));
?>

内部呼出しを利用する場合

<?php

//[ 概要 ]
//スパイラルのAPIを使ったサンプルプログラムです。
//[ サンプルで行う事 ]
//- サンクスメールを送信する
//このファイルはUTF8で保存してください。
//[サンプルを動かすための準備]
//1. スパイラルの操作画面の「DBグループ」「通常DB」で、以下のようなDBを発行します。
// DBタイトル:api_sample
// フィールド:
// No1 フィールド名  :メールアドレス
// フィールドタイプ    :メールアドレス(大・小文字を無視)
// 差替えキーワード    :mail
// No2 フィールド名  :テキストエリア
// フィールドタイプ    :テキストエリア(256bytes)
// 差替えキーワード    :text
//2. サンクス配信登録で使うため、「Webグループ」「フォーム」で、登録フォームを作成します。
// 実際にフォームは使いませんのでダミーの設定ということになります。
//3. サンクス配信登録で使うため、「メールグループ」「リスト作成」で、
// 適当な設定でリストを追加します。
//4. サンクス配信登録で使うため、「メールグループ」「封筒製作:直接入力」で、
// 封筒を追加します。どの封筒形式でもかまいません。
//5. スパイラルの操作画面の「メールグループ」「サンクス配信登録」で、
// 上記で作成した登録フォームに対して配信設定を追加します。

// -----------------------------------------------------------------------------
// サンクスメール送信
// -----------------------------------------------------------------------------

// APIコミュニケータをセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("rule_id", "xxxx"); //サンクスメールの配信ルールID
$request->put("id", "xxxx"); //レコードのid

// スパイラルAPIサーバへリクエストを送信
$response = $api_communicator->request("deliver_thanks", "send", $request);

// レスポンスの取得
if ($response->get("code") == 0) {
    echo "<p>deliver_thanks/send 正常終了。(code:" . $response->get("code") . ")</p>";
} else {
    echo "<p>deliver_thanks/send エラーが発生しました。(code:" . $response->get("code") . ")</p>";
}
print_r($response);
?>