すべてのプロダクト
Search
ドキュメントセンター

Chat App Message Service:関数の呼び出し

最終更新日:Oct 09, 2026

このトピックでは、[Call a Function] コンポーネントの設定方法について説明します。このコンポーネントを使用すると、フロー内から Alibaba Cloud Function Compute のカスタム関数を呼び出すことができます。これを使用して、データ処理、リモートサービス呼び出し、メッセージ配信、データストレージなどのカスタムビジネスロジックを実装できます。

コンポーネント情報

アイコン

名前

[関数の呼び出し] ダイアログボックスで、[関数入力] タブを選択し、コードエディターに JSON 形式の入力パラメーター (例: {"key": "value"}) を入力してから、[関数の呼び出し] をクリックします。

関数の呼び出し

手順の概要

関数の呼び出しコンポーネントを使用するには、まず Function Compute サービスを有効化し、次に関数を作成する必要があります。

  1. 関数の作成と設定:Function Compute で関数を作成し、設定します。

  2. 関数の設計:Function Compute で関数を設計します。

  3. コンポーネントの設定:フローで関数の呼び出しコンポーネントを設定して、Function Compute のカスタム関数を呼び出します。

前提条件

Function Compute サービスが有効化されています。

1. 関数の作成と設定

  1. Function Compute コンソールにログインします。ページの上部でリージョンを選択します。フローと同じリージョン (例: シンガポール) を選択することを推奨します。左側のナビゲーションペインで、関数管理 > 関数リスト を選択し、[関数] ページに移動します。

  2. 関数リスト ページで、関数を作成 > Web 関数 をクリックします。

    1. 主な設定: コード セクションの [ランタイム] で、適切なランタイムタイプを選択します。このトピックでは、例として 組み込み実行時 > Python > Python 3.10 を使用します。

    2. 必要に応じて他のパラメーターを設定します。

2. 関数の設計

提供されている関数テンプレートを使用すると、ビジネスロジックに集中し、迅速に関数をデプロイできます。

  1. 関数の詳細 ページで コード タブをクリックし、index.py ファイルのデフォルトコンテンツを次のテンプレートに置き換えます。

    説明

    このコードは、フロー呼び出しロジックと互換性のある WSGI (Web Server Gateway Interface) ハンドラーです。カスタムビジネスロジックは含まれていません。このファイル内の関数やコンテンツは変更しないでください。

    import json
    from my import *
    # Do not modify this entire file.
    # to handle wsgi request
    # about wsgi: https://wsgi.readthedocs.io/en/latest/learn.html
    def handler(environ, start_response):
        # get request_body
        try:
            request_body_size = int(environ.get('CONTENT_LENGTH', 0))
        except ValueError:
            request_body_size = 0
        request_body = environ['wsgi.input'].read(request_body_size)
        print(request_body)
        # get path info
        path_info = environ['PATH_INFO']
        print(path_info)
        # load http trigger request to json
        # as flow node input args
        body = json.loads(request_body.decode('utf-8'))
        # execute custom node process
        if path_info == '/handle_exec':
            output = handle_exec(body['variables'])
        elif path_info == '/handle_awake':
            output = handle_awake(
                body['asyncId'],
                body['async_event_data'],
                body['variables']
            )
        else:
            raise Exception('Invalid path ' + path_info)
        status = '200 OK'
        response_headers = [('Content-type', 'text/plain')]
        start_response(status, response_headers)
        return [json.dumps(output).encode('utf-8')]
    
  2. my.py という名前の新しいスクリプトファイルを作成し、次のコードを my.py ファイルにコピーします。

説明

次のテンプレートは、random_number_length 入力変数に基づいて指定された長さの乱数を生成します。次に、数値の偶奇性に基づいてフローを even または odd ブランチに誘導し、random と type の 2 つの変数をフローに出力します。

import random
# implement: py spi handle_exec
def handle_exec(variables) -> dict:
    # transform fun request
    random_number_length = variables['random_number_length']
    random_number = generate_random_by_length(random_number_length)
    print("random generated as " + str(random_number))
    if (random_number % 2) == 0:
        number_type = "even"
    else:
        number_type = "odd"
    result = {
        'success': True,
        'message': 'OK',
        'await': False,
        'outputVariables': {
            'random': random_number,
            'type': number_type
        },
        'toBranchCode': number_type
    }
    return result
# implement: py spi handle_awake
def handle_awake(async_id, async_event_data, variables) -> dict:
    return {}
def generate_random_by_length(random_number_length) -> int:
    length = int(random_number_length)
    start = 10 ** (length - 1)
    stop = 10 ** length
    print("from " + str(start) + "(inclusive) to " + str(stop) + "(exclusive)")
    return random.randrange(start, stop)

カスタムロジックに関係なく、my.py ファイルには次の 2 つの関数を含める必要があります。

説明

これらの 2 つの関数は、それぞれフローの呼び出しとイベント処理を扱います。Agentic Journey で既に関数の呼び出しコンポーネントのイベント処理を設定している場合は、関数にイベント処理ロジックを実装する必要はありません。

  • def handle_exec(variables) -> dict

  • def handle_awake(async_id, async_event_data, variables) -> dict

両方の関数の戻り値の構造は、カスタムロジックに関係なく固定されています。

  • success:関数の呼び出しが成功したかどうかを示します。false に設定すると、フローはエラーで停止します。

  • message:追加情報を提供するためのカスタムメッセージです。

  • await:フローが後続のイベント処理を待機する必要があるかどうかを示します。false に設定すると、フローは返された outputVariables と toBranchCode を使用して直ちに進行します。

  • outputVariables:フローに出力変数として渡されるキーと値のペアの辞書です。後続のコンポーネントでこれらの変数を参照できます。この辞書は、await が false の場合にのみ使用されます。

  • toBranchCode:マルチブランチ設定に基づいて、フローが次にどのブランチをたどるかを決定するコードです。このコードは、await が false の場合にのみ使用されます。

result = {
    'success': True,
    'message': 'OK',
    'await': False,
    'outputVariables': {
        'myVarExample1': 'a',
        'myVarExample2': 'b'
    },
    'toBranchCode': 'example'
}
  1. ファイルを変更したら、デプロイメントコード をクリックします。

3. コンポーネントの設定

次の手順に従って、フローで関数の呼び出しコンポーネントを設定します。

  1. 前提条件

    このコンポーネントを設定するには、既存のジャーニーを使用するか、新しいジャーニーを作成して、ジャーニーキャンバスにアクセスします。

    • 既存のジャーニーのキャンバスに移動

      Agentic Journey のジャーニーリストページで、ジャーニーの右側にある [Edit] をクリックして、キャンバス編集ページに移動します。

    • 新しいジャーニーを作成してキャンバスを開きます。 詳細については、「Agentic Journey の使用」をご参照ください。

  2. キャンバスで [Call a Function] コンポーネントアイコンをクリックすると、右側に設定ペインが表示されます。

    Agentic Journey で、[Call a Function] (FunctionComputeNode) ノードを選択します。右側に設定パネルが開きます。利用可能な変数には、incomingMessage、wabaId、wabaPhoneNumber、customerPhoneNumber、customerName があります。[HTTP トリガー設定] セクションで、[URL] と [Region] (必須) を入力し、[Timeout (seconds)] を設定します。[Runtime Settings] セクションでは、Webhook または API を使用してノードをトリガーし、必要に応じて非同期トリガースイッチを有効にすることができます。設定が完了したら、[Save] をクリックします。

  3. コンポーネントのパラメーターを設定します。詳細については、「パラメーター」をご参照ください。

  4. 設定が完了したら、保存 をクリックします。 表示されたダイアログボックスで、保存 をクリックします。

パラメーター

セクション

パラメーター

説明

ランタイム設定

非同期ウェイクアップ

有効にすると、コンポーネントは非同期で実行され、フローを一時停止し、後で「ウェイクアップ」して実行を再開できます。

非同期待機タイムアウト

非同期待機のタイムアウト期間 (秒単位) です。

HTTP トリガー設定

URL

Function Compute コンソールに移動して URL を設定します。左側のナビゲーションペインで、関数管理 > 関数リスト を選択します。関数を見つけてその名前をクリックし、関数の詳細 ページに移動します。トリガー タブをクリックし、インターネットエンドポイント アドレスをコピーします。

説明

関数の URL を入力した後、関数を呼び出す権限を付与してください。 をクリックして、1 回限りの承認を完了します。

リージョン

関数がデプロイされているリージョンであり、関数の ARN の 3 番目のセグメントに対応します。

Function Compute コンソールに移動します。左側のナビゲーションペインで、関数管理 > 関数リスト を選択します。関数を見つけて、その 関数の詳細 ページに移動します。設定 タブをクリックし、ARN をコピーする をクリックします。

説明

たとえば、コピーされた ARN が acs:fc:ap-southeast-1:112xxxxxx4926620:functions/test1 の場合、

リージョンは ap-southeast-1 です。

タイムアウト

HTTP リクエストのタイムアウト (秒単位) です。

パラメーター設定

-

必要に応じて、関数の入力パラメーターを設定します。パラメーター名は、関数が受け付けるパラメーターと一致する必要があります。値は定数またはフロー変数にすることができます。

マルチブランチ設定

-

必要に応じて、関数の出力用に複数のブランチを設定します。ブランチコードは、関数によって返される toBranchCode の値と一致する必要があります。関数がフローで定義されていないブランチコードを返した場合、フローはデフォルトで [Else] ブランチをたどります。

レスポンス設定

-

必要に応じて、関数の出力をフロー変数にマッピングします。変数名は、関数によって返される outputVariables 辞書のキーと一致する必要があります。