All Products
Search
Document Center

Chat App Message Service:Panggil Fungsi

Last Updated:Mar 07, 2026

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

Informasi komponen

Ikon komponen

Nama komponen

调用函数@1x (1)

Panggil Fungsi

Ikhtisar

Untuk menggunakan komponen Panggil Fungsi, aktifkan terlebih dahulu layanan Alibaba Cloud Function Compute, lalu buat dan rancang fungsi di Konsol Function Compute. Prosesnya terdiri dari tiga langkah utama:

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

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

  3. Konfigurasi komponen: Konfigurasi komponen Panggil Fungsi dalam alur Anda untuk memanggil fungsi kustom 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, pilih Function Management > Functions. Di bagian atas halaman, pilih wilayah yang sama dengan alur Anda.image

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

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

      image

    2. Konfigurasikan parameter lain sesuai kebutuhan.

2. Rancang fungsi

Menggunakan templat fungsi di editor alur memungkinkan Anda fokus pada implementasi logika bisnis kustom dan cepat men-deploy fungsi alur sederhana yang dapat digunakan.

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

    Catatan

    Konten ini merupakan penanganan Web Server Gateway Interface (WSGI) yang kompatibel dengan logika pemanggilan alur. Konten ini tidak berisi logika bisnis kustom Anda. Jangan ubah fungsi atau isinya 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 bernama my.py. Salin kode berikut ke dalam file my.py.

Catatan

Templat berikut mengimplementasikan fitur yang menghasilkan bilangan acak dengan panjang tertentu berdasarkan variabel alur random_number_length. Lalu mengembalikan kode cabang (even atau odd) berdasarkan paritas bilangan tersebut dan mengeluarkan dua variabel (random dan type) ke alur.

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 digunakan untuk pemanggilan alur dan penanganan event. Jika Anda telah mengonfigurasi penanganan event untuk komponen Function Compute di Chat Flow, Anda tidak perlu menangani event lagi di fungsi.

  • def handle_exec(variables) -> dict

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

Terlepas dari logika kustom Anda, struktur pengembalian kedua fungsi bersifat tetap.

  • success: Menunjukkan apakah pemanggilan fungsi berhasil. Jika gagal, alur akan melemparkan error dan berhenti.

  • message: Pesan kustom.

  • await: Menunjukkan apakah perlu menunggu penanganan event selanjutnya. Ini berlaku jika Anda telah mengonfigurasi penanganan event untuk komponen Function Compute dalam alur. Dalam kebanyakan kasus, penanganan event tidak diperlukan. Jika diatur ke False, alur akan menggunakan variabel output dan kode cabang berikut untuk melanjutkan.

  • outputVariables: Nama dan nilai variabel yang akan dikirim ke alur. Anda dapat mereferensikan variabel ini di langkah-langkah selanjutnya dalam alur. Variabel ini hanya diadopsi oleh alur ketika await bernilai False.

  • toBranchCode: Kode cabang yang dikirim ke alur. Ini berlaku jika Anda telah mengonfigurasi beberapa cabang untuk komponen Function Compute. Alur menentukan langkah berikutnya berdasarkan kode cabang yang dikembalikan dan konfigurasi alur Anda di editor alur. Kode ini hanya diadopsi oleh alur ketika await bernilai 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 Panggil Fungsi dalam alur Anda agar dapat memanggil fungsi kustom yang telah Anda buat di Function Compute dan menjalankan logika bisnis Anda.

  1. Prasyarat

    Buka halaman kanvas alur yang sudah ada atau buat alur baru.

    • Buka halaman kanvas alur yang sudah ada.

      Di Chat Flow > Flow Management, klik Flow Name dari alur yang ingin Anda edit untuk membuka halaman orkestrasi alur.

      image

    • Buat alur baru untuk membuka halaman kanvas. Untuk informasi lebih lanjut, lihat Buat alur.

  2. Di kanvas, klik ikon komponen Panggil Fungsi untuk melihat panel konfigurasinya di sebelah kanan.

    image

  3. Konfigurasikan parameter komponen sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Detail parameter.

  4. Setelah dikonfigurasi, klik Save. Di kotak dialog yang muncul, klik Save.

    image

Detail parameter

Item konfigurasi induk

Item Konfigurasi Anak

Deskripsi

Contoh

Execution Settings

Asynchronous Awakening

Jika diaktifkan, mendukung pemanggilan asinkron untuk pemicuan dan pembangkitan.

image

Asynchronous Wait Timeout

Tetapkan periode timeout untuk penantian asinkron, dalam detik.

HTTP Trigger Settings

URL

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

Catatan

Pertama kali menggunakannya, klik Authorize ChatApp to Invoke Your Function.

image

image

Region

Wilayah: Segmen ketiga dari ARN dalam konfigurasi fungsi.

Di Konsol Function Compute, di bilah navigasi kiri, klik Function Management > Functions List. Temukan fungsi target dan buka halaman Function Details-nya. Lalu klik Configuration, dan di bagian Configuration, klik Copy ARN untuk mengambil ARN.

Catatan

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

maka Wilayahnya adalah ap-southeast-1.

image

Timeout

Tetapkan periode timeout kustom.

image

Parameter Settings

-

Jika diperlukan, definisikan parameter input untuk fungsi. Nama parameter harus sesuai dengan yang ada di kode fungsi Anda. Nilainya dapat berupa konstanta atau variabel alur.

image

Multi-branching Settings

-

Jika diperlukan, konfigurasikan 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 melanjutkan ke cabang Else.

image

Response Settings

-

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

image