Custom Command

Custom Command

ユーザー定義コマンドは、Actcast API を経由して、デバイス上の Act に対して任意のコマンドを発行し、実行結果を取得できる機能です。 Actcast API へのリクエストは、デバイス上の Actcast Agent を経由してアプリケーションの handler に届きます。

ActcastOS 3.80.0 以降、または 4.32.0 以降で利用できます。

アプリケーションの開発方法

ユーザー定義コマンドに対応した Actcast アプリケーションを開発するには、 actfw-core のバージョン 2.17.0 以降の CommandServer を使用する必要があります。

アプリケーション内に、ユーザー定義コマンドを処理する handler を用意して、CommandServer のコンストラクタに指定してください。 handler は、リクエストの文字列を解釈して任意の処理を実行後、結果の文字列をレスポンスとして返します。

リクエストの payload、およびレスポンスは 64KiB 以下としてください。

handler は、同一のリクエストで複数回呼び出されることがあります。 複数回の実行が許容できない場合には、リクエストに含まれる UUID を handler で保存して、実行が必要か判定してください。

handler は、他の handler 呼び出しの終了を待たずに、並列で同時に呼び出されることがあります。 handler 内で同時に実行できない処理がある場合には、ロックなどを用いて、他に同時に実行されていないことを確認してください。

以下は、id と payload を含む文字列を返す handler の例です。

import actfw_core
from actfw_core.command_server import CustomCommandRequest

def custom_command_handler(request: CustomCommandRequest) -> str:
    custom_command_id = request['id']
    payload = request['payload']
    message = f"Payload received: {payload} (id: {custom_command_id})"
    return message

def main():
    app = actfw_core.application.Application()
    command_server = actfw_core.CommandServer(custom_command_handler=custom_command_handler)
    app.register_task(command_server)
    app.run()

if __name__ == "__main__":
    main()

注意事項

ユーザー定義コマンドに対応していない (古いバージョンの actfw-core を使用している) Act を実行しているデバイスには、ユーザー定義コマンドのリクエストを送信しないでください。 リクエストを送信した場合、CommandServer が終了してしまい、Act を再起動するまでの間は TakePhoto 機能に応答しなくなる可能性があります。 これを回避する必要がある場合は、ユーザー定義コマンドに対応したバージョンの actfw-core を使用して、アプリケーションの更新を行ってください。

最終更新日