ver.1サポートサイト


カスタムプログラムの実行(PHP)

最終更新日:2023年03月08日

カスタムプログラムを実行するサンプルプログラムです。

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

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

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

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

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

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

<?php
// サービス用のURL (ロケータから取得できる)
$api_url = "https://xxxxx.smp.ne.jp/api/service";
$api_token = "00000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$api_secret = "000000000000000000000000000000000abcdef";

// -----------------------------------------------------------------------------
// カスタムプログラムを実行
// -----------------------------------------------------------------------------

// API用のHTTPヘッダ
$api_header = "";
$api_header .= "X-SPIRAL-API: custom_program/run/request\r\n";
$api_header .= "Content-Type: application/json; charset=UTF-8\r\n";

// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $api_token;
$parameters["passkey"] = time();

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

// 実行するカスタムプログラムタイトル
$parameters["title"] = "api_program";

// カスタムプログラムに渡す引数
$parameters["args"] = array("arg1", "arg2", "arg3");
$json = json_encode($parameters);

// POSTで送信します。
$stream = stream_context_create(
    array('http' => array(
        'method' => 'POST',
        'protocol_version' => '1.0',
        'header' => $api_header,
        'content' => $json
    ))
);

// レスポンスデータ読み込み
$response = file_get_contents($api_url, false, $stream);

// 画面に表示
print_r(json_decode($response, true));
?>

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

<?php

//==========================================================
// カスタムプログラムを実行
//==========================================================

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

// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("title" , "xxxxx");//カスタムプログラムのタイトル

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