All Products
Search
Document Center

Chat App Message Service:Call a function

Last Updated:Oct 09, 2026

Topik ini menjelaskan cara mengonfigurasi komponen Call a Function. Komponen ini memungkinkan Anda memanggil fungsi kustom di Alibaba Cloud Function Compute dari dalam suatu alur untuk menerapkan logika bisnis kustom, seperti pemrosesan data, panggilan layanan remote, pengiriman pesan, dan penyimpanan data.

Informasi komponen

Ikon

Nama

Pada kotak dialog Call a Function, pilih tab Function Input, masukkan parameter input dalam format JSON di editor kode (misalnya, {"key": "value"}), lalu klik Call a Function.

Call a Function

Ikhtisar prosedur

Untuk menggunakan komponen Call a Function, Anda harus terlebih dahulu mengaktifkan layanan Function Compute, lalu membuat fungsi.

  1. Buat dan konfigurasi fungsi: Buat dan konfigurasi fungsi di Function Compute.

  2. Rancang fungsi: Rancang fungsi di Function Compute.

  3. Konfigurasi komponen: Konfigurasi komponen Call a Function dalam alur Anda untuk memanggil fungsi kustom dari Function Compute.

Prasyarat

Layanan Function Compute telah diaktifkan.

1. Buat dan konfigurasi fungsi

  1. Masuk ke Konsol Function Compute. Di bagian atas halaman, pilih Wilayah. Kami menyarankan Anda memilih Wilayah yang sama dengan alur Anda, misalnya, Singapore. Di panel navigasi sebelah kiri, pilih Function Management > Functions untuk membuka halaman Functions.

  2. Pada halaman Functions, klik Create Function > Web Function.

    1. Konfigurasi utama: Pada bagian Code, untuk Runtime, pilih jenis runtime yang sesuai. Topik ini menggunakan contoh Built-in Runtimes > Python > Python 3.10.

    2. Konfigurasi parameter lain sesuai kebutuhan.

2. Rancang fungsi

Menggunakan templat fungsi yang disediakan membantu Anda fokus pada logika bisnis dan segera men-deploy fungsi.

  1. Pada halaman Function Details, klik tab Code dan ganti konten default file index.py dengan templat berikut.

    Catatan

    Kode ini merupakan penanganan WSGI (Web Server Gateway Interface) yang kompatibel dengan logika pemanggilan alur. Kode ini tidak berisi logika bisnis kustom apa pun. Jangan mengubah fungsi atau konten dalam file ini.

    import json
    from my import *
    # DO NOT CHANGE THIS ENTIRE FILE!
    # 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 triggering request to json
        # as flow node input args
        body = json.loads(request_body.decode('utf-8'))
        # do 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. Buat file skrip baru bernama my.py dan salin kode berikut ke dalam file my.py.

Catatan

Templat berikut menghasilkan bilangan acak dengan panjang tertentu berdasarkan variabel input random_number_length. Kemudian, alur diarahkan ke cabang even atau odd berdasarkan paritas bilangan tersebut, serta mengeluarkan dua variabel ke alur: random dan type.

import random
# impl: py spi handle_exec
def handle_exec(variables) -> dict:
    # translate 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
# impl: 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)

Terlepas dari logika kustom Anda, file my.py harus berisi dua fungsi berikut.

Catatan

Kedua fungsi ini masing-masing menangani pemanggilan alur dan pemrosesan event. Jika Anda telah mengonfigurasi penanganan event untuk komponen Call a Function di Agentic Journey, Anda tidak perlu mengimplementasikan logika penanganan event dalam fungsi Anda.

  • def handle_exec(variables) -> dict

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

Struktur nilai kembalian kedua fungsi bersifat tetap, terlepas dari logika kustom Anda.

  • success: Menunjukkan apakah pemanggilan fungsi berhasil. Jika diatur ke false, alur berhenti dengan error.

  • message: Pesan kustom untuk memberikan informasi tambahan.

  • await: Menunjukkan apakah alur harus menunggu penanganan event selanjutnya. Jika diatur ke false, alur langsung dilanjutkan menggunakan outputVariables dan toBranchCode yang dikembalikan.

  • outputVariables: Kamus pasangan kunci-nilai yang diteruskan sebagai variabel output ke alur. Anda dapat mereferensikan variabel ini di komponen berikutnya. Kamus ini hanya digunakan ketika await bernilai false.

  • toBranchCode: Kode yang menentukan cabang mana yang akan diikuti alur selanjutnya, berdasarkan pengaturan multi-cabang Anda. Kode ini hanya digunakan ketika await bernilai false.

result = {
    'success': True,
    'message': 'OK',
    'await': False,
    'outputVariables': {
        'myVarExample1': 'a',
        'myVarExample2': 'b'
    },
    'toBranchCode': 'example'
}
  1. Setelah mengubah file, klik Deploy.

3. Konfigurasi komponen

Ikuti langkah-langkah berikut untuk mengonfigurasi komponen Call a Function dalam alur Anda.

  1. Prasyarat

    Untuk mengonfigurasi komponen ini, akses kanvas journey melalui journey yang sudah ada atau buat journey baru.

    • Buka kanvas journey yang sudah ada

      Pada halaman daftar journey di Agentic Journey, klik Edit di sebelah kanan journey untuk membuka halaman edit kanvas.

    • Buat journey baru untuk membuka kanvasnya. Untuk informasi lebih lanjut, lihat Use Agentic Journey.

  2. Pada kanvas, klik ikon komponen Call a Function untuk melihat panel konfigurasinya di sebelah kanan.

    Di Agentic Journey, pilih node Call a Function (FunctionComputeNode). Panel konfigurasi akan terbuka di sebelah kanan. Variabel yang tersedia mencakup incomingMessage, wabaId, wabaPhoneNumber, customerPhoneNumber, dan customerName. Pada bagian HTTP Trigger Settings, masukkan URL dan Region (wajib diisi), serta atur Timeout (seconds). Pada bagian Runtime Settings, Anda dapat memicu node menggunakan webhook atau API, serta aktifkan sakelar pemicu asinkron sesuai kebutuhan. Setelah menyelesaikan konfigurasi, klik Save.

  3. Konfigurasi parameter komponen. Untuk detailnya, lihat Configuration Details.

  4. Setelah selesai mengonfigurasi, klik Save. Pada kotak dialog yang muncul, klik Save.

Parameter

Bagian

Parameter

Deskripsi

Execution Settings

Asynchronous Awakening

Jika diaktifkan, komponen berjalan secara asinkron, memungkinkan alur berhenti sementara dan kemudian "dibangunkan" untuk melanjutkan eksekusi.

Asynchronous Wait Timeout

Periode timeout untuk penantian asinkron, dalam satuan detik.

HTTP Trigger Settings

URL

Untuk mengonfigurasi URL, buka Konsol Function Compute. Di panel navigasi sebelah kiri, pilih Function Management > Functions. Temukan fungsi Anda dan klik namanya untuk membuka halaman Function Details. Klik tab Trigger dan salin alamat Internet Endpoint.

Catatan

Setelah memasukkan URL fungsi, klik Authorize ChatApp to Invoke Your Function untuk menyelesaikan otorisasi satu kali.

Region

Wilayah tempat fungsi Anda dideploy, yang sesuai dengan segmen ketiga dari ARN fungsi Anda.

Untuk menemukan ARN, buka Konsol Function Compute. Di panel navigasi sebelah kiri, pilih Function Management > Functions. Temukan fungsi Anda dan buka halaman Function Details-nya. Klik tab Configuration, lalu klik Copy ARN.

Catatan

Contohnya, jika ARN yang disalin adalah acs:fc:ap-southeast-1:112xxxxxx4926620:functions/test1,

maka wilayahnya adalah ap-southeast-1.

Timeout

Timeout untuk permintaan HTTP, dalam satuan detik.

Parameter Settings

-

Jika diperlukan, konfigurasikan parameter input untuk fungsi. Nama parameter harus sesuai dengan parameter yang diharapkan diterima oleh fungsi Anda. Nilainya dapat berupa konstanta atau variabel alur.

Multi-branching Settings

-

Jika diperlukan, konfigurasikan beberapa cabang untuk output fungsi. Kode cabang harus sesuai dengan nilai toBranchCode yang dikembalikan oleh fungsi Anda. Jika fungsi mengembalikan kode cabang yang tidak didefinisikan dalam alur, alur akan mengikuti cabang Else secara default.

Response Settings

-

Jika diperlukan, petakan output fungsi ke variabel alur. Nama variabel harus sesuai dengan kunci dalam kamus outputVariables yang dikembalikan oleh fungsi Anda.