送受信に使用する JSON フォーマット

criAcApiClient_Call 関数や criAcApiClient_GetResponseBuffer 関数で使用する JSON 形式のコマンド文字列について説明します。

送信に使用する JSON フォーマット

送信に使用する JSON フォーマットは、最初の階層が "request" をキーとしたオブジェクトとなります。
"request" オブジェクトには、以下のようにバリューを指定します。

キー バリュー 補足説明
"version""1.0.0" 現状 "1.0.0" で固定
"module""project", "preview", "build", "debug", "error" のいずれか 関数に対応するモジュール名を指定
"function"関数の名前

関数に引数が必要な場合は、"arguments" をキーとしたオブジェクトを作り、そのオブジェクトにキーと値を指定します。
引数の値は、全て文字列形式で指定します。

例えば、create_aisac_graph 関数を JSON 形式のコマンド文字列で記述すると次のようになります。

{
"request": {
"version": "1.0.0",
"module": "project",
"function": "create_aisac_graph",
"arguments": {
"aisac": "f7ff7a55-03c4-43d0-bc4d-d6723873b7d1",
"graph_type": "Volume"
}
}
}

ここでは見やすくするためにインデントを行って表示していますが、実際に送信する際はインデントは不要です。
つまり、下記の文字列を送信することと同じになります。

{"request":{"version":"1.0.0","module":"project","function":"create_aisac_graph","arguments":{"aisac":"f7ff7a55-03c4-43d0-bc4d-d6723873b7d1","graph_type":"Volume"}}}


受信に使用するJSONフォーマット

受信に使用する JSON フォーマットは、最初の階層が "response" をキーとしたオブジェクトとなります。
"response" オブジェクトには、以下のようにバリューが格納されています。

キー バリュー 補足説明
"version""1.0.0" 現状 "1.0.0" で固定
"module""project", "preview", "build", "debug", "error" のいずれか 関数に対応するモジュール名
"function"関数の名前
"status""success" または "error"
"message"エラー文 無い場合もある
"data"関数の戻り値 無い場合もある

"message" キーのバリューは "status" キーのバリューが "error" の場合に含まれます。
"data" キーのバリューは、関数に戻り値がある場合に含まれます。

例えば、create_aisac_graph 関数の実行結果を criAcApiClient_GetResponseBuffer 関数で受信して得られる文字列は、以下のようなJSONフォーマットになっています。

{
"response": {
"version": "1.0.0",
"module": "project",
"function": "create_aisac_graph",
"status": "success",
"message": "",
"data": "4e6e17fe-f763-45d7-b72d-eafae4af6d10"
}
}

ここでは見やすくするためにインデントを行って表示していますが、実際に受信する文字列は、インデントが行われていません。
この例の場合は、実際には下記のような文字列が渡されます。

{"response":{"version":"1.0.0","module":"project","function":"create_aisac_graph","status":"success","message":"","data":"4e6e17fe-f763-45d7-b72d-eafae4af6d10"}}


JSONデータの文字エンコーディング

CRI Atom Craft ロボットを通して CRI Atom Craft が受け取った JSONデータ は、「**UTF-8**」 として処理しています。
別のプログラミング言語から JSONデータ を送受信する場合は、 UTF-8 でエンコードしたテキストを使用する必要があります。