JobAutoのROBOWEBでスケジュールをAPIから即時実行する方法

★ページの説明・概要

JobAutoのROBOWEBに登録したスケジュールを、 APIから即時実行する方法について説明します。

ROBOWEBの画面を操作しなくても、 外部プログラムやバッチファイルなどからHTTP POSTでAPIを呼び出すことで、 指定したプロジェクトのスケジュールを実行できます。

APIでは、ROBOWEBのユーザー情報、プロジェクト名、スケジュール名を JSON形式で送信します。

APIからロボットへ引数(パラメータ)を渡して実行することもできます。

APIを実行する前に確認すること

APIを実行する前に、ロボサーバが起動していることを確認してください。

ブラウザからROBOWEBを正常に表示できれば、 ロボサーバが起動していることを確認できます。

APIのURL

スケジュール即時実行APIのURLは次のとおりです。

http://localhost:8080/api/run_schedule

ロボサーバとは別のPCからAPIを実行する場合は、 「localhost」の部分をロボサーバが起動しているPCのIPアドレスに変更してください。

たとえばロボサーバPCのIPアドレスが「192.168.100.1」の場合は、 次のURLになります。

http://192.168.100.1:8080/api/run_schedule

APIのリクエストに設定する項目

APIはPOSTで実行し、JSON形式で次の情報を送信します。

  • username: ROBOWEBへログインするときに使用するユーザーID
  • password: ROBOWEBユーザーのパスワード
  • project_name: 実行するスケジュールが登録されているプロジェクト名
  • schedule_name: APIから即時実行するスケジュール名
  • parameters: ロボットへ引数を渡して実行する場合に設定します。

引数を使用しない場合のJSONは、次のようになります。

{
  "username": "ユーザーID",
  "password": "パスワード",
  "project_name": "テスト",
  "schedule_name": "サンプルスケ"
}

PythonからAPIを実行する

PythonからAPIを実行する場合の例です。

import json
import requests

url = "http://localhost:8080/api/run_schedule"

data = {
"username": "ユーザーID",
"password": "パスワード",
"project_name": "テスト",
"schedule_name": "サンプルスケ"
}

headers = {
"content-type": "application/json"
}

res = requests.post(
url=url,
headers=headers,
json=data
)

js = json.loads(res.text)

print(js["status"], js["message"])

APIのレスポンスでは、 「status」と「message」を確認します。

curl・バッチファイルからAPIを実行する

Windowsのコマンドからcurlを使ってAPIを実行することもできます。

たとえば次のようなコマンドをバッチファイルへ保存して実行できます。

curl -X POST http://localhost:8080/api/run_schedule ^
  -H "Content-Type: application/json" ^
  -d "{\"username\":\"ユーザーID\",\"password\":\"パスワード\",\"project_name\":\"サンプル\",\"schedule_name\":\"API\"}"

APIから引数を渡して実行する

APIリクエストの「parameters」に値を設定することで、ロボットへ引数を渡してスケジュールを実行できます。

たとえば、次のようなJSONをbody.jsonとして保存します。

{
  "username": "ユーザーID",
  "password": "パスワード",
  "project_name": "サンプル",
  "schedule_name": "テスト",
  "parameters": "引数1=こんにちは\n引数2=世界"
}

body.jsonを使用してcurlから実行する場合は、次のようにします。

cd C:\temp

curl -X POST http://localhost:8080/api/run_schedule ^
  -H "Content-Type: application/json" ^
  -d "@body.json"

引数付きAPIを使用するときの注意点

引数付きAPIを使用できるのは、 実行するロボットが1つだけ登録されているスケジュールです。

複数のロボットが登録されているスケジュールへ、 APIから引数を渡して実行することはできません。

また、引数を使用するロボットをAPIから実行する場合は、 必ずAPIリクエストの「parameters」に引数を設定してください。

APIからスケジュールを実行した場合、 ロボットに設定されている引数は読み取られません。

APIの実行結果を確認する

APIを実行したあとは、 レスポンスJSONの「status」と「message」を確認してください。

  • success: APIによるスケジュール実行要求が成功した場合
  • error: スケジュールを実行できなかった場合

「error」が返った場合は、 「message」に返された内容を確認してください。

対象のスケジュールがすでに実行中の場合も、 APIから再度実行することはできず、エラーが返ります。

APIからスケジュールを実行できない場合

APIからスケジュールを実行できない場合は、 次の順番で確認してください。

  1. ロボサーバが起動し、 ブラウザからROBOWEBを表示できるか確認します。
  2. APIの送信先が 「/api/run_schedule」になっているか確認します。
  3. usernameとpasswordが正しいか確認します。
  4. project_nameに正しいプロジェクト名を設定しているか確認します。
  5. schedule_nameに正しいスケジュール名を設定しているか確認します。
  6. 対象のスケジュールがすでに実行中ではないか確認します。
  7. 引数を使用する場合は、 parametersが正しく設定されているか確認します。
  8. 引数付きAPIの場合は、 スケジュールに登録されているロボットが1つだけか確認します。

APIを利用するときの注意点

APIリクエストには、 ROBOWEBのユーザー情報とパスワードを含みます。

APIを利用する場合は、 信頼できるネットワーク環境からアクセスしてください。

API実行後のロボットの処理結果を確認する

APIからスケジュールを実行したあとは、 ROBOWEBでスケジュールのステータスを確認してください。

ロボットの処理結果やエラーの詳細については、 ROBOWEBの実行ログから確認できます。

関連するAPI・スケジュール・ROBOWEB操作

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。