All Products
Search
Document Center

Chat App Message Service:Call a Function

Last Updated:Apr 09, 2026

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

Informasi komponen

Ikon

Nama

调用函数@1x (1)

Call a Function

Ikhtisar

Sebelum menggunakan komponen Call a Function, aktifkan layanan Function Compute dan buat serta rancang fungsi di Konsol Function Compute. Prosesnya mencakup tiga langkah utama:

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

  2. Rancang fungsi: Rancang logika fungsi Anda di Function Compute.

  3. Konfigurasi komponen: Konfigurasikan komponen Call a Function dalam flow Anda untuk memanggil fungsi kustom dan menjalankan logika bisnis Anda.

Prasyarat

Layanan Function Compute telah diaktifkan.

1. Buat dan konfigurasi fungsi

Ikuti langkah-langkah berikut untuk membuat dan mengonfigurasi fungsi.

  1. Buka Konsol Function Compute. Di panel navigasi sebelah kiri, klik Function Management > Functions. Di bagian atas halaman, pilih wilayah. Disarankan untuk memilih wilayah yang sama dengan lokasi flow Anda.image

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

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

      Judul Tab 1

      Isi Tab 1

      Judul Tab 2

      Isi Tab 2

      image

    2. Konfigurasikan parameter lain sesuai kebutuhan.

2. Rancang fungsi

Templat fungsi di Flow Editor membantu Anda fokus pada logika bisnis kustom dan cepat men-deploy fungsi sederhana yang dapat digunakan dalam flow Anda.

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

    Catatan

    Kode ini merupakan penanganan WSGI yang kompatibel dengan logika pemanggilan flow. Kode ini tidak berisi logika bisnis kustom. Jangan mengubah fungsi atau konten dalam file ini.

    image

    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 ini menghasilkan bilangan acak dengan panjang yang ditentukan oleh variabel flow random_number_length. Berdasarkan paritas bilangan tersebut, templat ini mengembalikan kode cabang flow yang sesuai (even atau odd) dan mengeluarkan dua variabel ke flow (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, dua fungsi berikut wajib ada dalam file my.py.

Catatan

Kedua fungsi ini digunakan masing-masing untuk pemanggilan flow dan penanganan event. Jika Anda telah mengonfigurasi penanganan event untuk komponen ini di Chat Flow, Anda tidak perlu mengimplementasikannya lagi dalam kode fungsi Anda.

  • def handle_exec(variables) -> dict

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

Struktur nilai kembali untuk kedua fungsi bersifat tetap.

  • success: Menentukan apakah pemanggilan fungsi berhasil. Jika gagal, flow akan melemparkan error dan menghentikan tugas.

  • message: Pesan informasi yang dapat dikustomisasi.

  • await: Menentukan apakah flow harus menunggu penanganan event berikutnya. Umumnya diatur ke false. Jika false, flow dilanjutkan dengan menggunakan outputVariables dan toBranchCode yang dikembalikan.

  • outputVariables: Kamus berisi variabel dan nilainya yang dikeluarkan ke flow. Variabel ini dapat dirujuk pada langkah selanjutnya. Hanya digunakan ketika await bernilai false.

  • toBranchCode: Kode cabang tujuan alur flow. Jika Anda mengonfigurasi beberapa cabang untuk komponen Function Compute dalam flow, flow menentukan langkah berikutnya berdasarkan kode cabang yang dikembalikan dan konfigurasi Anda di Flow Editor. Kode ini hanya diproses oleh flow ketika await diatur ke False.

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

image

3. Konfigurasi komponen

Ikuti langkah-langkah berikut untuk mengonfigurasi komponen Call a Function dalam flow Anda. Hal ini memungkinkan flow memanggil fungsi kustom yang telah Anda buat di Function Compute dan menjalankan logika bisnis Anda.

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

    image

  2. Konfigurasikan parameter komponen sesuai kebutuhan. Untuk deskripsi detail, lihat Parameter.

  3. Klik Save di pojok kanan atas. Pada pesan yang muncul, klik Save.

    image

Parameter

Bagian

Parameter

Deskripsi

Contoh

Execution Settings

Asynchronous Awakening

Mengaktifkan pemanggilan asinkron untuk pemicuan dan awakening.

image

asynchronous wait timeout

Batas waktu tunggu asinkron, dalam detik.

HTTP Trigger Settings

URL

URL fungsi. Untuk mendapatkan URL, buka Konsol Function Compute. Di panel navigasi sebelah kiri, klik Function Management > Functions. Temukan dan klik fungsi target untuk membuka halaman Function Details-nya. Pada tab Trigger, temukan Internet Endpoint.

Catatan

Pertama kali menggunakan komponen ini, Anda harus mengklik Authorize ChatApp to Invoke Your Function.

image

image

Region

Wilayah tempat fungsi dideploy. Ini adalah segmen ketiga dari ARN fungsi.

Untuk mendapatkan ARN, buka Konsol Function Compute. Di panel navigasi sebelah kiri, klik Function Management > Functions. Temukan dan klik fungsi target untuk membuka halaman Function Details-nya. Pada tab Configuration, klik Copy ARN.

Catatan

Contohnya, ARN sampel adalah: acs:fc:ap-southeast-1:112xxxxxx4926620:functions/test1.

Maka Region-nya adalah: ap-southeast-1.

image

timeout

Batas waktu permintaan kustom, dalam detik.

image

Parameter Settings

-

Konfigurasikan parameter input untuk fungsi. Nama parameter harus sesuai dengan parameter yang diharapkan oleh fungsi Anda. Nilainya dapat berupa konstanta atau variabel flow.

image

Multi-branching Settings

-

Konfigurasikan beberapa cabang jika diperlukan. Kode cabang yang Anda definisikan harus sesuai dengan nilai toBranchCode yang dikembalikan oleh fungsi Anda. Jika fungsi mengembalikan kode cabang yang tidak terdefinisi, flow akan mengikuti cabang Else.

image

Response Settings

-

Petakan output fungsi ke variabel flow jika diperlukan. Nama variabel yang Anda definisikan harus sesuai dengan kunci dalam kamus outputVariables yang dikembalikan oleh fungsi Anda.

image