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 |
| 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:
Buat dan konfigurasi fungsi: Buat dan konfigurasikan fungsi Anda di Function Compute.
Rancang fungsi: Rancang logika fungsi Anda di Function Compute.
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.
Buka Konsol Function Compute. Di panel navigasi sebelah kiri, klik . Di bagian atas halaman, pilih wilayah. Disarankan untuk memilih wilayah yang sama dengan lokasi flow Anda.

Pada halaman Functions, klik .
Konfigurasi utama: Pada bagian Code, untuk Runtime, pilih runtime yang sesuai. Contoh ini menggunakan fungsi dengan runtime .
Judul Tab 1
Isi Tab 1
Judul Tab 2
Isi Tab 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.
Pada tab Code halaman Function Details, ganti isi file
index.pydefault dengan konten templat berikut.CatatanKode 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.

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')]Buat file skrip baru bernama
my.pydan salin kode berikut ke dalam filemy.py.
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.
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) -> dictdef 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. Jikafalse, flow dilanjutkan dengan menggunakanoutputVariablesdantoBranchCodeyang dikembalikan.outputVariables: Kamus berisi variabel dan nilainya yang dikeluarkan ke flow. Variabel ini dapat dirujuk pada langkah selanjutnya. Hanya digunakan ketika
awaitbernilaifalse.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
awaitdiatur keFalse.
result = {
'success': True,
'message': 'OK',
'await': False,
'outputVariables': {
'myVarExample1': 'a',
'myVarExample2': 'b'
},
'toBranchCode': 'example'
}
Setelah mengubah file, klik Deploy.

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.
Pada kanvas, klik ikon komponen Call a Function untuk membuka panel konfigurasinya di sebelah kanan.

Konfigurasikan parameter komponen sesuai kebutuhan. Untuk deskripsi detail, lihat Parameter.
Klik Save di pojok kanan atas. Pada pesan yang muncul, klik Save.

Parameter
Bagian | Parameter | Deskripsi | Contoh |
Execution Settings | Asynchronous Awakening | Mengaktifkan pemanggilan asinkron untuk pemicuan dan awakening. |
|
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 . 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.
|
|
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 . Temukan dan klik fungsi target untuk membuka halaman Function Details-nya. Pada tab Configuration, klik Copy ARN. Catatan Contohnya, ARN sampel adalah: Maka Region-nya adalah: |
| |
timeout | Batas waktu permintaan kustom, dalam detik. |
| |
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. |
|
Multi-branching Settings | - | Konfigurasikan beberapa cabang jika diperlukan. Kode cabang yang Anda definisikan harus sesuai dengan nilai |
|
Response Settings | - | Petakan output fungsi ke variabel flow jika diperlukan. Nama variabel yang Anda definisikan harus sesuai dengan kunci dalam kamus |
|







